Eu li sobre o NCE (uma forma de amostragem de candidatos) dessas duas fontes:
Gravação de Tensorflow
Alguém pode me ajudar com o seguinte:
Uma explicação simples de como o NCE funciona (achei difícil analisar e entender o que foi dito acima, então seria ótimo algo intuitivo que leve à matemática apresentada)
Após o ponto 1 acima, uma descrição naturalmente intuitiva de como isso é diferente da Amostra Negativa. Percebo que há uma ligeira mudança na fórmula, mas não consegui entender a matemática. Eu tenho uma compreensão intuitiva da amostragem negativa no contexto de word2vec- escolhemos aleatoriamente algumas amostras do vocabulário Ve atualizamos apenas as que |V|são grandes e isso oferece uma aceleração. Corrija se estiver errado.
Quando usar qual e como isso é decidido? Seria ótimo se você pudesse incluir exemplos (possivelmente aplicativos fáceis de entender)
O NCE é melhor que a amostragem negativa? Melhor de que maneira?
pode ser meu post pode ajudar. nanjiang.quora.com/Noise-contrastive-Estimation e experimentos posteriores com theano podem ser encontrados no meu github.com/jiangnanHugo/language_modeling. Espero que meu entendimento esteja correto.
— jiangnan hugo
Retirado desta publicação: https://stats.stackexchange.com/a/245452/154812
Existem alguns problemas com o aprendizado dos vetores de palavras usando uma rede neural "padrão". Dessa maneira, os vetores de palavras são aprendidos enquanto a rede aprende a prever a próxima palavra, em uma janela de palavras (a entrada da rede).
Prever a próxima palavra é como prever a classe. Ou seja, essa rede é apenas um classificador multinomial "padrão" (multi-classe). E essa rede deve ter tantos neurônios de saída quanto as classes que existem. Quando as aulas são palavras reais, o número de neurônios é, bem, enorme.
Uma rede neural "padrão" geralmente é treinada com uma função de custo de entropia cruzada que requer que os valores dos neurônios de saída representem probabilidades - o que significa que as "pontuações" de saída calculadas pela rede para cada classe devem ser normalizadas, convertidas em probabilidades reais para cada classe. Este passo de normalização é alcançado por meio da função softmax. O Softmax é muito caro quando aplicado a uma enorme camada de saída.
A (a) solução
Para lidar com esse problema, ou seja, o caro cálculo do softmax, o Word2Vec usa uma técnica chamada estimativa contrastante ao ruído. Essa técnica foi introduzida por [A] (reformulada por [B]) e depois usada em [C], [D], [E] para aprender a incorporação de palavras a partir de texto em idioma natural não rotulado.
A idéia básica é converter um problema de classificação multinomial (como é o problema de prever a próxima palavra) em um problema de classificação binária. Ou seja, em vez de usar o softmax para estimar uma verdadeira distribuição de probabilidade da palavra de saída, uma regressão logística binária (classificação binária) é usada.
Para cada amostra de treinamento, o classificador aprimorado (otimizado) recebe um par verdadeiro (uma palavra central e outra palavra que aparece em seu contexto) e vários kk pares corrompidos aleatoriamente (que consistem na palavra central e em uma palavra escolhida aleatoriamente). vocabulário). Ao aprender a distinguir os pares verdadeiros dos pares corrompidos, o classificador finalmente aprenderá os vetores de palavras.
Isso é importante: em vez de prever a próxima palavra (a técnica de treinamento "padrão"), o classificador otimizado simplesmente prevê se um par de palavras é bom ou ruim.
O Word2Vec personaliza levemente o processo e chama de amostragem negativa. No Word2Vec, as palavras das amostras negativas (usadas para os pares corrompidos) são extraídas de uma distribuição especialmente projetada, o que favorece que palavras menos frequentes sejam extraídas com mais frequência.
[A] (2005) - Estimativa contrastante: treinando modelos log-lineares em dados não rotulados
[B] (2010) - Estimativa contrastante ao ruído: um novo princípio de estimativa para modelos estatísticos não normalizados
[C] (2008) - Uma arquitetura unificada para processamento de linguagem natural: redes neurais profundas com aprendizado multitarefa
[D] (2012) - Um algoritmo rápido e simples para o treinamento de modelos de linguagem probabilística neural .
[E] (2013) - Aprendendo a incorporação de palavras de forma eficiente com estimativa contrastante ao ruído .
— user154812
Honestamente, não há uma maneira intuitiva de entender por que a perda de NCE funcionará sem entender profundamente sua matemática. Para entender a matemática, você deve ler o artigo original.
(x,y)(x,y)yykkkk
Δsθ0(w,h)=sθ0(w,h)−logkPn(w)Δsθ0(w,h)=sθ0(w,h)−log⁡kPn(w)
Pn(w)Pn(w)
kknnn=kn=k
Os documentos originais da NCE ignoraram muito as derivações da prova, de modo que é realmente difícil entender a NCE. Para entender mais facilmente a matemática sobre a NCE, tenho um post sobre isso anotando a matemática dos documentos da NCE:
https://leimao.github.io/article/Noise-Contrastive-Estimation/ .
No segundo ano da faculdade ou acima, deve ser capaz de entendê-lo.
— Lei Mao
Basicamente, isso é selecionar uma amostra da distribuição verdadeira que consiste na classe verdadeira e em alguns outros rótulos de classe barulhentos. Depois, passe o softmax por cima.
Isso se baseia na amostragem de palavras da verdadeira distribuição e distribuição de ruído.
Aqui, a idéia básica é treinar o classificador de regressão logística que pode separar as amostras obtidas da distribuição verdadeira e as amostras obtidas da distribuição de ruído. Lembre-se Quando estamos falando sobre as amostras obtidas da distribuição verdadeira, estamos falando apenas de uma amostra que é a classe verdadeira obtida da distribuição do modelo.
Aqui expliquei sobre a perda de NCE e como ela difere da perda de NCE.
Estimativa Contrastiva de Ruído: Solução para Softmax caro.
— 19617 tuomastik
Em palavras simples, o NCE é apenas uma função de perda de classificação com vários rótulos, com apenas 1 rótulo positivo ek negativos.