[Música] Olá a todos todos bem-vindos à segunda aula da terceira semana do curso de aprendizado profundo nessa semana nós vamos conhecer os modelos gr1stm e algumas variações arquiteturas compostas por esse modelos para tratar problemas envolvendo sequências também dentro do contexto das redes e correntes especificamente nós vamos recordar a limitação da rede recorrente tradicional as nossas redes vanilas apresentar as unidades que possuem memória de longo prazo stm entender o que que são as redes neurais recorrentes profundas estudar as redes bidirecionais ou compreender como funciona uma rede recorrente bidirecional e algumas limitações e variações desses modelos nós
já vimos né o primeiro ponto na das limitações dessas redes recorrentes tradicionais as nossas redes vanila Elas têm uma grande propensão a desenvolver apresentar o problema do desaparecimento ou explosão do Gradiente como nós já vimos na aula anterior Além disso ela também tem aquela dependência a sequência de memorizar apenas sequências dependências de curto prazo Elas têm limitações ao salvar informações de longo prazo por exemplo se eu quiser concordar um sujeito com o verbo e entre esse sujeito verbo existe uma grande sequência de palavras aqui no meio então essas redes tem séries limitações com relação a
isso uma forma da gente contornar esses dois problemas é utilizando células que apresentam ou que de alguma forma implementam memória de longo prazo capaz de preservar um sinal tanto na fase de propagação quanto preservar o gradiente na fase de retropropagação o primeiro modelo que nós temos proposto na literatura com redes compostas por essas Memórias de longo prazo são as redes chamadas lspm de long short the Memory elas foram propostas em 97 pelos professores CEP hyugen é importante sacar que esse artigo que propôs esse modelo tem mais de 80.000 citações o que perante academia algo extraordinário
número de situações muito grande mostrando o impacto desse trabalho e qual foi abrangência dele não só na comunidade redes neurais mas diversas áreas de aplicações de aprendizado de máquina e diversas outras áreas do conhecimento esse modelo foi ampliado pelo Félix em 2000 acrescentando uma nova porta a porta de esquecimento e essa rede ela possui dois sinais ao contrário das redes tradicionais que possuem apenas um aquele sinal a que ela é modificado sempre pelo sinal a do tempo tem menos um e da entrada essa regra possui dois sinais um sinal de longo prazo que a gente
chama de estado interno da célula representado por ser e a memória de curto prazo um sinal externo que é aquilo que a célula vai apresentar para a próxima camada ou para a mesma camada no tempo posterior representa do por a Vitória stm ele é composta por três portas principais três Gates o de entrada ou também chamada de atualização que a gente vai representar que por último o portão de saída representado por o que vai controlar o que que dá memória interna da célula da memória de longo prazo que vai ser transmitida para memória de curto
prazo para o estado externo da célula e o gate de esquecimento representado aqui por F Então essas célula é capaz a partir do controle desses portões desses Gates ele é capaz de controlar qual o tipo de informação que vai ser apagada ou qual o tipo de informação que vai ser preservada ao longo do funcionamento da rede por uma grande sequência temporal por exemplo aqui tá a unidade lsdm Ou seja a imunidade bem mais complexa que é uma simples tangente perbólica Que nós tínhamos na célula tradicional então nós temos diversos Gates aqui o gate de foguete
de update o gate dewald o sinal interno na nossa memória de longo prazo e o sinal externo no nosso memória de curto prazo aquele sinal que a célula utiliza para transmitir para as demais camadas para a própria camada no instante posterior e para as camadas para células de camadas posteriores então Aqui nós temos as equações que trabalha nesse modelo primeiro ponto a geração de um sinal cetil que vai ser chamado de sinal candidato para memória interna no nosso memória de longo prazo ele Depende do estado da rede no tempo anterior do padrão apresentado para rede
os seus respectivos pesos e espaço para onde a gente para ir embora então a gente vai ter um sinal cetil de t no instante de Deus nosso sinal candidato com esse sinal candidato e com os portões de update e de Forget nós conseguimos calcular de fato qual vai ser o sinal a memória interna da célula memória de longo prazo no tempo t e ela vai depender do sinal candidato multiplicado pelo Gate de update e do sinal que eu tinha no tempo anterior multiplicado pelo Gate de foguete Então esse Gate aqui vai definir para mim quanto
do sinal candidato que eu vou aproveitar eu vou utilizar para atualizar o sinal e quanto do sinal anterior que vai ser preservado representado aqui pelo Gate de Forget e por fim a gente gera um novo Gate que é o gate de output que vai definir quanto de ser que vai representar o nosso a ou seja quanto na memória interna que vai ser transmitido extremamente para célula então passo a passo a gente tem o seguinte com o sinal a no tempo tem menos um e o sinal x de t a gente gera o nosso sinal candidato
você é tio de D feito isso a gente gera o nosso calcula-se a porta de Forget Nossa porta F utilizando uma estrutura bastante semelhante ao que a gente utiliza para calcular o sinal candidato ou seja também depende do sinal anterior e do padrão apresentado naquele instante do tempo a gente calcula o gate de update aí uma vez que eu tenho o sinal candidato e os dois portões dois Gates calculados a gente consegue calcular o sinal uma vez que eu tenho um sinal C de t a gente consegue calcular o sinal o gate de output né
o nosso Gate de saída combinando com o c de t a gente vai definir o que que a célula apresenta como sendo sua saída externa sua sinal externo para a próxima camada para as próximas camadas da rede é que que é importante a gente observar aqui né o sinal interno da rede entre o sinal t-1 e o sinal C de D A gente não tem nenhum peso associado a gente tem apenas uma multiplicação e uma adição ou seja esse sinal C de t-1 se de acordo com os gates de acordo com o que está definido
por esses dois portões ele pode ser 100% preservado do tempo até menos um para o tempo ter então com isso a gente consegue preservar uma informação temporal por uma longa sequência temporal então posso ter uma informação que chegou lá aquela aquela combinação aquela concordância do sujeito com o verbo então posso ter o sujeito lá no instante um aí tem uma sequência de palavras e lá no instante 20 tem o verbo então eu consigo Recordar daquele instante um que era o sujeito singular por exemplo conjugar aquele verbo da forma adequada e da mesma forma que a
gente consegue propagar o sinal sem nenhum tipo de alteração ele também pode ser utilizado essa mesma sequência para preservar o gradiente na reta propagação então com isso a gente diminui aquela chance de explosão ou desaparecimento do Gradiente em 2014 o chow propôs uma outra rede também com memória de longo prazo denominada Gru ou gated Break Unity Qual que é a ideia ela é uma versão simplificada da célula stm Então como ela é simplificada primeiro ponto ela não vai ter aqueles dois sinais final 6 a tanto a memória de curto quanto a memória de longo prazo
vão ser codificadas no mesmo sinal e aqui a gente até observa aquela mesma semelhança né Eu tenho um sinal a de t-1 que pode passar direto para o sinal ADT tem apenas uma multiplicação então de acordo com esse Gate aqui esse sinal pode ser preservado com uma longa sequência ou se esse Gate for definido com o valor mais alto ele pode atualizar esse sinal ao longo das interações temporais do modelo a Jerry Ela Tem duas versões uma versão chamada simplificada que aqui na tela no qual ela tem apenas o gate de update ou seja quanto
que eu vou atualizar do sinal no tempo tem menos um para o tempo ter e na versão completa a gente vai ter dois gays que eu vou mostrar daqui a pouquinho então Aqui nós temos as formas de atualização dessa célula nas formas dinâmica dessa célula Então nós vamos ter da mesma forma que na lsdm um sinal candidatos só que agora Como nós temos apenas o sinal a nós vamos ser um candidato do sinal a que depende do ar no tempo tem menos um e da entrada apresentada naquele instante do tempo a gente tem o gate
de update que definido da mesma forma também Depende do estado da célula no instante anterior e da palavra apresentada e por fim a gente vai ter o sinal de saída que vai ser o gate de update em relação ao sinal candidato mais um menos o gate update em relação ao sinal anterior então vamos supor esse Gate aqui ele é um vetor uma sequência de valores entre zeros e uns no caso extremo se o gate ele for totalmente igual a um todas as posições iguais a um esse valor é que vai ser totalmente igual a zero
eu tô falando então que o sinal de a no tempo T vai ser exatamente o sinal candidato por outro lado se ele for totalmente igual a zero eu tô falando que o sinal de a no tempo T vai ser exatamente o sinal de ar no tempo tem menos um ele não vai receber nada desse sinal o candidato então basicamente controlando esses valores ajudando os parâmetros desses Gates a gente consegue controlar Como que essa informação é propagada e depois propagada na cela a Gril completo que a gente tem diferença é apenas adição de novo Gate chamado
Gate de relevância um portão de relevância que vai definir na formação do sinal candidato quanto que ele vai aproveitar de cada sinal de cada célula cada estado no instante anterior então se esse Gate for igual a zero significa não tô aproveitando aquela aquela saída daquele neurônio específico se o gate for igual a 1 significa eu tô aproveitando 100% daquela saída daquele neurônio específico e a formação do GATE exatamente a mesma do gatchaption Claro que ele tem um outro conjunto de peso então cada cada linha aqui vai ter seu próprio conjunto de peso para gerar o
sinal candidato nós temos dado de a o gate de relevância wdr e o gate de update o WD aqui fazendo paralelo então entre a rede e a rede ele é Extrema e nós temos que nós já riu nós temos um ou dois Gates se a gente tá trabalhando com a célula simples ou com a célula completa como consequência Nós temos duas ou três Matriz de peso 71 ou dois Gates é apenas um sinal interno a gente não tem aqueles dois sinais sei lá tem apenas o sinal lá e como a gente tem menos parâmetros a
gente vai ter o menor custo computacional por outro lado ele stm ela tem três Gates Lembrando que ela foi proposta Originalmente com dois e depois em 2000 foi apresentado no terceiro Gate o gate de Forget ela tem quatro Matriz de peso Nessa versão atual dela dois sinais internos que é o sinal de curto prazo sinal de longo prazo a EC como consequência como ela tem mais parâmetro ela tem o maior custo computacional na prática elas possuem características muito semelhantes Ou seja a capacidade computacional delas Claro ela é stm Ela tem mais parâmetro ela tem a
maior flexibilidade de aprendizagem mas na prática na maioria dos cenários testados ela se comportam de maneira muito semelhantes Claro que ela é stm sempre tende a como ela tem mais flexibilidade ela tem uma capacidade de aprendizado um pouco superior bom Aqui nós falamos então das redes recorrentes Profundas no tempo ou seja eu posso ter uma rede que ela vai se alimentado com uma sequência de tamanho 100 então ela vai ter uma profundidade de tamanho 100 temporal só que além disso a gente também pode tornar essas redes Profundas no espaço ou seja definir a primeira camada
camada de entrada primeira camada oculta a segunda camada oculta e assim sucessivamente então nós podemos sim criar redes recorrentes Profundas no espaço a partir do empilhamento dessas camadas qual que é possível problema que nós temos essa abordagem aqui primeiro que a gente vai ter uma quantidade excessiva de parâmetros para cada camada de uma rede elétrica por exemplo tem quatro conjuntos de matrizes se eu tiver duas camadas eu vou ter oito conjuntos de matriz 4 na primeira camada quatro na segunda e assim sucessivamente então com certeza para treinar um modelo com muito parâmetros precisa de um
conjunto de dados muito maior então Aqui nós temos uma ilustração de uma rede profunda no espaço ou seja entrada primeira camada oculta que alimenta a segunda camada oculta que alimenta a enésima camada oculta que alimenta a camada de saída então Aqui nós temos a estrutura espacial de uma rede e nós também temos a profundidade temporal dela então nós temos aqui nesse exemplo uma rede que ela é profunda no tempo e também no espaço nós temos diversas camadas recorrentes Lembrando que essa camada aqui exatamente igual a essa Qual que é a diferença dessas duas A única
diferença é que essa aqui tá no instante 1 e essa aqui tá no instante T mas são exatamente é exatamente a mesma rede mesmo conjunto de peso tá bom a diferença é que ela essa daqui ela tá recebendo a primeira entrada e essa aqui ela já recebeu a entrada no tempo T E o respectivo estado das células no instante anterior que foi gerada a partir de todas as entradas anteriores tá então para treinar essas vezes a gente tem um processo um pouco mais complicado geralmente a gente precisa ajustar com bastante cuidado tanto a taxa de
aprendizado de aprendizagem quanto o clipe no Gradiente que aquele corte que a gente faz um Gradiente para evitar a explosão dentre outros critérios bom às vezes decorrentes elas são utilizadas então para tratar a sequências Então como nos exemplos que eu já mostrei anteriormente a gente pode apresentar uma sequência de palavras e tentar predizer a próxima palavra por exemplo eu estou triste vou dizer uma terceira palavra a partir dessas duas entradas É um cenário bastante simples aqui eu poderia ter diversas palavras é com probabilidades muito semelhantes que a gente poderia colocar nessa posição Mas vamos pensar
no seguinte cenário eu estou eu tenho uma palavra aqui na frente fome Então já vou restringir a possibilidade das palavras que eu posso colocar aqui no meio se eu analisar a palavra posterior eu estou triste fome não seria possível Estou com fome estou sem fome estou com muita fome então a gente poderia restringir já a probabilidade de cada palavra que a gente vai substituir nesse ponto a partir da análise do início da sequência e do fim da sequência a gente pode até elaborar um pouquinho mais né Por exemplo eu estou fome vírgula almocei agora pouco
então estou sem fome a probabilidade de colocar a palavra sem já vai ser maior ainda do que a palavra compra porque eu tenho essas sequência final indicando que eu almocei agora pouco almocei agora pouco Possivelmente estou sem fome complicando um pouquinho mais né Eu estou fome almocei agora pouco mas comi quase nada então estou com fome de novo mas que que eu precisei fazer para isso eu preciso analisar o início da sequência e o fim da sequência então precisa analisar tanto passado quanto futuro se a gente pensar na sequência como uma estrutura temporal então qualquer
ideia agora ao invés de nós utilizarmos apenas um estado oculto da rede uma camada ou uma sequência de camadas analisando a sequência do início para o fim a gente vai ter duas redes em paralelo uma rede de canalizar sequência na forma Direta do início para o fim e uma rede em paralelo que vai analisar a sequência do fim para o começo para fazer uma melhor predição daquela daquela palavra que a gente tá tentando imputar então aqui a gente tem uma ilustração disso né Nós temos que o ar representa a rede direta ou a linha representa
a rede indireta ou seja aquela que trata da sequência do fim para o começo e basicamente para gerar a saída a gente vai depender dos Estados gerados tanto pela sequência direta quanto pela sequência inversa é as redes neurais recorrentes bidinais elas podem ser formadas por qualquer tipo célula desde uma célula Vanilla utilizando neurônio MSP uma célula stm uma célula de ru ou qualquer outra célula que eu posso utilizar em uma rede recorrente a gente poderia utilizar nessa rede recorrente bidirecional O que que a gente tá fazendo com catenando em paralelo apenas duas camadas um processo
sequência nós no sentido direto e uma que processa a sequência no sentido inverso Qual que é o problema a gente precisa avaliar ativação dos neurônios os dois sentidos então a saída ela Depende das ativações calculadas nesses dois sentidos como consequência a gente pode ter um problema de custo computacional porque a gente vai ter que analisar sempre a sequência inteira para fazer a predição da palavra Então a gente tem um custo bem maior do que a utilizar apenas uma direção esse modelos aí são bastante interessantes se a predição dessa palavra Ela depende tanto do instante passado
do início da sequência quanto do instante futuro na sequência é boa parte dos modelos atuais que trabalham como procedimento de texto de alguma forma utilizam essas questões bidirecionais para melhorar a predição desses modelos tá de novo processo de Treinamento agora em vez de ter uma rede para treinar uma rede para treinar duas vezes em paralelo E além disso eu preciso tratar toda a sequência do começo ao fim e do fim para o começo aqui na ilustração de um código em que elas para a gente implementar uma rede bidirecional aqui eu acrescentei o layer bidirecional falando
que eu quero uma camada bidirecional com unidades lstm com 64 neurônios ou seja vou ter 128 neurônios 64 Processando o sentido direto e 64 processando sentido inverso e depois eu tenho uma segunda camada espacial também com 64 neurônios em cada sentido representados que por esse layer bidirecional o que que é importante desse código aqui a gente observar esse britânico sequência igual a true por padrão a hora que a gente acrescenta uma camada stm não que elas ele vem como falso O que que significa falso significa essa rede ela vai receber toda a sequência e só
o final ela vai apresentar a saída Só que eu não quero isso eu quero como eu tenho duas camadas parciais aqui eu quero que para cada palavra essa primeira camada processa a palavra alimente a segunda camada para também processar essa palavra eu vou fazendo isso sempre em paralelo então a gente força a passagem da sequência de cada instante de cada ponto no tempo dessa primeira camada para a segunda camada por sua vez a segunda camada ela não precisa passar a sequência inteira eu quero simplesmente uma vez que eu tenho a sequência inteira processada na da
camada eu pego o estado final e utilizo ele para alimentar a nossa unidade de saída que vai classificar ou vai gerar Qual que é a probabilidade de seleção de uma nova palavra ou da palavra faltante aqui uma ferramenta interessante para quem quiser testar ela foi implementado utilizando uma rede lsdb bidirecional e aqui a gente coloca um texto ela tem que ser língua inglesa a gente coloca um texto aqui por exemplo Esse foi o pior filme que eu já assisti e ela faz a classificação como um sentimento negativo ou seja me viu negativo eu poderia colocar
uma sentença que esse é o melhor filme que eu já tive Possivelmente ele é classificar isso daqui é como um sentimento positivo Então ele pode testar diversas sentença ele ficar como que modelos se comporta algumas variações né a gente pode acrescentar mecanismo de atenção a gente pode utilizar as redes transformas que representa hoje o estado da arte em processamento de consequências combinar com outros modelos por exemplo para tratamento de vídeo A gente poderia ter uma rede CNN aqui tratando cada frame cada sequência cada foto desse vídeo e depois uma camada recorrente fazendo a compilação dessas
fotos ou seja reconhecendo vídeo por exemplo e também mecanismos utilizando aquela arquitetura muitos para muitos do tipo em colder coder para tratamento de sequências algumas aplicações de redes recorrentes primeiro previsão do séries temporais uma aplicação direta eu quero fazer a proibição do clima radiação solar previsão do previsão do mercado financeiro quero saber qual que vai ser O Valor estimado de uma datação no instante futuro diagnósticos eu quero saber por exemplo falhas em baterias a partir do estudo dos parâmetros dessa bateria ao longo do tempo verificar se ela está indo para um sentido de vida perder
carga ou não falhas incipientes em Sistemas mecânicos reconhecimento de sequências análise como análise de sentimentos reconhecer o gênero musical a partir de um sinal de áudio e sequência para sequência como tradução transcrição e o chatboat Tá bastante famoso agora pelo chat GT algumas considerações é primeiro as redes recorrentes mesmo com Memórias de longo prazo como elas têm MG R1 elas ainda possuem algumas limitações por exemplo treinamento pode ser complexo Principalmente quando utiliza múltiplas camadas espaciais a gente pode ter dificuldade para realização desses modelos uma vez que ela tem uma rede sequencial então não tem como
calcular estado da rede no tempo 5 sem ter calculado o Tempo 4 anteriormente a gente precisa fazer um processamento serial só que com isso a gente tem novas abordagens né Por exemplo introdução do mecanismo de atenção e as redes transformam-se que a gente vai abordar lá na sétima semana do curso bom nessa aula então nós conhecemos as redes decorrentes comemora de longo prazo a grillsm definimos O que que é uma rede recorrente profunda tanto no espaço quanto no tempo e conhecemos as redes bidirecionais e compreendemos algumas aplicações e limitações desses modelos na próxima aula a
gente vai fazer a implementação em que elas utilizando collab em Python para criar uma rede capaz de fazer essa análise sentimento Assim como nós vimos naquele exemplo que eu apresentei para vocês alguns slides atrás então Agradeço a todos pela atenção e até a próxima aula [Música] [Música]