Definição exata de Maxout

8

Eu tenho tentado descobrir o que exatamente significava a função de ativação "Maxout" em redes neurais. Há essa pergunta, este artigo e até mesmo no livro Deep Learning de Bengio et al. , exceto com apenas um pouco de informação e um grande TODO ao lado.

Vou usar a notação descrita aqui para maior clareza. Só não quero redigitá-lo e causar inchaço nas perguntas. Resumidamente, , em outras palavras, um neurônio tem um único viés , um único peso para cada entrada e, em seguida, soma as entradas vezes os pesos, adiciona o viés e aplica a função de ativação para obter o valor de saída (também conhecido como ativação).aji=σ(zji)=σ(kaki1wjki+bji)

Até agora eu sei que o Maxout é uma função de ativação que "gera o máximo de suas entradas". O que isso significa? Aqui estão algumas idéias que eu poderia interpretar a partir disso:

  1. aji=maxk(aki1) , também conhecido como max-pooling.
  2. aji=maxk(aki1wjki)+bji , simplesmente substituindo a soma que normalmente é feita por um valor máx.
  3. aji=maxk(aki1wjki+bjki) , onde cada neurônio agora tem um valor de polarização para cada entrada, em vez de um único valor de polarização aplicado depois de somar todas as entradas. Isso tornaria a retropropagação diferente, mas ainda possível.
  4. Cada zji é calculado como normal e cada neurônio tem um único viés e um peso para cada entrada. No entanto, semelhante ao SOFTmax ( aji=exp(zji)kexp(zki) ), isso leva o máximo de todos os z 's na sua camada actual . Formalmente, aji=maxkzki .

Algum destes está correto? Ou é algo diferente?

Phylliida
fonte

Respostas:

9

Nenhuma das acima; as redes maxout não seguem a arquitetura que você assumiu.

Desde o início da seção "descrição da maxout" no artigo que você vinculou , que definiu maxout:

Dada uma entrada ( pode ser , ou pode ser o estado de uma camada oculta), uma camada oculta maxout implementa a funçãoxRdxv

hi=maxj[1,k]zij

onde e e estão parâmetros aprendidos.zij=xTWij+bijWRd×m×kbRm×k

Portanto, cada unidade das unidades possui combinações afins diferentes da camada anterior e gera o máximo dessas funções afins. Imagine cada camada sendo conectada à camada anterior com conexões de cores diferentes e utilizando o máximo de cores.mkkk

Como alternativa, você pode pensar em uma unidade maxout como na verdade duas camadas: cada uma das unidades da camada anterior é conectada a cada uma das unidades com a função de ativação de identidade e, em seguida, uma única unidade conecta essas unidades lineares com uma ativação de pool máximo .kk

Isso significa que a unidade, vista como uma função de a , é o máximo por partes de funções afins. A Figura 1 do artigo fornece alguns exemplos de diferentes funções:RdR

insira a descrição da imagem aqui

Cada uma das linhas tracejadas representa um . Você pode representar qualquer função convexa dessa maneira, o que é bastante agradável.WTx+b

Dougal
fonte
Portanto, desde , isso significa que . Como se tira o máximo disso? É a magnitude dos vetores? zijRm×kzi1,zi2,...Rm
Phylliida
@DanielleEnsign A indexação é um pouco fora do padrão aqui, mas cada , , é . É um máximo escalar normal. WijRdxRdbijRzijR
Dougal 4/15
2
Ah, finalmente entendi agora, obrigado. Basicamente, cada neurônio é composto de muitos "subneurônios" que recebem a entrada desse neurônio, têm seus próprios pesos e desvios, e saem através da função de ativação de identidade. Então a saída para esse neurônio é o máximo de todas as saídas do sub-neurônio.
Phylliida 4/06/15
Seria correto dizer que você pode modelar isso usando k múltiplas conexões entre cada par de neurônios conectados (em vez de uma única conexão normalmente feita), calculando k ativações para cada par e selecionando a primeira como a vencedora? Ou às vezes é necessário usar vieses separados para cada sub-conexão, tornando assim necessário modelar cada conexão como se pertencesse a um sub-neurônio diferente?
SQLServerSteve
1
@SQLServerSteve Cada uma das conexões pode ter vieses diferentes (isso é necessário, por exemplo, para o "quadrático" na figura acima). Mas você ainda pode pensar sobre isso da maneira que descreveu, mas também precisa adicionar um viés para cada uma das conexões. Às vezes, as pessoas falam sobre uma "unidade de viés" imaginária que sempre gera 1; nesse caso, seu modelo funcionará bem, desde que a unidade de polarização também tenha várias conexões. k
Dougal 29/07