remote service reference
2.3.2 Vetores de Parágrafos
Com base no algoritmo Word2vec, Mikolov et al.[13] introduziram em 2014 um novo modelo denominado Vetores de Paragráfo (PV10) para aprendizado de vetores represen-
tativos de parágrafos, documentos ou sentenças. Trata-se de uma técnica inspirada no aprendizado da representação de parágrafos sob a forma de vetores numéricos gerados a partir do uso de RNAs [70]. Neste modelo os vetores são gerados a partir de um processo de treinamento supervisionado em uma RNA do tipo rasa. Duas vantagens são apontadas 10
48 Capítulo 2. Fundamentação Teórica
por Mikolov et al.[13] para este modelo em relação às técnicas bag of word: preservação da semântica e ordem das palavras. Parágrafos de diferentes tamanhos podem ser trans- formados pela RNA em vetores de tamanho Ąxo [71].
Segundo Dong e Liu[72], PV foi apresentado sob a forma de dois modelos: Para- graph Vector Distributed Memory (PV-DM) e Paragraph Vector Bag of Words model (PV-DBOW). O modelo PV-DM é uma derivação do modelo CBOW e cada parágrafo recebe um identiĄcador único que é adicionado durante o treinamento do modelo ao con- texto das palavras como se fosse uma outra palavra, conforme ilustrado na Figura 10(a). Portanto, ao se treinar os vetores representativos de palavras, o vetor de parágrafo (pa- ragraph_id) também será treinado. Ao Ąm do treinamento este vetor armazenará uma representação numérica do parágrafo, também chamada de memória distribuída. Trata-se da inclusão de uma pseudo palavra na janela ou contexto de cada palavra constituinte do parágrafo. O pseudo vetor p, gerado desta forma, representará o parágrafo. Por outro lado, o modelo PV-DBOW baseia-se na adaptação do modelo Skip-Gram, conforme ilus- trado na Figura 10(b). Neste caso, o vetor p representativo do parágrafo será a entrada da RNA. Espera-se como saída obter os vetores de um conjunto de palavras, escolhidas randomicamente dentre aquelas pertencentes ao parágrafo. Representações vetoriais ob- tidas através de PVs tem se mostrado superiores, em um conjunto de tarefas, àquelas obtidas através de abordagens do tipo bag of word [72].
Figura 10 Ű Arquiteturas PV-DM(a) e PV-DBOW(b)
Fonte: Traduzido de Mikolov et al.[13].
Conforme dito anteriormente, este trabalho utiliza como base o modelo baseado em vetores de parágrafo para representar, sob a forma de vetores numéricos, os métodos do código fonte dos software orientado a objetos utilizados. Umas da principais implemen- tações deste modelo é o algoritmo Doc2vec11, encontrado no framework Gensim, escrito
na linguagem de programação Python. Um exemplo básico de utilização do algoritmo Doc2vec na linguagem Python pode ser encontrado no Apêndice C.
11
2.3. Técnicas baseadas em Rede Neural ArtiĄcial (RNA) 49
2.3.3 Algoritmos usados pelo algoritmo Doc2vec
Uma rede neural é operacionalizada a partir de um conjunto principal de funções ou algoritmos, dentre os quais se destacam: a função de ativação, a função de custo e o algoritmo de otimização da rede [73]. Os algoritmos Word2vec e Doc2vec tipicamente usam redes neurais rasas em que a função estocástica gradiente descente e o método backpropagation são usados para o aprendizado [74]. As funções não lineares de saída do modelo possuem, dentre suas representantes mais importantes, a função hierarquical softmax e negative sampling [62, 13]. Em todos os capítulos deste trabalho hierarquical softmax e negative sampling são referenciados respectivamente como HSM e NGS.
Negative sampling é uma aproximação da função Noise Constrastive Estimation (NCE). Segundo este modelo dados de boa qualidade devem ser diferenciados de ruídos a par- tir de regressão logística. O objetivo de se encontrar representações de alta qualidade para palavras se reduz agora em diferenciar dados válidos (conjunto de palavras que real- mente ocorrem dentro de um contexto) de ruídos (conjunto de pares de palavras que não representa pares válidos encontrados em um contexto).
Figura 11 Ű Exemplo de palavras positivas e negativas usadas na modalidade Negative Sampling
Fonte: Traduzido de Ye et al.[12].
A Figura 11 traz um exemplo de palavras positivas e negativas utilizadas durante o treinamento e aplicação da função de custo Negative Sampling. Tendo como referencial a palavra numbers, Ąguram como palavras do contexto ou positivas aquelas que a circundam dentro de um intervalo de palavras previamente deĄnido. Palavras negativas são aquelas que não Ąguram neste contexto e seu número é deĄnido empiricamente e objeto de estudo
50 Capítulo 2. Fundamentação Teórica
deste trabalho quanto à inĆuência sobre a acurácia na localização de características e bugs. Durante o treinamento usando negative sampling tanto as palavras negativas quanto as positivas tem seu peso atualizado na matriz de saída, isto é, a matriz de pesos que Ąca entre a camada oculta e a camada de saída da rede. As outras palavras do vocabulário não tem seus pesos atualizados o que otimiza o treinamento da rede e mesmo assim mantém boa acurácia ao Ąm do processo.
A Figura 12 exempliĄca a forma de funcionamento da função de custo Negative Sam- pling. Assim, os dados verdadeiros foram assinalados com a linha azul contínua. Em vermelho e pontilhado aparece o ruído, isto é, conjunto de pares de palavras que não ocorrem no mesmo contexto. O objetivo desta estratégia é maximizar a função de custo para os dados verdadeiros e minimizar para aqueles que não acontecem na realidade, isto é, onde as palavras não apareçam no mesmo contexto [41]. Pode-se ainda ver que para os dados "negativos" a saída esperada é 0 (yn=0), enquanto para as palavras que aparecem
no contexto deseja-se que esta seja igual a 1 (yn=1).
Figura 12 Ű O processo de operação da função de custo Negative Sampling
Fonte: Traduzido de Ganegedara[41].
A função de custo hierarchical softmax tem o mesmo objetivo da função negative sampling que é aproximar o softmax sem ter que calcular a função de ativação para todas as palavras do vocabulário. A diferença consiste no fato que hierarchical softmax só considera dados válidos, isto é, conjunto de pares de palavras que coocorrem no mesmo contexto. Além disso possui seu funcionamento baseado em uma árvore binária.
2.4. Medidas de Avaliação da Acurácia em localização de Características e Bugs de Software 51 atualizados seguindo a seguinte equação:
𝜃t= 𝜃t−1⊗ 𝜖t
𝜕𝐿
𝜕𝜃 (1)
onde 𝜃 representa os pesos da rede neural, L é a função de custo, 𝜖t é a taxa de
aprendizado da rede e t é o instante de tempo [72].
A taxa de aprendizado determina o tamanho dos ajustes dos pesos feitos em cada época (iteração) e, portanto, inĆuencia a taxa de convergência da rede neural.