Aprendizado de máquina e redes neurais - página 61

 

Regressão Linear: Uma introdução amigável



Regressão Linear: Uma introdução amigável

Olá, sou Louis Serrano, e esta é uma introdução amigável à regressão linear. Este vídeo é a primeira parte de uma série de três partes em que abordarei regressão linear, regressão logística e máquinas de vetores de suporte. No entanto, vamos nos concentrar na regressão linear por enquanto.

Normalmente, as explicações de regressão linear envolvem conceitos complexos como álgebra linear, matrizes, derivadas, cálculo e funções de erro. Mas para mim, isso pode ser esmagador. Tenho uma mente visual e prefiro entender a regressão linear com uma abordagem mais intuitiva usando pontos e linhas.

Deixe-me demonstrar o que quero dizer com isso. Primeiro, vamos definir a regressão linear usando um exemplo de preços de imóveis. Imagine que temos cinco casas com diferentes números de cômodos. Nós possuímos a casa três e queremos estimar seu preço para venda. Para fazer isso, olhamos para os preços de casas semelhantes e tentamos adivinhar. Depois de observar que a casa um custa $ 150.000, a casa dois custa $ 200.000, a casa quatro custa $ 300.000 e a casa cinco custa $ 350.000, podemos estimar que a casa três pode custar cerca de $ 250.000.

Essencialmente, o que fizemos aqui foi realizar uma regressão linear. Colocamos as casas em um gráfico, com o número de cômodos no eixo horizontal e o preço no eixo vertical. Observamos que os preços pareciam seguir uma linha reta, então colocamos a casa três na linha para fazer a melhor estimativa. Essa abordagem simples de ajustar uma linha através de um conjunto de pontos e usá-la para previsões é a essência da regressão linear.

Na realidade, o cálculo de preços envolve fatores adicionais, tornando os dados mais complexos. No entanto, ainda podemos ajustar uma linha que se aproxime bastante dos preços das casas. A regressão linear pode ser aplicada a vários cenários, como calcular preços de ações em finanças ou determinar a expectativa de vida de pacientes em medicina. As aplicações são inúmeras.

Agora, vamos discutir como realmente realizamos a regressão linear. Precisamos de um algoritmo ou procedimento para encontrar a reta que melhor se ajusta aos pontos. Para simplificar, vamos nos concentrar em um algoritmo básico que envolve fazer pequenos ajustes na linha até que ela se encaixe bem nos pontos.

Aqui está um resumo do algoritmo:

  1. Comece com uma linha aleatória.
  2. Defina a taxa de aprendizado, que determina o tamanho dos ajustes que fazemos.
  3. Repita as etapas a seguir um número especificado de vezes (épocas):
    • Selecione um ponto aleatório.
    • Mova a linha em direção ao ponto com base em sua posição em relação à linha.
  4. Aproveite sua linha ajustada!

Para mover a linha em direção a um ponto, realizamos rotações e translações. Girar a linha no sentido horário ou anti-horário ajusta a inclinação, enquanto transladar a linha para cima ou para baixo ajusta a interceptação y. Os ajustes são feitos adicionando ou subtraindo pequenas quantidades, que são determinadas pela taxa de aprendizado.

Ao repetir esse processo várias vezes, a linha se aproxima gradualmente dos pontos, resultando em um bom ajuste. O número de épocas determina quantas vezes repetimos o processo e pode ser ajustado com base na precisão desejada e nos recursos computacionais disponíveis.

Essa é a ideia básica por trás da regressão linear. É uma ferramenta poderosa para ajustar linhas a pontos de dados e fazer previsões. Espero que esta explicação intuitiva ajude você a entender melhor a regressão linear.

Temos algo mais próximo do ponto principal e há quatro casos a verificar para garantir que o truque do quadrado funcione de maneira eficaz. Vamos examinar outro caso em que o ponto está abaixo da linha e à direita do eixo y. A equação é apresentada novamente. Na primeira etapa, selecionamos uma pequena taxa de aprendizado de 0,01. Na etapa dois, aplicamos essa taxa à inclinação e à interceptação y. Agora, a distância vertical é negativa porque o ponto está abaixo da linha (-4), enquanto a distância horizontal permanece positiva porque o ponto está à direita do eixo y (+5). Para modificar a inclinação, adicionamos 0,01 vezes (-4) vezes 5, resultando em -0,2. Ao subtrair -0,2, diminuímos a inclinação, fazendo com que a linha se mova no sentido horário. Para a interceptação y, adicionamos a taxa de aprendizado vezes a distância vertical, que é 0,01 vezes (-4), resultando em -0,04. A nova equação de linha torna-se y = 1,8 - 0,2x + 2,96 - 0,04. Observe que a inclinação é menor, indicando uma rotação no sentido horário, e a interceptação y é menor, indicando uma translação para baixo. Esse ajuste nos aproxima do ponto. Embora tenhamos verificado apenas dois dos quatro casos, encorajo você a testar todos eles para ver se a etapa dois funciona consistentemente. Finalmente, vamos explorar o algoritmo de regressão linear. O algoritmo prossegui como desejado:

  1. Comece com uma linha aleatória.
  2. Defina o número de repetições (épocas) para 8.000.
  3. Escolha um pequeno comprimento de passo (taxa de aprendizado) de 0,01.
  4. Repita o seguinte loop para o número especificado de épocas:
    • Selecione aleatoriamente um ponto.
    • Ajuste a linha para se mover em direção ao ponto usando a taxa de aprendizagem, distância vertical e distância horizontal.
  5. Aproveite sua linha ajustada. Este é o algoritmo de regressão linear. Encorajo você a codificá-lo usando o pseudocódigo fornecido e testá-lo em diferentes conjuntos de dados para observar seu desempenho. Eu implementei esse algoritmo e descobri que ele funciona excepcionalmente bem.

Agora, surge a pergunta: esse algoritmo é melhor ou igual aos existentes? Essa situação me lembra um matemático brilhante chamado John Borwein, com quem trabalhei certa vez. Ele procurou fórmulas para calcular os dígitos de pi e descobriu que, quando uma fórmula se aproximava muito de pi, era uma situação em que todos saíam ganhando, porque ele descobria uma nova fórmula ou encontrava algo notavelmente próximo de pi. Da mesma forma, com esse algoritmo, temos uma situação ganha-ganha. Ele supera os algoritmos existentes ou prova ser tão eficaz quanto mais simples.

Surpreendentemente, esse algoritmo é exatamente o mesmo usado na regressão linear tradicional, como a descida do gradiente de erro quadrado. A abordagem tradicional envolve minimizar o erro quadrado calculando a distância entre os pontos e a linha e, em seguida, usando derivadas, cálculos e descida de gradiente ou resolvendo sistemas lineares de equações. O desafio que apresento a você é verificar se o truque do quadrado é equivalente ao método tradicional do erro do quadrado, calculando o erro do quadrado, derivando e executando pequenos passos opostos à direção da derivada, assim como a descida do gradiente. Você descobrirá que a derivada da diferença ao quadrado está intimamente relacionada às distâncias vertical e horizontal. Isso demonstra que o truque do quadrado é equivalente à abordagem tradicional.

O segundo desafio refere-se à medição da qualidade ou qualidade de uma linha. Discutimos anteriormente o erro quadrado, que envolve o quadrado das distâncias. Outro método mais simples é o erro absoluto, onde somamos os valores absolutos das distâncias sem considerar seus sinais. A linha ruim tem distâncias laranjas maiores, enquanto a linha boa tem distâncias laranjas menores devido à sua maior proximidade dos pontos. Usando o cálculo, você pode minimizar o erro absoluto e executar etapas de descida de gradiente. Você pode desenvolver um truque absoluto, que lida apenas com a distância horizontal e inclui uma instrução if para lidar com a posição da linha em relação ao ponto. Ao explorar este desafio, você descobrirá o truque absoluto. Sinta-se à vontade para codificá-lo e observar sua eficácia.

Este vídeo enfocou a regressão linear. Lembre-se de que isso faz parte de uma série de três partes que inclui truques para regressão logística e máquinas de vetores de suporte. Fique ligado nos próximos vídeos. Se você gostou deste conteúdo, considere se inscrever, curtir e compartilhar. Agradeço seus comentários, perguntas e sugestões. Deixe-me saber como você se saiu com os desafios e sinta-se à vontade para sugerir tópicos para vídeos futuros. Você também pode entrar em contato comigo no Twitter (@LouisLikesMath). Obrigado, e até o próximo vídeo.

Linear Regression: A friendly introduction
Linear Regression: A friendly introduction
  • 2018.12.22
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytAn introduction to linear regression that req...
 

Regressão Logística e o Algoritmo Perceptron: Uma introdução amigável



Regressão Logística e o Algoritmo Perceptron: Uma introdução amigável

Existe um algoritmo melhor que pode lidar com todos os três casos simultaneamente. Vou explicar agora o truque do perceptron, que cuida desses casos juntos. Vamos considerar uma reta com a mesma equação e um ponto azul que está sobre a reta vermelha. Precisamos ajustar a posição da linha para acomodar este ponto. Para fazer isso, diminuiremos o valor de -6 em uma pequena quantidade, digamos 0,1, o que moverá a linha para cima. Em seguida, ajustaremos a inclinação da linha para girá-la. Por exemplo, se quisermos girar a linha para ficar mais inclinada, podemos reduzir o valor de 2 para 1,8.

Da mesma forma, se o ponto estiver mais longe nessa direção, precisamos girar mais a linha para aproximá-la. Nesse caso, podemos reduzir o valor de 2 para 1,4. No entanto, se o ponto estiver do outro lado, precisamos girar a linha na direção oposta. Então, podemos precisar aumentar o valor de 2, digamos para 2,2. Vamos passar por esse processo novamente com mais precisão. Quando o ponto não está longe do eixo y, diminuímos o valor de -6 em uma pequena quantidade, como 0,01, que move a linha ligeiramente para cima.

Agora, vamos considerar o valor de 2. Se o ponto tiver coordenadas (4, 5), a distância horizontal é 4. Para ajustar a inclinação, podemos multiplicar 4 por uma taxa de aprendizado, digamos 0,04, para reduzir o valor de 2 Isso irá girar a linha em torno de um pivô. Da mesma forma, podemos aplicar o mesmo princípio ao valor de 3. Por exemplo, se o ponto tiver coordenadas (4, 5), a distância vertical é 5. Multiplicando 5 por uma taxa de aprendizado, como 0,05, podemos diminuir o valor de 3. Isso irá girar ainda mais a linha. Finalmente, depois de reduzir 2 em 0,04, 3 em 0,05 e -6 em 0,01, a equação se torna 1,96x + 2,95y - 6,01. Essa técnica, conhecida como truque do perceptron, aborda tanto a direção quanto a magnitude dos ajustes. Para resumir, com uma taxa de aprendizado de 0,01, podemos atualizar a equação na forma de ax + por + c = 0 reduzindo a por uma taxa de aprendizado vezes b, reduzindo b por uma taxa de aprendizado vezes q e reduzindo c por a taxa de Aprendizagem.

No entanto, há mais uma consideração: o caso em que a área azul está na parte superior e a área vermelha está na parte inferior, com pontos classificados incorretamente. Nesse cenário, adicionaríamos os valores em vez de subtraí-los. Por exemplo, se tivermos -2x - 3y + 6 = 0 em vez de 2x + 3y - 6 = 0, adicionaríamos pequenas quantidades a a, b e c. Levando em consideração a localização dos pontos em relação ao eixo y, podemos determinar se devemos aumentar ou diminuir os valores. Agora, vamos passar para o algoritmo de regressão logística, que é uma abordagem ainda melhor.

Não vou entrar em detalhes, mas vou fornecer um esboço e dois desafios para você. O primeiro desafio é chamado de gradiente descendente, que envolve o uso de uma função de erro para medir o desempenho do classificador. O objetivo é minimizar o erro e melhorar o algoritmo usando cálculo. O processo de gradiente descendente é semelhante ao algoritmo perceptron que discutimos anteriormente.

O segundo desafio é escolher uma função de ativação apropriada para a regressão logística. A função de ativação é responsável por transformar a soma ponderada das entradas em um valor de probabilidade entre 0 e 1.

Uma função de ativação comumente usada é a função sigmoide, que tem uma curva em forma de S. Ela mapeia qualquer número real para um valor entre 0 e 1. A função sigmoide é definida como:

σ(z) = 1 / (1 + e^(-z))

Aqui, z representa a soma ponderada das entradas e é calculado como:

z = a x + b y + c

Na regressão logística, o objetivo é encontrar os valores ideais para a, b e c que maximizem a probabilidade dos dados observados. Isso é obtido minimizando uma função de custo, geralmente chamada de função de perda de entropia cruzada.

A função de custo mede a discrepância entre as probabilidades previstas e os rótulos de classe reais. Uma forma comum da função de custo é:

J(a, b, c) = -1/m * Σ(y * log(σ(z)) + (1-y) * log(1-σ(z)))

Nesta equação, m representa o número de exemplos de treinamento, y é o verdadeiro rótulo da classe (0 ou 1) e σ(z) é a probabilidade prevista da classe positiva.

Para minimizar a função de custo, pode-se aplicar gradiente descendente. A ideia por trás da descida do gradiente é atualizar iterativamente os valores dos parâmetros (a, b e c) na direção oposta do gradiente da função de custo em relação a esses parâmetros. Este processo continua até a convergência, onde a função de custo é minimizada.

As equações de atualização para gradiente descendente na regressão logística são semelhantes às do algoritmo perceptron. Usando a taxa de aprendizado (α), as atualizações dos parâmetros são as seguintes:

a := a - α * ∂J/∂ab := b - α * ∂J/∂bc := c - α * ∂J/∂c

As derivadas parciais (∂J/∂a, ∂J/∂b, ∂J/∂c) representam os gradientes da função custo em relação a cada parâmetro. Eles podem ser calculados usando cálculo.

Ao atualizar iterativamente os valores dos parâmetros usando gradiente descendente, a regressão logística pode aprender a classificar os dados com mais flexibilidade em comparação com o algoritmo perceptron. É um algoritmo amplamente utilizado e eficaz para problemas de classificação binária.

Em conclusão, a regressão logística se baseia nos princípios do algoritmo perceptron, mas introduz uma estrutura probabilística e uma função de custo diferente. Ao aplicar gradiente descendente, ele otimiza os parâmetros para maximizar a probabilidade dos dados observados. A escolha da função de ativação sigmoide permite que a regressão logística produza estimativas de probabilidade para membros de classe.

Logistic Regression and the Perceptron Algorithm: A friendly introduction
Logistic Regression and the Perceptron Algorithm: A friendly introduction
  • 2019.01.01
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytAn introduction to logistic regression and th...
 

Support Vector Machines (SVMs): uma introdução amigável



Support Vector Machines (SVMs): uma introdução amigável

Olá, meu nome é Luis Serrano, e esta é uma introdução amigável ao Support Vector Machines, ou abreviado SVM. Este é o terceiro vídeo de uma série de três sobre modelos lineares. Se você ainda não assistiu ao primeiro, ele se chama 'Linear Regression', e o segundo se chama 'Logistic Regression'. Este vídeo se baseia nos conceitos abordados no segundo vídeo.

Em primeiro lugar, gostaria de dar crédito aos alunos da aula de aprendizado de máquina que ministrei na Quest University em British Columbia, Canadá. Eles me ajudaram a desenvolver a ideia-chave para este vídeo e foi uma experiência maravilhosa trabalhar com eles. Na foto, você pode me ver com meu amigo Richard Hoshino, que também é professor da universidade.

Agora, vamos mergulhar no SVM. As Support Vector Machines são um algoritmo de classificação crucial que visa separar pontos de duas classes usando uma linha. No entanto, o SVM vai um passo além para encontrar a melhor linha possível que maximize a separação entre os pontos. Normalmente, o SVM é explicado em termos de otimização linear ou descida de gradiente. Mas neste vídeo, apresentarei um método que não encontrei na literatura, que chamo de 'método dos pequenos passos'. É uma abordagem iterativa em que melhoramos continuamente a capacidade de classificação da linha.

Para começar, vamos recapitular o vídeo anterior sobre regressão logística e o algoritmo perceptron. Nesse vídeo, procuramos encontrar uma linha que separa os dados em duas classes: pontos vermelhos e pontos azuis. O algoritmo perceptron começa com uma linha aleatória e a ajusta iterativamente com base no feedback dos pontos. O algoritmo faz pequenos passos para melhorar gradualmente a capacidade da linha de classificar os pontos corretamente.

Agora, vamos apresentar a etapa extra no SVM. Em vez de encontrar apenas uma linha, pretendemos encontrar duas linhas paralelas que estejam o mais distantes possível enquanto ainda separam efetivamente os dados. Para ilustrar isso, imagine dois conjuntos de linhas paralelas, equidistantes da linha principal. O objetivo é maximizar a distância entre essas duas linhas. Quanto maior a separação, melhor a classificação.

Em seguida, precisamos treinar o algoritmo para selecionar a melhor linha. Conseguimos isso multiplicando as equações de linha por diferentes constantes. Ao fazer isso, podemos controlar a distância entre as linhas. Uma constante maior resulta em uma separação mais ampla, enquanto uma constante menor aproxima as linhas. Desta forma, podemos encontrar as linhas ótimas que maximizam a distância.

Para separar linhas usando equações, vamos considerar um exemplo de equação: 2x + 3y - 6 = 0. Multiplicar essa equação por um fator constante não altera a linha em si, mas afeta a distância entre as linhas. Podemos ajustar essa constante para expandir ou contrair as linhas.

Para formalizar o algoritmo SVM, incorporamos a taxa de expansão, que determina o tamanho do passo para separar as linhas. Ao multiplicar as equações de linha com um valor próximo de 1, como 0,99, aumentamos gradualmente a distância entre as linhas a cada iteração.

Em resumo, o algoritmo SVM segue estas etapas:

  1. Comece com uma linha aleatória e duas linhas paralelas equidistantes.
  2. Aplique o algoritmo perceptron para ajustar a posição da linha com base no feedback do ponto.
  3. Introduza a taxa de expansão para separar ligeiramente as linhas.
  4. Repita essas etapas iterativamente para encontrar as linhas ideais que maximizam a separação.

Esta é uma breve visão geral do algoritmo SVM e como ele incorpora o método de pequenos passos para melhorar a classificação. É uma técnica eficaz para resolver problemas de classificação e espero que este vídeo forneça uma perspectiva única sobre SVM.

Agora vamos considerar outro aspecto que contribui para o erro em nosso modelo. Este aspecto é baseado na distância entre duas linhas. Para demonstrar isso, vamos examinar duas máquinas de vetores de suporte (SVMs) que classificam um conjunto de dados. O primeiro SVM possui linhas mais largas, mas classifica incorretamente um ponto, enquanto o segundo SVM possui linhas estreitas, mas classifica todos os pontos corretamente. A questão é, qual é melhor? A resposta depende de vários fatores, como o conjunto de dados, o modelo e o cenário. No entanto, podemos analisar isso usando funções de erro.

Vamos relembrar o cálculo do erro no algoritmo perceptron. Quando um ponto é classificado corretamente, o erro é zero. Se um ponto for classificado incorretamente, o erro dependerá de sua distância do limite. Os pontos mais próximos do limite têm erros menores, enquanto os mais distantes têm erros maiores. Queremos uma função de erro que capture essa relação de distância. Da mesma forma, no SVM, temos dois erros de classificação: o erro de classificação azul e o erro de classificação vermelho. Cada erro mede a distância de um ponto mal classificado até seu respectivo limite. Somando essas distâncias, obtemos o erro de classificação.

Adicionalmente, temos o erro de margem, que indica a proximidade das linhas. Um erro de margem maior implica que as linhas estão mais próximas, enquanto um erro de margem menor sugere que as linhas estão mais afastadas. Queremos que nosso modelo tenha um pequeno erro de margem, indicando linhas largas. Assim, quanto menor o erro, melhor é o nosso modelo. Curiosamente, o erro de margem se assemelha ao termo de regularização na regularização L2.

Para resumir, o erro SVM consiste no erro de classificação e no erro de margem. O erro de classificação mede o número de pontos classificados incorretamente e a extensão da classificação incorreta. O erro de margem indica a distância entre as linhas. Esses dois erros juntos formam o erro total do SVM. Nosso objetivo é minimizar esse erro usando gradiente descendente, semelhante ao truque SVM de ajustar a posição e a separação das linhas.

Voltando à comparação dos dois modelos, o da esquerda tem um grande erro de classificação, mas um pequeno erro de margem, pois as linhas estão distantes. O modelo à direita, por outro lado, tem um pequeno erro de classificação, mas um grande erro de margem devido à proximidade das linhas. Decidir qual modelo é melhor depende de nossas preferências e requisitos. Podemos usar o parâmetro C, um hiperparâmetro, para controlar a importância do erro de classificação em relação ao erro de margem. Um C pequeno enfatiza o erro de margem, resultando em um modelo como o da esquerda, enquanto um C grande prioriza o erro de classificação, levando a um modelo semelhante ao da direita.

É importante observar que a escolha dos hiperparâmetros pode ser determinada por meio de experimentação e teste de diferentes valores para avaliar o desempenho do modelo. Os hiperparâmetros desempenham um papel crucial nos algoritmos de aprendizado de máquina e nos permitem ajustar nossos modelos.

Obrigado por sua atenção ao longo desta série de vídeos sobre modelos lineares. Espero que você tenha achado informativo e agradável. Fique a vontade para curtir, compartilhar e comentar. Seu feedback é apreciado. Fique ligado para mais vídeos no futuro.

Support Vector Machines (SVMs): A friendly introduction
Support Vector Machines (SVMs): A friendly introduction
  • 2019.01.27
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytAn introduction to support vector machines (S...
 

Denoising e Autoencoders variacionais



Denoising e Autoencoders variacionais

Olá, sou Luis Serrano e, neste vídeo, falaremos sobre autoencoders. Especificamente, vamos nos concentrar em autoencoders de redução de ruído e variacionais.

Autoencoders são modelos de geradores populares e fazem parte de uma série que inclui redes adversárias generativas e máquinas Boltzmann restritas. Se você gosta de modelos de geradores, não deixe de conferir os links nos comentários.

Para entender os autoencoders, vamos imaginar que você queira compreender um livro, então você pede a sua amiga inteligente Aisha para resumir para você. O trabalho de Aisha é condensar o livro em poucas páginas para facilitar sua compreensão. Em seguida, avaliamos a qualidade do resumo de Aisha pedindo à nossa outra amiga, Berta, que reescrevesse o livro inteiro com base no resumo de Aisha. Comparamos o livro reescrito de Berta com o livro original para avaliar seu desempenho.

Idealmente, Aisha resumiria as ideias principais do livro com a maior precisão possível, e Berta se destacaria em reconstruir o livro com base nessas ideias. Ao forçar Aisha e Berta a condensar e reconstruir o livro, respectivamente, elas obtêm uma compreensão profunda de seu conteúdo. Este conceito é a base dos autoencoders. Eles simplificam significativamente os dados e depois os reconstroem, extraindo os recursos mais úteis do processo.

Autoencoders são algoritmos de redução de dimensionalidade e fazem parte do aprendizado de máquina não supervisionado. No contexto de conjuntos de dados da vida real, vamos considerar um conjunto de dados de imagens faciais. Cada imagem é codificada usando vários números para representar a cor de cada pixel. Aisha, agora chamada de codificadora, resume esse conjunto de dados extraindo recursos como tamanho dos olhos, cor do cabelo e outras características faciais. Esses recursos são passados para Berta, o decodificador, que ajuda a reconstruir os rostos a partir desses recursos extraídos.

A dimensão de um ponto de dados refere-se ao número de números necessários para codificá-lo. Nesse caso, reduzimos a dimensionalidade do conjunto de dados da imagem facial resumindo-a em um conjunto menor de recursos e, em seguida, aumentamos novamente durante o processo de reconstrução.

Os codificadores automáticos consistem em duas partes: um codificador que reduz os dados e um decodificador que os expande novamente. O objetivo é que a saída reconstruída se assemelhe à entrada original. Os dados reduzidos ou simplificados são conhecidos como espaço latente, que resume e compacta os dados para fornecer insights valiosos.

Dois tipos importantes de autoencoders são autoencoders de redução de ruído e autoencoders variacionais. Autoencoders de redução de ruído são treinados para obter dados corrompidos, como imagens com ruído, e gerar versões claras e nítidas dessas imagens. Os autoencoders variacionais, por outro lado, são treinados para gerar novos dados selecionando amostras de um espaço latente simplificado, que representa uma versão de dimensão inferior do espaço de dados original.

Autoencoders variacionais são particularmente eficazes na geração de imagens de alta resolução, como espaços. No vídeo, você pode encontrar amostras de faces geradas por um autoencoder variacional.

O principal conceito a ser compreendido antes de mergulhar nos autoencoders é a redução de dimensionalidade. Para ilustrar esse conceito, vamos considerar um exemplo de conjunto de dados de imagens. Essas imagens são imagens simples de 2x2 pixels, com cada pixel tendo uma cor diferente: vermelho, azul, amarelo e verde. Cada pixel tem um valor de intensidade que varia de 0 a 1, onde 1 representa a intensidade total da cor e 0 representa o branco.

Cada ponto de dados neste conjunto de dados é descrito por quatro valores de intensidade, correspondentes às quatro cores. No entanto, observando mais de perto, notamos uma propriedade peculiar: as intensidades dos pixels nos cantos superior direito e inferior esquerdo são sempre as mesmas, assim como as intensidades dos pixels nos cantos superior esquerdo e inferior direito. Isso significa que não precisamos mais codificar todos os quatro valores de intensidade independentemente. Em vez disso, podemos representar cada ponto de dados com apenas dois valores: a intensidade dos pixels superior esquerdo e inferior direito.

Ao fazer isso, reduzimos a dimensionalidade do nosso conjunto de dados de quatro para dois. Essa redução nos permite capturar as informações essenciais das imagens enquanto descarta recursos redundantes ou correlacionados. Também simplifica a representação de dados e pode ajudar em várias tarefas, como visualização, armazenamento e análise.

Autoencoders usam um princípio similar de redução de dimensionalidade, mas de uma maneira mais sofisticada e aprendida. Em vez de selecionar manualmente quais recursos manter ou descartar, os autoencoders aprendem a extrair automaticamente os recursos mais informativos dos dados de entrada.

Vamos nos aprofundar na arquitetura e no processo de treinamento dos autoencoders. Como mencionado anteriormente, os autoencoders consistem em um codificador e um decodificador.

O codificador pega os dados de entrada, como uma imagem, e aplica uma série de transformações para codificá-los em uma representação de dimensão inferior, conhecida como espaço latente. O espaço latente é uma representação comprimida dos dados de entrada, capturando suas características mais importantes.

O decodificador pega a representação do espaço latente e aplica as transformações reversas para reconstruir os dados de entrada originais o mais próximo possível. O objetivo é minimizar a diferença entre os dados de entrada e a saída reconstruída, aprendendo efetivamente uma representação comprimida que possa reproduzir fielmente a entrada.

Para treinar um autoencoder, precisamos de um conjunto de dados de entrada para o qual temos as amostras originais e suas saídas de destino correspondentes. Durante o treinamento, o autoencoder aprende a minimizar o erro de reconstrução, que normalmente é medido usando uma função de perda, como erro quadrático médio (MSE) ou entropia cruzada binária.

O processo de treinamento envolve alimentar os dados de entrada por meio do codificador para obter a representação do espaço latente. Então, a representação do espaço latente é passada pelo decodificador para reconstruir os dados. A reconstrução é comparada com a entrada original, e a discrepância entre eles é usada para atualizar os pesos do codificador e do decodificador por meio de retropropagação e descida de gradiente.

Ao treinar iterativamente o autoencoder em um grande conjunto de dados, ele aprende gradualmente a extrair os recursos mais importantes dos dados de entrada e se torna capaz de reconstruí-los com perda mínima.

Autoencoders de redução de ruído e autoencoders variacionais são duas variações populares da arquitetura básica do autoencoder.

Autoencoders de redução de ruído são projetados especificamente para lidar com dados de entrada com ruído ou corrompidos. Durante o treinamento, o autoencoder recebe dados de entrada que foram intencionalmente corrompidos, como adição de ruído aleatório ou introdução de distorções. O autoencoder então aprende a reduzir o ruído da entrada, reconstruindo os dados originais e limpos com a maior precisão possível. Esta capacidade de redução de ruído permite que o autoencoder aprenda representações robustas que são mais resilientes ao ruído.

Autoencoders variacionais (VAEs) adotam uma abordagem diferente ao incorporar modelagem probabilística na estrutura do autoencoder. Os VAEs visam aprender um espaço latente que segue uma distribuição de probabilidade específica, como uma distribuição gaussiana. Isso permite que os VAEs gerem novos pontos de dados por amostragem da distribuição aprendida no espaço latente.

O treinamento de VAEs envolve não apenas minimizar o erro de reconstrução, mas também maximizar a probabilidade da distribuição do espaço latente corresponder à distribuição desejada. Isso é obtido por meio de uma combinação de perda de reconstrução e um termo de regularização chamado divergência de Kullback-Leibler (KL), que mede a diferença entre a distribuição aprendida e a distribuição desejada.

Ao otimizar a perda de reconstrução e a divergência KL simultaneamente, os VAEs aprendem a gerar novas amostras de dados que exibem características semelhantes aos dados de treinamento enquanto exploram a diversidade do espaço latente aprendido.

Autoencoders são poderosos modelos de aprendizado não supervisionados que podem aprender representações compactas de dados de entrada. Eles consistem em um codificador e um decodificador que trabalham juntos para compactar e reconstruir os dados. Autoencoders de redução de ruído e autoencoders variacionais são duas variações notáveis que estendem a arquitetura básica do autoencoder e oferecem recursos adicionais, como redução de ruído e modelagem generativa.

Vamos examinar alguns exemplos adicionais nesta seção. O primeiro exemplo que temos aqui parece ser uma imagem totalmente colorida, exceto pelo pixel verde no canto inferior direito, que tem um valor de 0,2. O codificador de redução de ruído é capaz de colorir toda a imagem para nós. A seguir, temos outro exemplo de imagem branca, exceto pelo pixel azul com valor de 0,8 no canto superior direito. O codificador neocenter determina que a imagem deve ser branca e transforma o pixel azul em branco. Encorajo você a explorar o repositório e experimentar suas próprias imagens para ver os resultados. Em resumo, esses codificadores externos forçam qualquer imagem a se parecer com uma das imagens no conjunto de dados treinado.

Os outros codificadores que usamos até agora tinham apenas uma camada, mas é importante observar que nem sempre é esse o caso nas redes neurais. Os codificadores podem ter várias camadas e arquiteturas complexas, como camadas convolucionais ou recorrentes. Aqui está um exemplo de um codificador convolucional usado para reduzir o ruído de imagens de caracteres manuscritos no conjunto de dados MNIST. Como você pode ver, esses tipos de codificadores automáticos de remoção de ruído funcionam bem na limpeza de imagens com ruído.

Agora, vamos passar para outra propriedade fascinante dos autoencoders. Eles têm a capacidade de gerar pontos de dados totalmente novos, como novas imagens. Essas imagens geradas não são meras cópias das imagens no conjunto de dados, mas imagens completamente novas e únicas que se assemelham às do conjunto de dados. Esta capacidade é verdadeiramente notável. Por exemplo, um autoencoder pode gerar o rosto de uma pessoa que não existe ou um dígito manuscrito que nunca foi desenhado antes. Para gerar essas novas imagens, precisamos apenas focar no decodificador e esquecer o codificador. O decodificador pega um conjunto de números, chamado de representação latente, e gera uma imagem com base nesses números. Este processo fornece uma representação visual do espaço latente.

Para ilustrar isso, vamos considerar um exemplo. Suponha que inserimos os números 0,3 e 0,8 no decodificador. Gera uma imagem com intensidades de 0,12 e 0,95. Podemos visualizar o espaço latente como um quadrado, onde o eixo horizontal corresponde à diagonal vermelho-verde e o eixo vertical corresponde à diagonal azul-amarela da imagem. Cada ponto desse quadrado representa uma imagem e, à medida que avançamos para a direita, a intensidade da diagonal vermelho-verde aumenta. Da mesma forma, conforme nos movemos de baixo para cima, a intensidade da diagonal azul-amarela aumenta. Essa visualização permite entender o espaço latente e sua relação com as imagens geradas.

No espaço latente, podemos selecionar qualquer ponto uniformemente, o que equivale a escolher dois números e passá-los pelo decodificador. Esse processo nos permite gerar qualquer uma dessas imagens com a mesma probabilidade. No entanto, em alguns casos, podemos apenas querer gerar imagens específicas que existem no conjunto de dados, excluindo outras. Essa situação é comum quando o espaço latente é grande e contém ruído, com apenas uma pequena parcela representando as imagens desejadas. Para resolver isso, podemos usar uma técnica chamada autoencoders variacionais.

No caso de autoencoders variacionais, treinamos duas distribuições normais que nos permitem selecionar pontos com grande probabilidade de estar dentro de uma região específica de interesse. Por exemplo, se tivermos uma pequena região oval no espaço latente onde existem as imagens desejadas, queremos que o autoencoder gere imagens dentro ou próximas dessa região com maior probabilidade do que o resto do espaço. Conseguimos isso treinando duas distribuições normais, uma para cada coordenada no espaço latente. Essas distribuições nos permitem selecionar pontos que provavelmente estarão no centro da região desejada. Ao usar esses pontos selecionados como representação latente e passá-los pelo decodificador, podemos gerar imagens mais focadas e alinhadas com nossos critérios desejados.

O processo de treinamento para autoencoders variacionais envolve a otimização de dois objetivos simultaneamente: a perda de reconstrução e a perda de regularização. A perda de reconstrução mede o quão bem as imagens geradas correspondem às imagens de entrada, semelhante aos autoencoders tradicionais. A perda de regularização, muitas vezes chamada de divergência de Kullback-Leibler (KL), encoraja a distribuição latente a se assemelhar a uma distribuição anterior conhecida, normalmente uma distribuição normal padrão.

A adição da perda de regularização introduz um trade-off durante o treinamento. Por um lado, queremos que as imagens reconstruídas se assemelhem às imagens de entrada, o que é obtido minimizando a perda de reconstrução. Por outro lado, queremos que a distribuição latente corresponda à distribuição anterior, promovendo a geração de imagens diversas e realistas. Equilibrar esses objetivos é crucial para garantir que o modelo capture as características importantes dos dados enquanto ainda permite criatividade e novidade nas imagens geradas.

Depois que o autoencoder variacional é treinado, podemos amostrar pontos da distribuição anterior (geralmente uma distribuição normal padrão) e passá-los pelo decodificador para gerar novas imagens. Ao controlar o processo de amostragem, podemos explorar diferentes regiões do espaço latente e gerar diversas variações dos dados de entrada.

Os autoencoders variacionais têm sido amplamente utilizados em várias aplicações, como geração de imagem, geração de texto e detecção de anomalias. Eles fornecem uma estrutura poderosa para aprender e gerar distribuições de dados complexos, permitindo o controle sobre a saída gerada.

Em resumo, os autoencoders, incluindo autoencoders de redução de ruído e variacionais, oferecem recursos fascinantes no processamento e geração de imagens. Eles podem remover o ruído das imagens, reconstruir partes que faltam e gerar imagens totalmente novas e únicas. Os autoencoders de redução de ruído aproveitam uma arquitetura de codificador-decodificador para aprender a estrutura subjacente dos dados, enquanto os autoencoders variacionais adicionam modelagem probabilística para capturar diversas variações na saída gerada. Essas técnicas revolucionaram o campo do aprendizado não supervisionado e encontraram extensas aplicações em pesquisa de visão computacional e inteligência artificial.

Denoising and Variational Autoencoders
Denoising and Variational Autoencoders
  • 2022.01.15
  • www.youtube.com
A video about autoencoders, a very powerful generative model. The video includes:Intro: (0:25)Dimensionality reduction (3:35)Denoising autoencoders (10:50)Va...
 

Árvores de decisão - Uma introdução amigável



Árvores de decisão - Uma introdução amigável

Bem-vindo à Academia Serrano! Neste vídeo, discutiremos as árvores de decisão, que são modelos de aprendizado de máquina altamente populares. As árvores de decisão são eficazes em cenários da vida real e são intuitivas de entender. Eles imitam a maneira como os humanos tomam decisões, tornando-os fáceis de interpretar.

Para ilustrar como as árvores de decisão funcionam, vamos usar um exemplo de sistema de recomendação. Imagine que você precisa decidir se deve usar uma jaqueta pela manhã. Você pode começar verificando se está chovendo lá fora. Se estiver chovendo, usar uma jaqueta é uma escolha clara. Mas se não estiver chovendo, você pode considerar ainda mais a temperatura. Se estiver frio, você usará uma jaqueta, se estiver quente, não. Este processo de decisão pode ser representado como uma árvore de decisão, onde cada decisão torna-se um nó e as opções disponíveis tornam-se arestas que conduzem a novos nós ou decisões finais.

Pode haver várias árvores de decisão para um determinado problema. Por exemplo, outra árvore de decisão pode envolver verificar se é segunda-feira, a cor do seu carro e se você tomou café naquele dia. No entanto, nem todas as árvores de decisão são igualmente eficazes. A primeira árvore de decisão que discutimos parece funcionar bem, enquanto a segunda inclui nós irrelevantes. Encontrar a melhor árvore de decisão é o objetivo do aprendizado de máquina. O aprendizado de máquina nos ajuda a descobrir a árvore de decisão que melhor se ajusta aos dados. Vamos explorar um exemplo para entender esse processo.

Considere um pequeno conjunto de dados de um sistema de recomendação para aplicativos com base na demografia do usuário. O conjunto de dados inclui colunas para sexo, idade e o aplicativo baixado. Queremos formular uma regra para recomendar aplicativos para futuros usuários com base neste conjunto de dados. Ao analisar os dados, podemos observar tendências. Por exemplo, todos os jovens no conjunto de dados baixaram o TikTok, então é razoável recomendar o TikTok para uma mulher de 16 anos. Da mesma forma, se observarmos que as mulheres na faixa dos 30 anos baixam principalmente o YouTube, podemos recomendar o YouTube para uma mulher de 30 anos. Seguindo essa abordagem, podemos fazer recomendações para diferentes usuários com base em suas informações demográficas.

A intuição por trás das árvores de decisão se alinha com os princípios matemáticos usados no aprendizado de máquina. As árvores de decisão podem lidar com dados categóricos e numéricos. Para dados numéricos, determinamos o melhor ponto de divisão avaliando diferentes possibilidades. Cada ponto de divisão cria um toco de decisão e comparamos a precisão desses tocos para encontrar o melhor. Depois de encontrar a melhor divisão, podemos continuar construindo a árvore de decisão iterando o processo nos subconjuntos de dados resultantes. Esse processo iterativo nos permite construir árvores de decisão maiores.

As árvores de decisão são modelos poderosos de aprendizado de máquina que fornecem previsões precisas e são fáceis de interpretar. Eles imitam os processos humanos de tomada de decisão e podem ser treinados em vários tipos de dados. Ao encontrar a melhor árvore de decisão para um problema específico, podemos fazer recomendações ou previsões eficazes com base em dados fornecidos.

Decision trees - A friendly introduction
Decision trees - A friendly introduction
  • 2022.09.29
  • www.youtube.com
A video about decision trees, and how to train them on a simple example.Accompanying blog post: https://medium.com/@luis.serrano/splitting-data-by-asking-que...
 

Uma introdução amigável ao Teorema de Bayes e Modelos Ocultos de Markov



Uma introdução amigável ao Teorema de Bayes e Modelos Ocultos de Markov

Olá, bem-vindo a uma introdução ao teorema de base e aos modelos ocultos de Markov. Sou Luis Serrano da Udacity, onde ministro cursos de machine learning e inteligência artificial. Nesse cenário, temos dois amigos chamados Alice e Bob que moram distantes e se comunicam por telefone. O humor de Bob muda de acordo com o clima. Se está ensolarado, Bob está feliz, e se está chovendo, Bob está mal-humorado. Alice pode inferir o clima pelo humor de Bob.

Vamos tornar o cenário mais complicado. Bob fica feliz principalmente quando está ensolarado, mas há exceções. Ele fica mal-humorado quando está chuvoso, mas também há exceções. Calculamos probabilidades com base em dados anteriores. Quando está ensolarado, Bob fica feliz com 80% de probabilidade e mal-humorado com 20% de probabilidade. Quando está chovendo, Bob fica mal-humorado com 60% de probabilidade e feliz com 40% de probabilidade.

Agora, vamos considerar uma situação específica. Bob diz a Alice que esta semana foi uma montanha-russa emocional. Na segunda-feira ele estava feliz, na terça-feira ele estava mal-humorado, na quarta-feira ele estava feliz novamente, na quinta-feira ele estava mal-humorado e na sexta-feira ele estava feliz. Alice tenta inferir o tempo com base no humor de Bob.

Para determinar a probabilidade dessa sequência de humores, usamos um modelo oculto de Markov. Tem observações (humor de Bob) e estados ocultos (o clima). Calculamos probabilidades de transição (a probabilidade de ir de um estado para outro) e probabilidades de emissão (a probabilidade de observações serem emitidas dos estados ocultos).

Neste vídeo, responderemos a quatro perguntas. Primeiro, como calculamos essas probabilidades? Em segundo lugar, qual é a probabilidade de um dia aleatório ser ensolarado ou chuvoso, independentemente do humor de Bob? Terceiro, se Bob está feliz hoje, qual é a probabilidade de que esteja ensolarado ou chuvoso? E quarto, se Bob está feliz por três dias consecutivos, qual é o clima mais provável?

Podemos calcular as probabilidades analisando dados passados. Contamos as ocorrências de certos padrões climáticos e o humor de Bob para estimar as probabilidades. Com dados suficientes, podemos obter boas estimativas das probabilidades reais.

Para determinar a probabilidade de um dia aleatório ser ensolarado ou chuvoso, independentemente do humor de Bob, podemos contar as ocorrências de dias ensolarados e chuvosos nos dados passados ou usar as probabilidades de transição. Nesse caso, descobrimos que há 2/3 de probabilidade de estar ensolarado e 1/3 de probabilidade de chover.

Se Bob está feliz hoje, as probabilidades de sol e chuva mudam. Usamos o teorema de Bayes para atualizar as probabilidades. Por exemplo, se Bob está feliz e é quarta-feira, consideramos as probabilidades a priori (2/3 de sol e 1/3 de chuva) e as probabilidades de emissão (80% de sol e 20% de mau humor quando de sol, 40% de feliz e 60% de mau humor quando chuvoso). Usando o teorema de Bayes, calculamos as probabilidades posteriores (8/10 ensolarado e 2/10 chuvoso).

Essas probabilidades nos permitem inferir o clima com base no humor de Bob. Se Bob está feliz, é mais provável que seja ensolarado. Se Bob está mal-humorado, é mais provável que seja chuvoso. As probabilidades mudam com base nas novas informações.

Usamos modelos ocultos de Markov e o teorema de Bayes para inferir o clima a partir do humor de Bob. Ao analisar dados passados, calculamos probabilidades de transição e probabilidades de emissão. Isso nos ajuda a determinar a probabilidade de certos padrões climáticos com base no humor de Bob.

A friendly introduction to Bayes Theorem and Hidden Markov Models
A friendly introduction to Bayes Theorem and Hidden Markov Models
  • 2018.03.27
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytA friendly introduction to Bayes Theorem and ...
 

Entropia de Shannon e ganho de informação



Entropia de Shannon e ganho de informação

Olá, sou Louie Serrano e estou aqui com Shannon para falar sobre entropia e ganho de informação. Se você estiver interessado em uma explicação mais detalhada, escrevi uma postagem no blog sobre esse tópico. Você pode encontrar o link na seção de comentários.

Vamos começar apresentando o conceito de entropia, que tem origem na física. Podemos ilustrá-lo usando os três estados da água: sólido (gelo), líquido (água) e gás (vapor d'água). Cada estado tem um nível diferente de entropia, que mede a velocidade com que as partículas dentro de um objeto estão se movendo. O gelo tem baixa entropia porque suas partículas se movem lentamente, tornando-o uma substância estável. A água tem entropia média, pois as partículas se movem um pouco mais rápido. O vapor de água tem alta entropia porque as partículas dentro dele se movem muito rapidamente.

A entropia não é apenas um conceito na física, mas também aparece na matemática, particularmente na teoria da probabilidade. Para demonstrar isso, vamos considerar um exemplo com três baldes, cada um contendo bolas de cores diferentes. O balde 1 tem quatro bolas vermelhas, o balde 2 tem três bolas vermelhas e uma azul e o balde 3 tem duas bolas vermelhas e duas azuis. Com base na intuição, podemos inferir que o Balde 1 possui baixa entropia, o Balde 2 possui média entropia e o Balde 3 possui alta entropia.

Para validar nossa intuição, podemos medir a entropia examinando o quanto podemos reorganizar o conjunto de bolas em cada balde. No primeiro set, com quatro bolas vermelhas, o rearranjo é limitado, pois todas as bolas são indistinguíveis em termos de cor. Para o segundo set, podemos reorganizar as bolas de algumas maneiras. Finalmente, para o terceiro set, temos ainda mais arranjos possíveis. Podemos calcular o número de arranjos usando o coeficiente binomial, que fornece uma medida quantitativa de entropia. Com base no grau de rearranjo possível, podemos confirmar que o balde 1 tem baixa entropia, o balde 2 tem entropia média e o balde 3 tem alta entropia.

No entanto, existe uma maneira mais precisa de determinar a entropia com base nas informações. Vamos imaginar jogar um jogo com esses baldes. Começamos com um determinado arranjo de bolas e as desenhamos aleatoriamente, tentando reproduzir a sequência exata do arranjo original. Se tivermos sucesso, ganhamos uma quantia significativa de dinheiro. Caso contrário, não ganhamos nada. Agora, surge a pergunta: qual balde é o melhor para jogar e qual é o pior?

Refletindo, percebemos que o Balde 1 é a melhor escolha, pois todas as bolas são vermelhas, facilitando a reprodução da sequência original. O Balde 2 é a escolha média, pois contém uma mistura de bolas vermelhas e azuis, e o Balde 3 é a pior escolha, pois não temos ideia de qual cor iremos desenhar. Podemos calcular a probabilidade de ganhar em cada jogo considerando a probabilidade de retirar uma bola específica do balde. Para o Balde 1, a probabilidade de ganhar é de 100%, pois todas as bolas são vermelhas. Para o Balde 2, a probabilidade é menor devido à presença de bolas azuis, e para o Balde 3, é a menor, pois há uma chance igual de tirar bolas vermelhas ou azuis.

Agora, vamos resumir as probabilidades e seus níveis de entropia correspondentes em uma tabela. Podemos observar que o Balde 1 tem alta probabilidade de ganhar, resultando em baixa entropia. O balde 2 tem uma probabilidade moderada, indicando entropia média. Por fim, o Balde 3 tem a menor probabilidade de ganhar, levando a uma alta entropia.

Para estabelecer uma fórmula para a entropia, podemos utilizar o conceito de logaritmos. Em vez de lidar com produtos, podemos convertê-los em somas usando logaritmos. O logaritmo de um produto é igual à soma dos logaritmos. Tomando o logaritmo do produto de probabilidades, podemos transformá-lo em uma soma de probabilidades individuais. Esta transformação nos permite calcular a entropia como o conteúdo médio de informação ou incerteza associada a um evento.

A fórmula da entropia é dada por:

Entropia = - (p1 * log(p1) + p2 * log(p2) + ... + pn * log(pn))

onde p1, p2, ..., pn representam as probabilidades de diferentes resultados ou estados. A função logarítmica (normalmente com base 2) é usada para explicar a natureza exponencial da informação.

Aplicando esta fórmula ao nosso exemplo, vamos calcular a entropia para cada balde. No Balde 1, onde todas as bolas são vermelhas, a probabilidade de sair uma bola vermelha é 1 (100%). Assim, a entropia para o Balde 1 é:

Entropia(Balde 1) = - (1 * log2(1)) = 0

Como o logaritmo de 1 é 0, a entropia é 0, indicando ausência de incerteza ou ganho de informação.

Para o Balde 2, há três bolas vermelhas e uma bola azul. A probabilidade de tirar uma bola vermelha é de 3/4, enquanto a probabilidade de tirar uma bola azul é de 1/4. Portanto, a entropia para o balde 2 é:

Entropia(Balde 2) = - (3/4 * log2(3/4) + 1/4 * log2(1/4))

Calculando os valores, obtemos:

Entropia(Balde 2) ≈ 0,811

Este valor representa um nível moderado de incerteza ou ganho de informação.

Passando para o Balde 3, onde há duas bolas vermelhas e duas bolas azuis, a probabilidade de sair uma bola vermelha ou uma bola azul é 1/2 cada. Assim, a entropia para o balde 3 é:

Entropia(Balde 3) = - (1/2 * log2(1/2) + 1/2 * log2(1/2))

Simplificando a expressão, encontramos:

Entropia(Balde 3) = - (1/2 * (-1) + 1/2 * (-1)) = 1

A entropia para o Balde 3 é 1, indicando o nível mais alto de incerteza ou ganho de informação.

A entropia quantifica o nível de incerteza ou informação em um sistema. Usando o conceito de probabilidades, podemos calcular a entropia como o conteúdo médio de informação associado a diferentes resultados. Valores de entropia mais altos indicam maior incerteza, enquanto valores de entropia mais baixos indicam menos incerteza ou resultados mais previsíveis. Compreender a entropia e o ganho de informação é valioso em vários campos, incluindo teoria da informação, aprendizado de máquina e análise de dados, pois nos permite medir e analisar a complexidade e a previsibilidade dos sistemas.

Shannon Entropy and Information Gain
Shannon Entropy and Information Gain
  • 2017.11.04
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytAccompanying blog post: https://medium.com/p/...
 

Classificador Naive Bayes: Uma abordagem amigável



Classificador Naive Bayes: Uma abordagem amigável

Olá, sou Luis Serrano, e neste vídeo vamos explorar o classificador Naive Bayes. Sua base de conhecimento é crucial em probabilidade e incrivelmente útil em aprendizado de máquina. Em vez de vê-la como uma fórmula complexa envolvendo razões de probabilidade, vamos pensar nela como a probabilidade de um evento acontecer dado que temos informações sobre outro evento. Naive Bayes estende esse conceito fazendo suposições ingênuas para simplificar a matemática ao lidar com vários eventos.

Para ilustrar, vamos construir um detector de spam. Começamos com um conjunto de dados de 100 e-mails, onde 25 são spam e 75 não são. Nosso objetivo é identificar propriedades que se correlacionam com e-mails de spam. Vamos nos concentrar na palavra "comprar". Entre os e-mails de spam, 20 contêm "compre", enquanto 5 e-mails não-spam o contêm. Com base nisso, podemos concluir que, se um e-mail contém "compre", há 80% de chance de ser spam.

Agora, vamos considerar outra palavra, "barato". Entre os e-mails de spam, 15 têm "barato" e entre os não-spam, 10 têm. Se um e-mail contiver "barato", há 60% de chance de ser spam.

Mas e se quisermos analisar "comprar" e "barato" juntos? Entre os e-mails de spam, 12 contêm as duas palavras, não havendo instâncias dessa combinação entre os e-mails não-spam. Se um e-mail contiver "comprar" e "barato", é 100% provável que seja spam. No entanto, uma certeza de 100% parece muito forte e irreal para um classificador.

O problema surge porque não encontramos instâncias de e-mails não spam com "comprar" e "barato". Para resolver isso, poderíamos coletar mais dados, mas vamos explorar uma solução alternativa. Podemos fazer suposições para estimar a ocorrência de tais casos. Vamos supor que 0,5% dos e-mails contenham "comprar" e "barato". Essa suposição é baseada nas porcentagens de ocorrências de "comprar" e "barato" em nosso conjunto de dados.

Agora, com essa suposição, podemos calcular a probabilidade de um e-mail ser spam se contiver "comprar" e "barato". Aplicando o teorema de Bayes, descobrimos que a probabilidade é de aproximadamente 94,737%.

O classificador Naive Bayes envolve o preenchimento de uma tabela com dados. No entanto, quando certos eventos são muito esparsos no conjunto de dados, fazemos a suposição ingênua de que os eventos são independentes. Essa suposição simplifica os cálculos, mesmo que não seja verdadeira na realidade. Fazendo essas suposições, podemos estimar as probabilidades e construir um classificador de spam.

Naive Bayes classifier: A friendly approach
Naive Bayes classifier: A friendly approach
  • 2019.02.10
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytA visual description of Bayes' Theorem and th...
 

A distribuição Beta em 12 minutos!



A distribuição Beta em 12 minutos!

Olá, sou Luis Serrano, e neste vídeo vamos explorar o tema das distribuições beta. As distribuições beta são um conceito essencial em probabilidade e estatística, pois modelam a probabilidade de uma probabilidade. Vamos mergulhar mais fundo neste assunto fascinante.

Para entender as distribuições beta, vamos considerar um exemplo envolvendo três moedas: moeda um, moeda dois e moeda três. Essas moedas podem cair em cara ou coroa. No entanto, todas as três moedas são manipuladas, o que significa que nenhuma delas retorna cara com uma probabilidade de meio.

Vamos supor que a moeda um dê cara com uma probabilidade de 0,4, a moeda dois com uma probabilidade de 0,6 e a moeda três com uma probabilidade de 0,8. Agora, imagine que escolhemos aleatoriamente uma dessas moedas sem saber qual é. A tarefa é adivinhar qual moeda escolhemos lançando-a cinco vezes.

Suponha que obtivemos três caras e duas coroas nessa ordem. A questão é: qual moeda você acha que pegamos? Intuitivamente, podemos inclinar-nos para a moeda dois, uma vez que se espera que retorne cara três em cinco vezes. No entanto, ainda há incerteza. É possível que tenhamos escolhido a moeda um ou a moeda três, e a sequência observada de caras e coroas foi apenas uma coincidência.

Para determinar as probabilidades de escolha de cada moeda, podemos aplicar o teorema de Bayes. Vamos examinar cada caso individualmente.

Para a moeda um, a probabilidade de obter cara três vezes e coroa duas vezes é calculada da seguinte forma: (0,4 * 0,4 * 0,4) * (0,6 * 0,6) = 0,0230.

Para a moeda dois, a probabilidade é: (0,6 * 0,6 * 0,6) * (0,4 * 0,4) = 0,0346.

Para a moeda três, a probabilidade é: (0,8 * 0,8 * 0,8) * (0,2 * 0,2) = 0,0205.

Como esses são os únicos três eventos possíveis, suas probabilidades devem somar um. Normalizamos essas probabilidades dividindo cada uma delas pela soma: 0,0230 + 0,0346 + 0,0205. Isso produz as probabilidades normalizadas: 0,295, 0,443 e 0,262 para moeda um, moeda dois e moeda três, respectivamente.

Como podemos ver, a moeda dois tem a maior probabilidade, mas ainda há uma chance de termos escolhido a moeda um ou a moeda três. Essas probabilidades são obtidas usando o teorema de Bayes, que é uma ferramenta poderosa na teoria da probabilidade. Se você quiser saber mais sobre isso, tenho um vídeo no meu canal que explica em detalhes.

Agora, vamos considerar o mesmo exemplo, mas com um número maior de moedas. Digamos que jogamos uma moeda e ela dá cara sete vezes e coroa três vezes. Essa moeda pode ser uma entre dez moedas, cada uma com diferentes probabilidades de dar cara, variando de 0,0 a 0,9, aumentando em 0,1 para cada moeda.

Qual moeda você acha que escolhemos neste caso? Novamente, a opção mais provável é a moeda que dá cara 70% das vezes, o que corresponde à moeda sete. Para calcular as probabilidades de pegar cada moeda, realizamos cálculos semelhantes aos anteriores.

Para cada moeda, calculamos a probabilidade de obter cara sete vezes e coroa três vezes. Usamos a fórmula: (p^7) * ((1-p)^3), onde p representa a probabilidade de dar cara. Em seguida, normalizamos essas probabilidades dividindo cada uma delas pela soma de todas as probabilidades.

À medida que aumentamos o número de moedas, os cálculos tornam-se mais complicados. No entanto, o princípio subjacente permanece o mesmo. Calculamos as probabilidades de cada moeda com base nos resultados observados e nas probabilidades associadas a cada moeda. Ao normalizar essas probabilidades, obtemos uma distribuição que representa nossa incerteza sobre qual moeda foi escolhida.

Agora, vamos generalizar esse conceito para a distribuição beta. A distribuição beta é uma distribuição de probabilidade contínua definida no intervalo [0, 1]. É caracterizado por dois parâmetros de forma, muitas vezes denotados como alfa e beta. Esses parâmetros determinam a forma da distribuição.

A distribuição beta é particularmente útil para modelar probabilidades porque é flexível e pode assumir uma variedade de formas dependendo dos valores de alfa e beta. Ele nos permite capturar uma ampla gama de distribuições de probabilidade, de uniforme a assimétrica e de concentrada a dispersa.

A função de densidade de probabilidade (PDF) da distribuição beta é dada pela fórmula: f(x) = (x^(alpha-1)) * ((1-x)^(beta-1)) / B(alpha, beta), onde B(alfa, beta) é a função beta que garante que a distribuição integre a 1 no intervalo [0, 1].

A média da distribuição beta é dada pela fórmula: E[X] = alpha / (alpha + beta), e a variância é Var[X] = (alpha * beta) / ((alpha + beta)^2 * ( alfa + beta + 1)).

A distribuição beta é comumente usada em vários campos, como estatística bayesiana, aprendizado de máquina e análise de decisão. Ele pode modelar quantidades incertas, como taxas de sucesso, proporções ou probabilidades, e pode ser usado para estimativa de parâmetros, teste de hipóteses e geração de amostras aleatórias.

As distribuições beta são um conceito fundamental em probabilidade e estatística, especialmente quando se lida com probabilidades incertas. Eles fornecem uma estrutura flexível para modelar uma ampla gama de distribuições de probabilidade. Ao compreender as propriedades e aplicações das distribuições beta, podemos tomar decisões mais informadas e analisar os dados com mais eficácia.

The Beta distribution in 12 minutes!
The Beta distribution in 12 minutes!
  • 2021.06.13
  • www.youtube.com
This video is about the Beta distribution, a very important distribution in probability, statistics, and machine learning. It is explained using a simple exa...
 

Amostragem de Thompson, um bandido armado e a distribuição Beta



Amostragem de Thompson, um bandido armado e a distribuição Beta

Olá, sou Louis Sorano e, neste vídeo, discutirei o conceito de bandidos de um braço só e a distribuição beta. Imagine-se em um cassino com uma fileira de máquinas caça-níqueis, comumente conhecidas como bandidos de um braço só. Quando você joga nessas máquinas, há dois resultados possíveis: ou sai uma moeda, indicando uma vitória, ou não sai nada, resultando em perda. O objetivo é determinar quais máquinas são boas e quais não são, para maximizar seus ganhos.

Cada máquina na linha tem uma probabilidade diferente de produzir uma moeda, denotada como 'p'. Por exemplo, se a máquina à esquerda tiver uma probabilidade de 0,1 (10%), significa que, em média, você pode esperar ganhar uma moeda 10% das vezes, enquanto 90% das vezes você perderá. Da mesma forma, a máquina à direita tem uma probabilidade de 0,7 (70%), indicando que você tem uma chance maior de ganhar uma moeda, 70% das vezes e 30% de chance de perder.

O desafio é que você não sabe os valores reais de 'p' para cada máquina, então você precisa estimá-los jogando as máquinas. O objetivo é jogar todas as máquinas e identificar aquelas com maiores probabilidades de ganhar para se concentrar nelas, enquanto ocasionalmente dá às máquinas de baixo desempenho uma chance de melhorar.

Há duas estratégias a serem consideradas: a estratégia "explorar" e a estratégia "explorar". A estratégia de exploração envolve jogar cada máquina várias vezes para coletar dados e estimar as probabilidades de ganhar. Por exemplo, se você jogar a primeira máquina 15 vezes e ganhar duas vezes, estima que a probabilidade seja 2/15. Repetindo esse processo para cada máquina, você pode comparar suas probabilidades estimadas e identificar aquelas com maior probabilidade de ganhar.

Por outro lado, a estratégia de exploração envolve jogar cada máquina menos vezes e tomar decisões com base nos dados disponíveis. Ao jogar uma máquina apenas algumas vezes, você pode não ter informações suficientes para estimar com precisão sua probabilidade de ganhar. Essa abordagem corre o risco de perder potenciais vencedores, pois pode não explorar o espaço o suficiente para coletar dados suficientes.

Para encontrar uma estratégia ideal, você precisa de uma combinação de exploração e exploração. Essa abordagem, conhecida como amostragem de Thompson, envolve a manutenção de uma distribuição beta para cada máquina. A distribuição beta representa a probabilidade de ganhar com base no número de vitórias e derrotas. Ao atualizar a distribuição beta a cada jogo, você pode refinar suas estimativas.

A amostragem de Thompson envolve uma competição entre as máquinas com um toque de aleatoriedade. Pontos aleatórios são selecionados a partir das distribuições beta, e a máquina com o valor mais alto naquele ponto é escolhida para ser jogada a seguir. Esta técnica permite a exploração de todas as máquinas, favorecendo aquelas com maior desempenho.

A amostragem de Thompson, usando a distribuição beta, tem amplas aplicações além do jogo. Ele é usado em testes A/B para web design e publicidade, ensaios médicos para determinar a eficácia de drogas experimentais e vários cenários de tomada de decisão em que a exploração e exploração são cruciais.

Em conclusão, a amostragem de Thompson com a distribuição beta é uma técnica poderosa que combina exploração e exploração para tomar decisões ótimas. Ele permite que você maximize seus ganhos concentrando-se em máquinas com maiores probabilidades de ganhar enquanto ainda explora outras possibilidades. A amostragem de Thompson encontra aplicações em diversos campos e oferece uma abordagem prática para a tomada de decisões sob incerteza.

Obrigado por assistir e, se você achou este vídeo útil, inscreva-se, curta e compartilhe. Também o encorajo a conferir meu livro, "Rocking Machine Learning", onde explico o aprendizado de máquina supervisionado de maneira acessível e envolvente. Você pode encontrar o livro e outros recursos na seção de comentários abaixo. Sinta-se à vontade para deixar comentários e sugestões para futuros tópicos e não se esqueça de me seguir no Twitter.
Thompson sampling, one armed bandits, and the Beta distribution
Thompson sampling, one armed bandits, and the Beta distribution
  • 2021.07.06
  • www.youtube.com
Thompson sampling is a strategy to explore a space while exploiting the wins. In this video we see an application to winning at a game of one-armed bandits.B...
Razão: