Três redes com o mesmo número de unidades ocultas (16) receberam a mesma tarefa: ler 8 segundos de ECG e dizer, apenas nos últimos 0,2 s da janela, se houve uma extrassístole ventricular em algum momento. Afaste o batimento anômalo do fim da janela e veja quem ainda se lembra dele. Os modelos foram pré-treinados e rodam aqui no seu navegador.
As três arquiteturas leem a mesma amostra e o mesmo estado anterior. A diferença está no caminho que a memória percorre de um instante para o outro. Os diagramas e a notação seguem o livro Dive into Deep Learning, redesenhados aqui com os valores do modelo no instante analisado.
Notação do d2l: Xt é a entrada (aqui, uma amostra de ECG, d = 1), Ht tem h = 16 unidades, ⊙ é o produto elemento a elemento. O d2l escreve com vetores-linha (XtW); a implementação usa vetores-coluna (Wxt), o que é a mesma conta com as matrizes transpostas.
Para aprender, cada rede precisa enviar o erro da resposta de volta até o instante em que a pista apareceu. O gráfico mostra quanto o logit da saída aτ (o valor antes da sigmoide), no instante analisado τ, é sensível aos estados e às amostras anteriores, em escala logarítmica. Cada linha de grade é um fator de 10.
O gradiente da perda que chega a cada instante é essa mesma curva multiplicada por um único número, (ŷτ − yτ), que não depende de t. Por isso, a forma do decaimento ao longo do tempo é a mesma que o treino enfrenta.
Os números abaixo vêm de 1.600 janelas de teste que nenhum modelo viu no treino. Antes de olhar, faça uma aposta.
Nessa variante, o alvo é 0 em todos os instantes antes da extrassístole e 1 a partir dela, então nenhuma informação do futuro entra no rótulo. Com esse sinal de erro em todos os instantes, a mesma RNN de 321 parâmetros aprende a segurar a memória pelos 8 segundos inteiros. Ela é capaz de representar a memória. O que ela não consegue é aprendê-la quando o único sinal de erro está no fim e precisa viajar centenas de passos para trás. Isso é o gradiente que desaparece: um problema de aprendizado, não de capacidade. A curva de perda dessa variante usa a média sobre todos os instantes, então compare a forma, não o valor exato.
Todo o passado passa por uma multiplicação por Whh e por uma tanh a cada passo. Como o gradiente é multiplicado sucessivamente pela matriz recorrente e pela derivada da tanh, ele pode diminuir ou crescer exponencialmente ao voltar no tempo; na prática, o desaparecimento é um problema frequente em dependências longas. Funciona bem quando a informação relevante está a poucas dezenas de amostras, como a morfologia de um único batimento. É a mais barata e a mais rápida.
Cria um caminho aditivo para o estado da célula. Ao longo desse caminho, a memória é atualizada principalmente por multiplicações elemento a elemento e somas, sem uma multiplicação pela matriz recorrente a cada passo (as portas e o candidato continuam sendo calculados com matrizes). Com a porta de esquecimento perto de 1, o erro atravessa centenas de passos quase intacto. É a escolha clássica para ritmos, tendências e eventos raros em janelas longas.
Funde célula e estado oculto e usa duas portas em vez de três. A porta de atualização interpola entre manter o estado e reescrevê-lo, o que cria o mesmo atalho para o gradiente. Neste experimento, a GRU teve desempenho semelhante ao da LSTM com cerca de 25% menos parâmetros.