Qual modelo de aprendizagem profunda pode classificar categorias que não são mutuamente exclusivas

9

Exemplos: Eu tenho uma frase na descrição do trabalho: "Java senior engineer in UK".

Eu quero usar um modelo de aprendizado profundo para prever em duas categorias: English e IT jobs. Se eu usar o modelo de classificação tradicional, ele poderá prever apenas 1 rótulo com softmaxfunção na última camada. Assim, eu posso usar duas redes neurais modelo para prever "Sim" / "Não" nas duas categorias, mas se tivermos mais categorias, será muito caro. Então, temos algum modelo de aprendizado profundo ou de aprendizado de máquina para prever duas ou mais categorias ao mesmo tempo?

"Editar": com 3 rótulos por abordagem tradicional, ele será codificado por [1,0,0], mas no meu caso, será codificado por [1,1,0] ou [1,1,1]

Exemplo: se tivermos três marcadores, e uma frase pode ser adequada a todos esses marcadores. Portanto, se a saída da função softmax for [0,45, 0,35, 0,2], devemos classificá-la em 3 rótulos ou 2 rótulos, ou pode ser um? o principal problema quando o fazemos é: qual é o limite ideal para classificar em 1, 2 ou 3 rótulos?

voxter
fonte
Temos que usar a função sigmóide em vez da função softmax. Ele pode atribuir várias classes aos pontos de dados.
NITISH MAHAJAN 28/03

Respostas:

6

Você pode obter essa classificação de vários rótulos substituindo o softmax por uma ativação sigmóide e usando a entropia cruzada binária em vez da entropia cruzada categórica como função de perda. Então você só precisa de uma rede com tantas unidades de saída / neurônios quanto etiquetas.

Você precisa alterar a perda para entropia cruzada binária, pois a entropia cruzada categórica só obtém a perda da previsão para os destinos positivos. Para entender isso, observe a fórmula da perda de entropia cruzada categórica para um exemplo (os índices de classe são ):jij

Li=jti,jlog(pi,j)

Na configuração normal de multiclasse, você usa um softmax, para que a previsão para a classe correta seja diretamente dependente das previsões para as outras classes. Se você substituir o softmax pelo sigmoid, isso não será mais verdade; portanto, exemplos negativos (onde ) não serão mais usados ​​no treinamento! É por isso que você precisa mudar para a entropia cruzada binária, que usa exemplos positivos e negativos: L i = - j t i , j log ( p i , j ) - j ( 1 - t i , j ) log ( 1 - p i , j )ti,j=0Li=jti,jlog(pi,j)j(1ti,j)log(1pi,j)

robintibor
fonte
por que precisamos usar a entropia cruzada binária em vez da entropia cruzada categórica como a função de perda? Você pode explicar mais ? Agora eu estou usando @robintibor ativação sigmóide
voxter
Eu adicionei uma explicação à resposta @voxter
robintibor
Brilhante! Obrigado. Além disso, você pode fornecer alguns documentos ou tutoriais que explicam mais matemática sobre funções no deeplearning, como você me explicou?
voxter