[Música] Olá bem-vindos a segunda aula segunda videoaula da sexta semana do curso de redes neurais Eu sou professor Marcos que eles e na aula de hoje nós vamos aprender sobre a máquina de boltzmann nessa aula nós vamos relembrar o que que neurônios na primeira nas primeiras aulas do curso entender o conceito do que que é o equilíbrio térmico é introduzir a máquina de boltman apresentar o algoritmo de Treinamento dessa máquina e algumas limitações observadas na máquina de boltman original bom vamos iniciar pela rede de Robin Hood a gente sabe que a Red hop Field ela
tem uma energia associada a cada estado e a partir de uma configuração inicial a gente vai avaliar aquele GAP de energia de cada neurônio se o Gael for positivo a gente liga neurônios é um processo determinístico é rede sempre vai convergir para aquele mínimo associado a bacia de atração daquele exemplo Inicial daquela condição inicial da rede que que acontece esse mínimo de energia para correr de conversa pode não necessariamente ser um mínimo Global então se eu quiser buscar um mínimo global no meu espaço de busca no espaço de energia a rede de hop hoje não
é capaz de fazer isso que ela vai sempre ficar presa dado esse processo até menisco a um mínimo local então para tentar encontrar o menino Global nós podemos fazer o seguinte nós poderíamos tentar ao invés de utilizar um processo totalmente determinístico inserir ruído na alteração dos Estados neurônios então neurônio se o GAP é positivo ele vai para um mas agora não necessariamente ele vai direto para onde existe uma probabilidade dado essa quantidade de ruído que eu estou utilizando dele continuar em menos um ou de sair de um e para no mesmo se eu tiver aumentando
a energia da rede então permito que a rede saia de regiões mínima energia e consiga subir um pouquinho energia e quem sabe com isso superar Barreiras de potencial até atingir uma região de menor energia e o que que a gente faz na prática a gente começa com ruído mais alto para tentar romper Essas barreiras e depois a gente vai resfriando essa máquina reduzindo esse ruído para que a máquina consiga convergir até o mínimo local melhor ou mesmo o mínimo Global do sistema esse processo ele é conhecido como recozimento simulado ou Simulator é uma técnica bastante
comum na bastante utilizada na utilização na área de otimização Então vamos pensar o seguinte eu tenho um conjunto de partículas aqui em vermelho e eu tenho a isso daqui representa pra gente a nossa a nossa superfícies de energia então tem região de menor energia aqui região de menor energia aqui em B vamos pensar que essas partículas elas estão com uma energia cinética bastante Alta ou seja elas conseguem saltar elas conseguem se movimentar de tal forma que uma partícula consiga sair de b e vir para a e uma partícula de a consiga Superar Essa barreira de
potencial saindo de ar e vindo para B se essa energia for muito alta É como se eu tivesse achando essa barreira e essas partículas podem ficar oscilando entre essas duas regiões de maneira indistintas conforme eu começo reduzir essa temperatura do sistema ou seja diminui Aquela quantidade de ruídos eu já começo a fazer o seguinte ó existe agora uma probabilidade Menor da partícula sai de b e para a porque a energia cinética dela é menor ela pode saltar em algum momento ela pode ir para lá mas já com uma restrição maior por outro lado a partícula
de a ela tem o maior probabilidade para abrir uma vez que essa Fronteira essa barreira de potencial é menor então o que que a gente vai observar na prática se a gente começar a tirar fotos do sistema é provável que a gente encontra mais partículas desse lado e menos partículas desse lado se a gente resfriar ainda mais o sistema Pode ser que as partículas daqui consigam saltar essa barreira mas as partículas que também vê não conseguem voltar para a ou seja todas as partículas estão presas nesse nesse mínimo global para esse cenário apresentado Então variando
essa energia a gente consegue sair de um cenário mais aleatorizado até um cenário mais determinite com mais aproximadamente determinístico como que a gente tá mostrando aqui bom tô Relembrando que que é um neurônio estocástico né que nós vamos lá nas primeiras aulas do curso é diferente do neurônio determinístico no qual a gente avalia o campo local induzido ou no caso do neurônio ropild o GAP de energia se ele é positivo vai para onde se ela é negativo vai para -1 quando a gente pensa no modelo stocástico a gente vai definir o Estado um ou menos
um do neurônio como sendo uma probabilidade associada a esse neurônio dado estado dos seus vizinhos então a probabilidade de ver de um neurônio qualquer ela vai ser definida como sendo um sobre um mais exponencial de menos vê no qual V representa o GAP de energia dividido por ter a temperatura do sistema se essa temperatura vai para zero ou tende a zero no limite quando ela tende a zero nós temos que essa função ela se torna algo determinístico Porque se ela tende a zero eu tenho um número muito grande positivo tendendo a zero esse número explode
então vou ter um dividido por um número muito grande eu vou ter uma probabilidade aproximadamente zero quando o GAP de energia é negativo por outro lado de energia for Positivo eu vou ter um número negativo dividido por um valor próximo do zero esse número se torna um número muito grande negativo exponencial de um número muito grande negativo é aproximadamente zero então um dividido por 1 a gente vai ter uma probabilidade de um de ligar aquele neurônio do GAP é positivo por outro lado se essa temperatura for algo tendendo a infinito a gente já passa por
um processo totalmente aleatorizado onde eu vou ter um dividido por 2 ou seja 50% para definir se eu ligo ou desligo neurônio ou seja um lance de moedas Tá bom então de acordo com GAP de energia calculado que a gente define nosso campo local induzido a gente vai definir a probabilidade na prática o que nós utilizamos uma temperatura igual a um ou variações disso a gente não fica variando essa temperatura de um valor maior para um valor menor tá bom de fixa essa temperatura no valor um permitindo que o modelo tenha estocaticidade ou seja ele
vai definir essa probabilidade de acordo com GAP de energia e vai conseguir a rede vai conseguir se ajustar buscando o mínimo de energia mas não necessariamente ficando presa só naquele mínimo de energia conceito de equilíbrio térmico é o seguinte a rede não representa para a gente que eu estou preso no mínimo e eu estou fixo naquele mínimo de energia significa que eu estou preso numa distribuição de probabilidades associada ao modelo é uma distribuição estacionária dentro daquela região de mini energia por exemplo pensar que eu tenho esse cenário aqui de cima eu tenho quatro partículas em
vermelho aqui quatro partes cinco partículas de vermelho na região B se eu tiver uma foto do sistema Eu tenho quatro e cinco isso não significa que o sistema tá preso é que ele tá fixo nesse sistema nessa posição se eu pensar que ele está no equilíbrio térmico que que isso significa para mim que se eu tirar outras fotos desse sistema é provável que encontre quatro partículas do lado de cá e cinco partículas do lado de cá inclusive não necessariamente as mesmas partículas Pode ser que é uma partícula daqui saiu veio para a uma partícula de
ar sair veio para B mas no equilíbrio eu vou ter mais ou menos essa proporção quatro na parte superior e 5 na parte inferior se a gente pensar na segunda exemplo aqui onde tem dois compartimentos com gás dois dois tipos de gás um gás por átomos amarelo e um gás representado por átomos em vermelho que que acontece se eu tivesse colocado todo o gás em apenas um compartimento e eu tirasse uma foto teria todas as partículas isoladas no compartimento da esquerda a hora que eu solto esse modelo para oscilar esse gás ia expandir e ocupar
os dois compartimentos então ou seja aquela situação onde eu tô segurando todo mundo de um lado a máquina não tá em equilíbrio térmico forçando as partículas a ficarem só de um lado a hora que eu solto essa máquina vai tender uma região de menor energia e no equilíbrio térmico a gente vai ter a mesma proporção de partícula de um lado e do outro não necessariamente o mesmo vermelho que tá desse lado numa foto vai ser o mesmo vermelho que vai estar nesse mesmo lado numa foto posterior elas podem continuar oscilando mas em média eu vou
ter exatamente um estado qualitativamente semelhante Tá bom então os neurônios uma vez que eu atingiu o equilíbrio térmicos continua oscilando mas dentro daquela região de menor energia Qual que é a ideia da máquina de boltsman ela é uma máquina semelhante à rede de homefield ou seja ela tem neurônios binários só que agora a gente invés de utilizar unidades atenísticas nós vamos utilizar unidades estocásticas e além disso nós vamos ter dois tipos de neurônios os chamados neurônios visíveis e os neurônios ocultos o estado do sistema ele vai ser definido com base numa energia né a própria
energia da rede assim como a gente fazer na rede ropilde só que agora a probabilidade de encontrar um dado estado VH onde é ver representaria a configuração do Estado visível H configuração do Estado oculto vai ser proporcional a exponencial de menos energia daquele estado específico então calculando energia de cada estado a gente consegue saber aproximadamente qual vai ser a probabilidade de encontrar aquele estado quanto maior energia menor a probabilidade certo que exponencial de menos energia essa energia foi muito grande essa probabilidade tende a zero se essa energia for muito pequena muito negativa essa probabilidade tende
a crescer bastante tão energia da máquina a gente pode definir com essa equação aqui de cima ela é equivalente a máquina de rolfield só que agora Como nós temos neuronove e h a gente desmembra em três partes onde eu tenho a primeira parte que representa as conexões entre neurônios visíveis ou seja intracamada as conexões entre neurônios ocultos e intracamada e as conexões entre neurônios da camada oculta e da camada visível representando as conexões intercaladas eu falei que a probabilidade ela pode ser proporcional exponencial de menos energia daquele estado Só que a gente poderia uma vez
que eu tenho energia definida eu poderia calcular exatamente qual que é a probabilidade de cada estado para isso bastaria fazer a exponencial de menos energia dividido pelo somatório do exponencial de menos a energia de todos os estados possíveis da rede Qual que é o problema disso se eu tenho uma máquina com dois neurônios com neurônio Eu tenho dois estados possíveis ligados desligados eu tenho uma máquina com dois neurônios Eu tenho quatro Estados possíveis se eu tenho uma máquina com n neurônios eu vou ter dois elevado a n Então você tem uma máquina com 100 neurônios
eu vou ter dois elevado a 100 estados possíveis ou seja o cálculo computacional que a gente precisa executar para calcular a função de partição que essa função que tá aqui embaixo chamada de função de partição na física ela é basicamente proibida Então o que a gente faz a gente parte de uma condição Inicial aplica o método markovit em Monte Carlo para encontrar estados da máquina a partir daquela condição então a gente sai de uma condição Inicial Deixa a máquina evoluir aplicando aquela regra de transição definida de maneira probabilística é a máquina Vai ligando desligando os
estados de cada neurônio até atingir aquele equilíbrio térmico ou seja aquela aquele cenário de menor energia no qual a máquina continua oscilando mas dentro daqueles estados mais prováveis Então a partir da condição Inicial nos neurônios tem seus dados atualizados de acordo com seu GAP de energia quanto maior o GAP de energia Mais Positivo maior a chance de ligar o neurônio quanto menor o GAP menor a chance de ligar o neurônio o maior chance de desligá-lo bom o que que os neurônios representam os visíveis vão representar os nossos padrões Vamos pensar que aqui nessa camada ver
tenho quatro neurônios poderia cada neurônio representar seu gosto ou não de um dado filme então se eu gosto do filme Um se eu gosto ou não do filme 2 se eu gosto ou não do filme 3 se eu gosto não do filme 4 então ele vai representar pra gente um padrão Então pessoal que eu fui lá no Netflix e peguei o comportamento do usuário um usuário qualquer eu sei que ele gosta do filme Um não gosta do dois gostam do três e gosta do quatro eu tenho outro usuário que gosta de um filme diferente ele
não gosta de um não gosta do dois não gosta três não gosta do quatro ou seja aqui na camada visível são aqueles padrões que eu tenho do meu problema meu conjunto de Treinamento os neurônios ocultos eles vão representar pra gente é uma espécies tratores de características por exemplo neurônio H1 ele pode aprender que todo mundo que gosta do filme v1 também gosta do filme V2 e não gosta do filme V3 já um drone dois pode indicar todo mundo que gosta de um filme de comédia pessoal vê um gosta de um filme de romance que é
o V4 ou todo mundo que gosta de comédia não gosta de ação ou vice-versa então cada neurona que ele vai ser uma espécie de extrator de padrões observados na camada visível e essa máquina opera em duas fases distintas a chamada fase presa ou fase positiva no qual nós vamos pegar lá no nosso data 7 o padrão de um usuário pegando esse exemplo do Netflix ainda eu pego lá um usuário e coloco na camada visível gosta do filme não gosta gosta não gosta e eu deixo apenas os neurônios da camada oculta oscilarem utilizando aquela regra de
transição probabilística que nós definimos atrás então neurônio vai ligar ou desligar de acordo com seu GAP de energia com a camada fixa tem um fixa já na camada na fase negativa na fase livre todos os neurônios podem oscilar de maneira livre ou seja vou aplicar calcular o GAP de energia para cada neurônio então para calcular o GAP de energia desse neurônio que eu preciso saber o estado de todos os demais neurônios da rede seus respectivos pesos calcula o GAP de energia se o GAP é positivo maior probabilidade de ligar negativo maior probabilidade de desligar esse
neurônio então energia da máquina Ela depende dos pesos e dos Estados neurônios são dado uma configuração de peso qualquer ou verifica Qual o Drone tá ligado desligado faço aquele somatório composto daquelas três partes a gente calcula energia da máquina e o que que a gente busca né a gente quer fazer ajuste de pesos da máquina de tal forma que na fase na camada visível a hora que eu deixar a máquina operar livremente ela mostra aqui na camada visível padrões semelhantes aqueles que eu tenho meu conjunto de dados então o que que eu quero fazer na
prática eu quero minimizar a energia daqueles estados relacionados aos padrões que eu tenho no meu conjunto de Treinamento então para isso para que que a gente precisa fazer não precisa reduzir energia desses estados que eu quero e aumentar a energia daqueles estados que eu sei que a máquina está convergindo para mas que eu não quero que ela vá então se eu sei que vamos pensar que eu tenho um padrão específico mas a máquina no equilíbrio térmico tá sempre convergindo para um um e um eu não quero esse estado todo mundo ligado porque não existe lá
no meu conjunto de Treinamento esse padrão Eu Preciso aumentar a energia desse estado ao mesmo tempo que eu reduzo a energia daqueles estados desejados então nós vimos já que a probabilidade de um estado VH qualquer é proporcional energia daquele menos energia daquele estado a gente pode fazer uma pequena simplificação que aplicar o log dos dois lados como eu tenho um log de esp eu corto essa exponencial então a mesma coisa para aumentar o log da probabilidade daquele estado eu preciso diminuir aquela energia para diminuir essa probabilidade esse log da probabilidade Eu Preciso aumentar essa energia
então essa energia nós sabemos que ela depende dos pesos da rede então se eu tiver uma função de energia e eu calcular a derivada dela em relação aos parâmetros em relação aos pesos ou seja aplicar o gradiente descendente a gente consegue sair de uma região um conjunto de peso que estava numa maior energia e fazer com que essa esse mesmo conjunto de estados leva a máquina a menor energias então o que que a gente pode fazer aplicar o gradiente descendente como nós já vimos lá na rede o algoritmo de propagação nada lá para treinar o
modelo então o que que a gente busca descendente eu quero reduzir a energia daqueles estados que eu quero em relação a derivada em relação aos respectivos pesos da rede como eu tenho menos aqui e o menos aqui a gente vai ver que na verdade a derivada vai acabar ficando positiva é que se eu deixar ela só negativa ela vai ser uma derivada ascendente não a derivada descendente lembra que a gente tem duas fases a gente é fase positiva onde o fixo a camada visível e a fase negativa na qual eu deixo a rede operar livremente
Ela vai convergir para o seu estado seu equilíbrio térmico de acordo com os pesos atuais então o que que eu quero fazer eu quero aplicar o gradiente descendente para reduzir a energia e automaticamente aumentar a probabilidade daqueles estados que eu quero que ela exiba na camada visível por outro lado na fase negativa Ela vai converge para um dado estado uma dada a distribuição um conjunto de estados eu quero aumentar aquela energia então o que que eu vou fazer eu vou fazer a mesma coisa vou aplicar o gradiente só que agora sem o menos aqui na
frente eu vou aplicar o gradiente descendente então basicamente o processo dessa rede envolve essas duas derivadas esses dois gradientes o gradiente descendente para o caso da fase positiva e o gradiente ascendente para o caso da fase negativa então na prática a gente pode falar que a variação do Peso entre neuroni J vai depender de dieta que a nossa taxa de aprendizagem a correlação dos estados e e j na fase positiva menos a correlação dos Estados na fase negativa quando que essa rede vai convergir quando esses dois valores se tornarem praticamente iguais ou seja a correlação
que eu tenho observar que eu consigo observar na fase livre na fase negativa Mas se a mesma que eu tenho na fase positiva ou seja a máquina quando ela opera livremente ela tá mostrando para a gente padrões existentes no nosso conjunto de Treinamento então o que que a gente faz uma fase positiva nós fixamos um papel lá no deita 7 pega um padrão fixa na camada visível e deixa a rede evoluir n Passos Teoricamente infinito espaço para convergir o estado h o estado de todos os neurônios da camada oculta feito isso a gente calcula as
correlações tá ligado esse aqui tá ligado está desligado a gente calcula todas as correlações existentes entre cada par de neurônios na fase negativa não na fase negativa a gente começa com o estado Inicial qualquer um estado Inicial arbitrário e deixa a rede evoluir até atingir o equilíbrio térmico a gente faz a mesma coisa calcula com relação entre todos os pares de neurônios Tá bom então por que que a gente precisa das duas fases Vamos pensar que aqui é meu cenário atual onde eu tenho minha curva de energia aqui e o exemplo que eu quero armazenar
ele tá aqui uma energia mais alta e a rede tem um mínimo aqui que é um exemplo que eu não quero armazenar então na prática O que eu preciso fazer que eu preciso reduzir essa energia e aumentar a energia desse estado a fase positiva é responsável por reduzir essa energia já fazem negativa responsável por aumentar essa energia então aplicando aquela forma de atualização a gente vai ter um algo parecido com isso ou seja vou reduzir energia consequentemente aumentando a probabilidade de um estado que eu quero e aumentando energia consequentemente reduzindo a probabilidade de um estado
que eu não quero como que a gente pode utilizar a máquina de Bolt primeiro a gente pode utilizar ela para inferência Ou seja eu começo um padrão na camada visível Vamos pensar que eu tenho eu conheço Quais filmes que um dado usuário gosta mas eu não sei se ele gosta ou não de um de um filme específico então deixa Zerado aquele valor coloco as informações que eu tenho aí com base nessa informação eu deixo a máquina evoluir Possivelmente Ela vai convergir para um estado onde ela vai imputar valores menos um ou um se ele gosta
Possivelmente vai gostar ou não daquele filme de acordo com os outros filmes que a gente sabe já que ele gosta que não gosta a gente poder utilizar Por exemplo essa máquina para fazer um sistema de recomendação explicação ou seja o fixos neurônios da camada visível e verifico o que que acontece com os neurônios ocultos no Equilíbrio no equilíbrio térmico então pode ser que eu consiga verificar esses usuário aqui é aquele tipo que usuário que gosta de filme de terror gosta de filme de ação mas não gosta de romance a partir da análise dos resultados dos
resultados neurônios da camada oculta e a gente pode utilizar para geração de dados também uma vez que a rede aprendeu aquele comportamento aquela distribuição dos dados existentes no nosso conjunto de Treinamento se eu deixava operar livremente a partir de uma condição Inicial Ela vai convergir para o equilíbrio térmico e vai continuar oscilando dentro daquela região daquele tempo então a gente pode fazer amostras daquela saída da rede e utilizar essa mostra como sendo novos padrões com um conjunto de dados por exemplo Qual que é a limitação dessa rede né nós sabemos que o cálculo daquela correlação
tanto na fase positiva quanto na fase negativa eles são bastante custosos ou seja eu preciso começar com uma condição Inicial na fase presa e deixar a máquina evoluir até o equilíbrio térmico mesma coisa na fase negativa eu começo com a máquina totalmente livre e deixo ela evoluir livremente até o equilíbrio término esse processo é muito Custoso Então isso acaba evitando dado esse processo de Treinamento Custoso que essa máquina seja aplicada em cenários práticos exceto para cenários para tosse sempre elas é muito muito pequenos então o que que nós vimos nessa nessa aula nós relembramos O
que é que andaram estocástico nós entendemos o conceito de equilíbrio térmico conhecemos a máquina de boltman e como ela treinada e na próxima aula nós vamos conhecer a máquina restrita de boltsman e o algoritmo da divergência construtiva que permite que a gente faça aplicações em problemas reais da máquina de Bolt agradeço a atenção de todos novamente até a próxima aula [Música] [Música]