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

 

Aprendizado profundo 1: retropropagação para tensores, redes neurais convolucionais (MLVU2019)



7 Deep Learning 1: Backpropagation para tensores, Convolutional Neural Networks (MLVU2019)

Esta primeira parte do vídeo sobre aprendizado profundo e retropropagação abrange vários tópicos, incluindo os fundamentos de uma estrutura de aprendizado profundo, tensores, o algoritmo de retropropagação e o problema do gradiente de fuga. O palestrante explica como as redes neurais podem ser implementadas usando uma sequência de operações de álgebra linear e como o algoritmo de retropropagação pode ser usado para definir um modelo como uma composição de funções. O vídeo também aborda como calcular derivadas usando operações de matriz e explora soluções para o problema do gradiente de fuga, como inicialização de peso e o uso de ReLU como uma função de ativação. Por fim, o vídeo aborda a descida de gradiente em minilote e vários otimizadores que podem ser utilizados em uma rede neural complexa.

Esta segunda parte abrange uma variedade de tópicos relacionados ao aprendizado profundo, incluindo algoritmos de otimização e técnicas de regularização. A otimização de Adam é explicada como um algoritmo popular para aprendizado profundo, enquanto a regularização L1 e L2 é explorada como métodos para prevenir o overfitting. O potencial das redes neurais no processamento de imagens também é discutido, com as redes neurais convolucionais destacadas como uma ferramenta poderosa para tarefas de reconhecimento de imagens. O vídeo também investiga o funcionamento dessas redes e como elas criam recursos para reconhecer imagens complexas, bem como o conceito de aprendizado de ponta a ponta como forma de superar as limitações de encadear vários módulos.

  • 00:00:00 Nesta seção do vídeo sobre aprendizado profundo, o palestrante começa revisando os conceitos discutidos na sessão anterior, como redes neurais e como elas são organizadas em camadas. Eles então discutem como as redes neurais são essencialmente apenas uma série de etapas de álgebra linear, com funções não lineares ocasionais como a função sigmoide. Isso é importante porque simplifica o processo de implementação de uma rede neural e permite um treinamento mais eficiente. O palestrante também observa que as redes neurais caíram em desuso por um tempo porque eram difíceis de treinar, mas na próxima seção, veremos como a propagação reversa ajuda a superar esse desafio.

  • 00:05:00 Nesta seção, o vídeo descreve os fundamentos de um sistema ou estrutura de aprendizado profundo, que requer uma compreensão do cálculo da matriz de tensores e revisitando o algoritmo de retropropagação. O palestrante enfatiza que, apesar da bagagem de rede neural associada ao aprendizado profundo, não é tão especial, pois é apenas uma sequência de operações de álgebra linear. A primeira etapa no desenvolvimento de uma estrutura geral para redes neurais é definir as operações de forma eficiente e simples para que seja fácil treiná-las com eficácia. Além disso, ao fazer uso de unidades de processamento gráfico ou placas de vídeo, as coisas ficam aproximadamente 20 vezes mais rápidas devido à sua eficácia na multiplicação de matrizes. Por fim, o vídeo descreve o restante dos tópicos que serão abordados na série de palestras, que inclui camadas de convolução, codificadores automáticos e uma discussão sobre aspectos filosóficos do aprendizado profundo.

  • 00:10:00 Nesta seção, o palestrante discute tensores, uma estrutura de dados usada para armazenar vários números que podem ser usados em aprendizado profundo. Os tensores são usados para armazenar conjuntos de dados e precisam ter o mesmo tipo de dados para todos os elementos, geralmente contendo números de ponto flutuante. O palestrante explica como armazenar uma imagem em um tensor de três, que é uma pilha de três imagens em tons de cinza, uma para cada canal de cor, e como armazenar um conjunto de dados de imagens em um tensor de quatro adicionando outro índice que itera sobre as imagens em o conjunto de dados. Por fim, o palestrante explica que funções ou operações em deep learning são como em linguagem de programação, mas com tensores como entradas e saídas, e que a computação retroativa, que calcula o gradiente local, também é implementada junto com a computação direta.

  • 00:15:00 Nesta seção, o vídeo discute o algoritmo de retropropagação e como ele pode ser usado para definir um modelo de rede neural como uma composição de funções. O gradiente sobre toda a rede é calculado como o produto de todos os gradientes locais de cada função, e a retropropagação é usada para propagar a perda por todo o gráfico de computação. O vídeo explica que há duas maneiras de definir o gráfico de computação - execução preguiçosa e rápida - e, embora a execução preguiçosa seja direta, não é ideal para depuração ou pesquisa. A execução antecipada é atualmente o padrão em frameworks como PyTorch e TensorFlow, pois permite ao usuário definir o gráfico de computação realizando cálculos, facilitando a depuração e alteração do modelo durante o treinamento.

  • 00:20:00 Nesta seção, o palestrante discute o gráfico de computação e como ele é construído usando variáveis escalares. Em seguida, ele fornece um exemplo de como uma rede neural pode ser implementada em uma estrutura usando um gráfico de computação. O valor da perda é calculado sobre a rede neural e o processo de retropropagação é iniciado a partir do valor da perda para obter o gradiente sobre os parâmetros da rede. Uma vez obtido o gradiente, uma etapa de descida do gradiente pode ser realizada subtraindo um pouco do gradiente do valor.

  • 00:25:00 Nesta seção, o palestrante discute dois aspectos importantes da retropropagação para sistemas de aprendizado profundo: lidar com vários caminhos de computação e trabalhar com tensores. O palestrante apresenta a regra da cadeia multivariada para lidar com diamantes em um gráfico de computação em que vários caminhos levam ao mesmo valor. Além disso, o palestrante explica a importância de trabalhar com tensores na retropropagação, onde todos os valores intermediários são tensores ao invés de valores escalares. O objetivo é calcular derivadas em termos de operações matriciais, permitindo uma computação mais rápida. O palestrante demonstra como obter a derivada de um vetor em relação a uma matriz usando um exemplo simples de uma função que produz um escalar cuja entrada é um vetor, tornando a função o mais simples possível observando o produto escalar.

  • 00:30:00 Nesta seção, o palestrante explica como calcular derivadas de tensores usando exemplos de um vetor e uma matriz. O primeiro exemplo mostra que a derivada de um escalar em relação a um vetor é apenas um vetor de números, que é o gradiente. Então, o segundo exemplo demonstra que a derivada de um vetor em relação a uma matriz é apenas uma matriz. O palestrante destaca que pegar todos os valores possíveis e organizá-los em uma matriz resulta na matriz original P.

  • 00:35:00 Nesta seção, o palestrante explica como derivar uma função nos dá uma matriz de possíveis derivadas escalares para entradas e saídas de vetores e um tensor de derivadas para entradas/saídas de ordem superior. No entanto, calcular esses valores intermediários pode ser difícil e complicado, especialmente quando se trata de uma combinação vetor/matriz. Para simplificar esse processo, podemos acumular o produto calculando cada derivada sequencialmente da esquerda para a direita, em vez de lidar com esses valores intermediários. O palestrante explica como a implementação inversa de uma função considera a derivada da perda em relação à sua saída como entrada.

  • 00:40:00 Nesta seção, o palestrante explica como calcular um valor em termos de cálculos de matriz removendo os produtos intermediários. Eles devem calcular a derivada sobre todas as entradas em relação a todas as entradas e usar a regra da cadeia multivariada na qual ela informa o caminho de computação a seguir e soma os resultados. Mesmo que K seja um tensor ou um tensor de alto nível, eles precisam derivar cada elemento e somar o total que pode ser ineficiente para calcular dessa maneira, portanto, eles extraem os elementos da multiplicação da matriz para um produto escalar da i-ésima linha de W vezes X com X produto escalar da linha I de W com X. Eventualmente, no final de cada passagem para frente e para trás, eles otimizam cada sequência de rastreamento para corresponder à variável de destino fornecida, minimizando o resultado da função de perda .

  • 00:45:00 Nesta seção do vídeo sobre aprendizado profundo e retropropagação, o palestrante discute como calcular derivadas usando regra da cadeia multivariada e operações de matriz. As derivadas para cada elemento da matriz de peso W podem ser calculadas, e o gradiente local para W é derivado usando o produto externo dos dois vetores. O mesmo processo pode ser seguido para as outras entradas. A computação direta da camada linear é calculada usando WX + B, e a computação reversa pode ser obtida calculando os gradientes da perda em relação a W, X e B usando a multiplicação de matrizes. No entanto, o palestrante observa que a maioria dos sistemas de aprendizado profundo já possui a função de retrocesso implementada, portanto, não é necessário que os usuários calculem por conta própria.

  • 00:50:00 Nesta seção, o palestrante explica que o problema do gradiente de desaparecimento foi o maior revés para o aprendizado profundo nos anos 90. Eles examinam o problema com as inicializações de peso, pois os pesos não devem ser muito grandes ou pequenos, caso contrário, as funções de ativação não funcionarão efetivamente, resultando em saídas sempre iguais a zero. A solução é inicializar os pesos da rede usando valores ortogonais aleatórios ou amostras de uma distribuição uniforme entre dois valores positivos, garantindo que os autovalores sejam um. Isso garante que a média e a variância da saída permaneçam as mesmas e, portanto, a rede possa aprender de forma eficaz.

  • 00:55:00 Nesta seção, o vídeo discute os problemas que surgem ao usar funções sigmoides para redes de aprendizado profundo, como o problema do gradiente de fuga, no qual os gradientes se tornam cada vez menores e a rede não aprende. Em vez disso, o vídeo sugere o uso de ReLU como uma função de ativação mais simples, que tem uma função de identidade de 1 em entradas maiores que zero e uma derivada de zero caso contrário, para que o gradiente não decaia. O vídeo também apresenta a descida de gradiente em minilote como uma versão intermediária da descida de gradiente regular e estocástica, que calcula a perda em relação a um pequeno lote, permitindo aleatoriedade e processamento paralelo. No entanto, o vídeo adverte que há uma troca entre tamanhos de lote maiores – que utilizam memória da GPU e são executados mais rapidamente – e lotes menores, que são mais eficazes para produzir resultados ideais. Por fim, o vídeo aborda vários otimizadores que utilizam o conceito de gradiente descendente, mas ajustam-se ligeiramente para levar em consideração os diferentes gradientes que podem surgir em uma rede neural complexa.
  • 01:00:00 Nesta seção, o instrutor aborda três métodos para lidar com mínimos locais muito pequenos e suavizar superfícies de perda aproximada: momento, momento de Nesterov e Adam. A intuição básica por trás do momento é tratar os gradientes como uma força - semelhante à gravidade - e a navegação da superfície de perda tratando o modelo como uma pedra rolando colina abaixo. Com o momento Nesterov, um pequeno insight é adicionado de modo que a etapa do momento possa ser aplicada primeiro e, em seguida, o gradiente pode ser calculado. Adam incorpora essa ideia junto com a ideia de que cada parâmetro em um modelo tem sua própria superfície de perda e preferências de quão agressivamente ele deve se mover em uma determinada direção, então um gradiente médio é estimado por dimensão no espaço do modelo e as atualizações são dimensionadas de acordo. Uma média móvel exponencial é tomada tanto para o gradiente quanto para a variância, o que permite um tipo de influência do gradiente anterior que se soma à média.

  • 01:05:00 Nesta seção, o vídeo discute otimizadores e regularizadores em aprendizado profundo. Adam é explicado como um algoritmo de otimização que é uma ligeira adaptação à descida de gradiente que funciona bem em aprendizado profundo. Ele tem vários hiperparâmetros e as configurações padrão funcionam bem. Os regularizadores são então discutidos como uma técnica para evitar o overfitting em modelos grandes com muito espaço para memorizar dados. A regularização L2 envolve a adição de um hiperparâmetro multiplicado pelo comprimento do vetor tensor de peso à perda, o que incentiva o sistema a preferir modelos com pesos menores. A regularização L1 também segue essa ideia, mas calcula a distância usando a norma L1 do vetor tensor, fornecendo os cantos da superfície de perda. O regularizador L1 prefere soluções esparsas onde o sistema pode remover conexões que tenham impacto zero na saída.

  • 01:10:00 Nesta seção, o palestrante explica o conceito de regularização em deep learning, que é a técnica utilizada para prevenir o overfitting dos modelos. A regularização ajuda a garantir que o modelo generalize bem para dados não vistos. L1 e L2 são dois tipos populares de regularização usados em aprendizado profundo. A regularização L2 puxa os modelos em direção à origem e evita que os pesos fiquem muito grandes, enquanto a regularização L1 produz um sulco ao longo das bordas. O dropout também é discutido, o que envolve desabilitar nós ocultos aleatoriamente durante o treinamento e forçar cada nó a levar em consideração várias fontes de informação. Por fim, o palestrante destaca as conquistas do aprendizado profundo, incluindo uma única rede neural que consome imagens e produz texto.

  • 01:15:00 Nesta seção, o vídeo discute várias técnicas de processamento de imagem usando redes neurais. Uma técnica interessante é a transferência de estilo, onde uma rede neural pode transformar uma fotografia usando o estilo de uma determinada pintura. A tradução de imagem para imagem é outra técnica em que uma rede aprende a gerar partes ausentes de uma imagem com base no treinamento com imagens dessaturadas ou detectadas por bordas. As camadas convolucionais ajudam a tornar a rede mais eficiente, compartilhando pesos e reduzindo o espaço de parâmetros, o que é particularmente importante para o processamento de imagens. No geral, o vídeo destaca o incrível potencial das redes neurais no processamento de imagens, mas enfatiza a importância de projetar cuidadosamente a arquitetura com base no conhecimento do domínio para obter os melhores resultados.

  • 01:20:00 Nesta seção, o palestrante explica como funcionam as redes neurais convolucionais, que é um tipo de rede neural artificial feedforward que é comumente usada para tarefas de reconhecimento e classificação de imagens. A ideia-chave por trás dessas redes é limitar o número de parâmetros usando pesos compartilhados e reduzindo a resolução da imagem usando uma camada de pool máximo. Eles consistem em uma série de camadas totalmente conectadas que são seguidas por uma ou mais camadas de convolução, que usam uma janela deslizante chamada kernel para filtrar a imagem de entrada e gerar a imagem de saída com canais modificados. Ao encadear essas camadas de convolução e pooling máximo e adicionar algumas camadas totalmente conectadas, pode ser criada uma rede básica de classificação de imagem que produz resultados altamente precisos.

  • 01:25:00 Nesta seção, o palestrante discute a visualização do que uma rede neural convolucional está realmente fazendo, observando os nós no alto da rede para ver que tipo de entrada aciona uma resposta alta. A primeira camada da rede responde principalmente à detecção de borda, enquanto a próxima camada monta as bordas individuais em recursos. Este processo continua, construindo progressivamente representações e terminando com rostos inteiros. Para explorar ainda mais o funcionamento da rede neural, o palestrante descreve a otimização da entrada para ativar um neurônio específico, resultando em imagens abstratas semelhantes a arte. Ao examinar essas imagens, o falante é capaz de determinar a quais características o neurônio está respondendo, como características de pássaros ou cachorros. Por fim, o palestrante explica que uma grande diferença entre aprendizado de máquina tradicional e aprendizado profundo é a ideia de aprendizado de ponta a ponta, onde não é necessário um pipeline e a rede pode analisar jornais, por exemplo, e realizar o processamento de linguagem natural sem um processo de várias etapas.

  • 01:30:00 Nesta seção, o palestrante explica a limitação de encadear vários módulos que possuem alta precisão ao executar tarefas de aprendizado de máquina. Os erros acumulativos de cada módulo podem criar uma entrada ruidosa para os módulos seguintes, o que diminui significativamente a precisão do sistema geral. A aprendizagem de ponta a ponta é então introduzida como uma solução para lidar com esse problema. Em vez de isolar o treinamento para cada módulo, todo o pipeline é treinado como um todo para aprender com os dados brutos de ponta a ponta usando um método de descida de gradiente. Isso torna a abordagem mais flexível e permite que o sistema de aprendizado profundo resolva uma gama mais ampla de problemas.
 

8 Probabilidade 2: Máxima Verossimilhança, Modelos de Mistura Gaussiana e Maximização de Expectativas (MLVU2019)



8 Probabilidade 2: Máxima Verossimilhança, Modelos de Mistura Gaussiana e Maximização de Expectativas (MLVU2019)

Esta seção do vídeo centrou-se em modelos de probabilidade para estimativa de densidade usando estimativa de probabilidade máxima, distribuições normais, modelos de mistura gaussiana e algoritmo de maximização de expectativa. O palestrante explicou o princípio da Máxima Verossimilhança e mostrou sua aplicação na seleção do melhor modelo de probabilidade. Eles exploraram distribuições normais, explicaram a diferença entre funções de probabilidade e densidade de probabilidade e introduziram modelos de mistura gaussiana. O palestrante também discutiu o método de amostragem de uma distribuição normal univariada e multivariada e como o Modelo de Mistura Gaussiana ajuda a identificar diferentes agrupamentos dentro de uma população. Além disso, o algoritmo Expectation Maximization foi introduzido para ajustar modelos de mistura gaussiana a conjuntos de dados. O palestrante também explicou como formalizar a abordagem de Maximização de Expectativas usando a aproximação da função Q e provou que ela converge para um ótimo local.

Este vídeo aborda os tópicos de Máxima Verossimilhança, Modelos de Mistura Gaussiana e Maximização de Expectativas (EM). O palestrante explica o algoritmo EM, sua prova e por que ele converge. Eles também discutem o passo M, onde maximizam L escolhendo teta enquanto mantêm Q fixo. Ajustar um modelo de mistura gaussiana aos dados requer o uso do algoritmo EM, e o palestrante explica suas aplicações, como agrupamento e análise exploratória, e como ele pode ser usado para classificação ajustando um modelo de mistura gaussiana a cada classe. O vídeo também menciona a próxima palestra sobre como ajustar modelos de probabilidade a redes neurais complicadas.

  • 00:00:00 Nesta seção do vídeo, o palestrante apresenta o conceito de uso de modelos probabilísticos para estimativa de densidade ajustando distribuições de probabilidade aos dados. Eles se concentram especificamente na estimativa de máxima verossimilhança e a aplicam a quatro modelos diferentes baseados na distribuição normal ou gaussiana. O vídeo também fornece um exemplo de uso do princípio da máxima verossimilhança para determinar qual moeda foi usada em uma sequência aleatória de lançamento de 12 moedas, em que uma moeda é dobrada e a outra reta. Eles então introduzem a mistura do modelo gaussiano, que é um modelo poderoso, mas difícil de ajustar usando a máxima verossimilhança, e mergulham no algoritmo de maximização de expectativa como uma forma de ajustar modelos de mistura gaussiana.

  • 00:05:00 Nesta seção, é explicado o princípio da máxima verossimilhança, que é usado na seleção de modelos para aprendizado de máquina. Envolve ajustar um modelo aos dados observados para selecionar o modelo com a maior probabilidade de fornecer esses dados. O logaritmo da verossimilhança geralmente é considerado para simplificar e é uma função monotônica que não muda onde a função atinge seu ponto mais alto. Distribuições normais também são introduzidas, com média e variância ou desvio padrão como parâmetros, e são usadas em vários modelos, incluindo regressão e distribuições normais multivariadas. Modelos de mistura gaussiana também são discutidos como uma combinação de múltiplas distribuições normais.

  • 00:10:00 Nesta seção, o palestrante discute diferentes tipos de distribuições e a importância de ter uma escala definida, fornecida pelas distribuições normais. O palestrante também aborda a diferença entre funções de probabilidade e funções de densidade de probabilidade, enfatizando que eventos individuais têm uma densidade de probabilidade, e a probabilidade é obtida integrando sobre essa densidade. O palestrante então apresenta a fórmula de distribuição normal e mostra como ela atinge o requisito fundamental de ter uma escala definida decaindo exponencialmente. A fórmula é ainda melhorada pela adição de um termo ao quadrado que acelera ainda mais o decaimento.

  • 00:15:00 Nesta seção do vídeo, o apresentador explica como criar uma função de densidade de probabilidade da distribuição normal por meio do redimensionamento e movimentação de uma função básica. Ele mostra como os pontos de inflexão podem ser usados para colocar a massa de probabilidade onde ela é mais necessária e como controlar o tamanho da escala, bem como mover a função para ajustar a média. Finalmente, ele discute a estimativa de probabilidade máxima de parâmetros para criar uma distribuição normal a partir dos dados.

  • 00:20:00 Nesta seção, o palestrante discute a estimativa de probabilidade máxima e sua aplicação para encontrar o ponto mais alto em um espaço de probabilidade. Apresentam como objetivo maximizar a soma do logaritmo das probabilidades para os parâmetros de uma distribuição Gaussiana 1D. Eles então calculam a derivada em relação à média e a resolvem para o máximo. Eles descobrem que o estimador de máxima verossimilhança para a média de uma distribuição normal é apenas a média dos dados, e a mesma abordagem pode ser aplicada para encontrar o desvio padrão para todas essas funções. O palestrante também menciona a existência de uma solução analítica para encontrar o ótimo.

  • 00:25:00 Nesta seção, o vídeo discute a suposição de normalidade na regressão de mínimos quadrados. O modelo assume que os dados são gerados adicionando um pouco de ruído a uma linha, e a distribuição de probabilidade dos dados pode ser considerada uma distribuição normal. Para maximizar a probabilidade dos parâmetros do modelo linear, eles devem maximizar a probabilidade de Y dados X, W e B. Ao preencher essa equação e calcular o logaritmo, a parte de normalização desaparece e a função restante é semelhante ao mínimo função objetivo dos quadrados. A distribuição multivariada também é discutida, com a média na origem e a densidade de probabilidade decaindo exponencialmente à medida que a distância aumenta.

  • 00:30:00 Nesta seção, o palestrante discute o uso de uma transformação linear para mover um círculo unitário, que contém a maior parte da massa de probabilidade de uma curva de sino normalizada, no espaço para ajustar os dados. A transformação linear define uma matriz e um vetor T, que é aplicado ao círculo unitário que é normalizado primeiro para que o volume total sob a curva seja calculado e dividido por ele. A aplicação dessa transformação estende o círculo em uma determinada direção e aumenta a densidade de probabilidade. Para corrigir isso, o determinante da matriz é dividido pelo volume expandido para obter a densidade de probabilidade de um ponto específico sob o Gaussiano transformado.

  • 00:35:00 Nesta seção, o palestrante discute o método de amostragem de uma distribuição normal univariada não padrão com uma determinada média e sigma. Para fazer isso, pode-se amostrar x da distribuição normal padrão, multiplicá-lo pela variância e adicionar a média para obter uma amostra da distribuição desejada. Da mesma forma, a amostragem de uma distribuição normal multivariada com uma determinada média e sigma envolve a decomposição do sigma, a amostragem da distribuição padrão e a aplicação de uma transformação linear. O palestrante também apresenta o conceito de modelo de mistura gaussiana, que será o foco da discussão a seguir. O palestrante usa um exemplo de distribuição de notas para ilustrar o conceito de diferentes populações dentro de uma amostra.

  • 00:40:00 Nesta seção, o palestrante discute o Modelo de Mistura Gaussiana e como ele pode ajudar a identificar diferentes agrupamentos dentro de uma população. Ao criar três distribuições normais separadas com diferentes pesos e escalas, a função de densidade de probabilidade resultante terá três picos ou modos. Para ajustar este modelo aos dados, o objetivo de máxima verossimilhança é usado para determinar os melhores parâmetros do modelo de mistura gaussiana. Embora o gradiente possa ser útil em alguns casos, não é fácil trabalhar com ele devido à soma dentro do logaritmo. Em vez disso, o algoritmo de maximização de expectativa é usado, que é semelhante ao algoritmo de agrupamento k-means, para encontrar o agrupamento ideal dos dados.

  • 00:45:00 Nesta seção, o vídeo discute o uso de modelos de mistura Gaussiana, que é essencialmente um modelo de variável oculta que envolve a amostragem de um conjunto de valores aleatórios e seu uso para amostrar um valor X de diferentes componentes com seus respectivos pesos. No entanto, o problema é que apenas os valores de X são observados e os valores de Z são ocultados. A solução é usar o algoritmo Expectation Maximization (EML), que itera o processo de fazer uma estimativa aleatória para os componentes, atribuindo responsabilidades flexíveis a cada ponto, ajustando distribuições aos subconjuntos de dados e inferindo a distribuição nos valores definidos, dados os valores X. Por meio desse processo iterativo, o algoritmo pode estimar os parâmetros do modelo e maximizar a probabilidade dos dados.

  • 00:50:00 Nesta seção, o vídeo discute o algoritmo Expectation-Maximization (EM), que é usado para ajustar modelos de mistura gaussiana a conjuntos de dados, onde alguns pontos são mais importantes que outros. O algoritmo funciona primeiro atribuindo responsabilidades suaves a cada ponto, o que significa que cada ponto tem alguma parcela de responsabilidade de cada componente. Essas responsabilidades são usadas para ajustar um modelo gaussiano ao conjunto de dados ponderado, onde a média e a variação são calculadas usando médias e variações ponderadas. O processo repete as etapas de expectativa e maximização até que um bom ajuste seja alcançado. O vídeo mostra uma visualização desse processo, demonstrando como o modelo se desloca em direção aos pontos mais importantes até encontrar um bom ajuste.

  • 00:55:00 Nesta seção, o palestrante discute a formalização da natureza intuitiva da maximização da expectativa e como provar que ela converge para um ótimo local. Ao usar as funções Q como aproximações da verdadeira verossimilhança, a função de verossimilhança pode ser decomposta em dois termos: a divergência KL e a função L, que mede quão boa é a aproximação. Tomando o logaritmo desses termos, o palestrante mostra que a função L pode ser calculada subtraindo o logaritmo do conjunto Q aproximado do logaritmo da função de verossimilhança definida com os parâmetros ideais. Essa decomposição é útil para entender e provar a convergência da abordagem de maximização de expectativas.

  • 01:00:00 Nesta seção, o palestrante discute a prova do algoritmo EM e por que ele converge. É mostrado que, ao reorganizar a distribuição conjunta e a distribuição condicional, a expectativa do logaritmo de x dado theta pode ser escrita como uma constante em relação a Q. Em seguida, o palestrante explica como redefinir o algoritmo EM em termos da divergência KL e escolher a sugestão dada alguns dados e teta arbitrário para tornar a divergência KL 0 enquanto mantém os dados fixos, o que leva a L cobrindo todo o espaço e a probabilidade máxima sendo alcançada.

  • 01:05:00 Nesta seção, o palestrante explica o passo M, onde maximizam L escolhendo teta para maximizar L enquanto mantém Q fixo. Eles explicam como esta etapa leva a um aumento na probabilidade e porque a iteração E/M constantemente aumenta a probabilidade. O palestrante também explica como eles podem trabalhar o passo M em um objetivo de maximização e derivar estimadores de máxima verossimilhança para o algoritmo de maximização de expectativa. Eles discutem as aplicações dessa técnica, como agrupamento e análise exploratória, e como ela pode ser usada para classificação ajustando um modelo de mistura Gaussiana para cada classe.

  • 01:10:00 Nesta seção, o palestrante discute os modelos de mistura gaussiana e como eles podem assumir várias formas, tornando-os muito mais poderosos do que as distribuições normais. Ajustar um modelo de mistura gaussiana aos dados requer o uso do algoritmo de maximização de expectativa, pois não há solução analítica de forma fechada para o ajuste de máxima verossimilhança. No entanto, uma vez ajustado o modelo, ele pode ser usado de várias maneiras, como usar o classificador de base para classificar novos pontos com base em sua densidade de probabilidade. Na próxima palestra, o palestrante planeja discutir modelos de variáveis ocultas em redes neurais e como ajustar modelos de probabilidade a redes neurais complicadas.
 

Aula 9 Deep Learning 2: Modelos generativos, GANs, Variational Autoencoders (VAEs) (MLVU2019)



9 Deep Learning 2: modelos generativos, GANs, Variational Autoencoders (VAEs) (MLVU2019)

O vídeo aborda vários tópicos relacionados ao aprendizado profundo, incluindo dados divididos para projetos de aprendizado profundo, aprendizado de transferência e foco em modelos generativos. O palestrante explora o conceito de usar redes neurais para gerar resultados aleatórios e distribuições de probabilidade, explicando diferentes métodos de treinamento de geradores, como redes adversárias generativas e autoencoders. Eles também se aprofundam na importância de GANs, GANs condicionais, esteganografia e codificadores automáticos em vários aplicativos de aprendizado de máquina, como manipulação de dados e redução de dimensionalidade. O palestrante discute a manipulação de dados no espaço latente para manipulações de dados de alto nível sem muitos dados rotulados e a necessidade de uma abordagem alternativa como codificadores automáticos variacionais.

Esta segunda parte do vídeo explora autoencoders variacionais (VAEs), um tipo de modelo generativo destinado a abordar a questão do colapso de modo frequentemente visto com outros modelos. Duas redes neurais são usadas para codificar a entrada no espaço latente e decodificá-la de volta ao espaço de entrada, permitindo a otimização da codificação e da decodificação. O alto-falante divide a função de perda em um termo de divergência KL e um termo de probabilidade de log esperado, que pode ser usado para otimizar a rede. Os desafios de maximizar uma expectativa em VAEs são explicados, e o truque da reparametrização é discutido como uma forma de superar esse problema. O palestrante compara os VAEs com outras técnicas, como GANs e PCA, concluindo que, embora os VAEs sejam mais poderosos, eles também são mais difíceis de treinar.

  • 00:00:00 Nesta seção, o palestrante lembra ao público para dividir seus dados em conjuntos de treinamento e teste antes de olhar para os dados, pois uma vez vistos, não podem ser desvistos. Para aqueles que trabalham em projetos de aprendizado profundo, eles sugerem o uso do aprendizado de transferência para criar modelos poderosos sem treinamento caro, usando uma rede pré-treinada de empresas como o Google e adicionando suas próprias camadas no topo. Esta é uma boa opção para quem não tem acesso a grandes máquinas com grandes GPUs. Além disso, o palestrante aconselha verificar a rubrica do projeto para garantir que todos os aspectos importantes sejam abordados para uma nota de aprovação fácil.

  • 00:05:00 Nesta seção, o vídeo discute o aprendizado profundo para modelagem generativa, em que uma rede neural é treinada para produzir uma distribuição de probabilidade a partir da qual coisas novas podem ser amostradas, como imagens ou bits de linguagem. O primeiro passo é construir uma rede neural chamada gerador que pode produzir essas coisas novas. É mostrado um exemplo de uma rede neural que foi treinada para gerar imagens de pessoas que na verdade não existem. O vídeo continua explicando as duas maneiras de treinar geradores, que são redes adversárias generativas e autoencoders, com foco em autoencoders variacionais como uma abordagem mais baseada em princípios.

  • 00:10:00 Nesta seção, o palestrante explica como usar redes neurais para gerar resultados aleatórios e distribuições de probabilidade. Há duas maneiras de fazer isso: alimentando a rede com alguma entrada e interpretando sua saída como a média e o Sigma de uma distribuição normal multivariada, ou amostrando entradas aleatórias de uma distribuição normal multivariada padrão e alimentando-as através de uma rede neural para observar o saída. A última abordagem pode produzir distribuições de probabilidade altamente complexas e interessantes, como mostrado pelo experimento do palestrante com uma rede neural de duas camadas que transformou uma distribuição normal multivariada em uma distribuição não normal com uma forma complexa. Essa abordagem pode ser usada para modelar distribuições altamente complexas, como rostos humanos.

  • 00:15:00 Nesta seção, o instrutor explica as etapas de treinamento para modelos generativos e os problemas que podem ocorrer, como colapso de modo. Uma abordagem ingênua para ajustar a distribuição de probabilidade que uma rede neural representa a um conjunto de dados é por meio de retropropagação, usando a distância entre as imagens geradas e originais como uma perda. No entanto, essa abordagem geralmente falha e faz com que todos os modos do conjunto de dados sejam reduzidos a um modo. Em seguida, o instrutor apresenta dois exemplos de modelos generativos que funcionaram bem: Generative Adversarial Networks (GANs) e Variational Autoencoders (VAEs). O instrutor explica a história por trás das Redes Neurais Convolucionais (CNNs), que inspiraram as GANs, e como elas funcionam por meio de duas redes que competem entre si para melhorar as imagens geradas. Os VAEs, por outro lado, possuem uma rede codificadora que comprime a imagem original em uma distribuição de probabilidade e uma rede decodificadora que gera uma nova imagem a partir dessa distribuição.

  • 00:20:00 Nesta seção, o palestrante discute uma técnica usada para otimizar a entrada para gerar imagens que correspondem a um determinado neurônio de saída, levando ao surgimento de exemplos adversários, que são imagens falsas que a rede pode ser enganada pensando que são algo totalmente diferente. Essa técnica foi inicialmente um golpe para a comunidade de redes neurais, mas levou ao desenvolvimento de um algoritmo de aprendizado ad hoc em que exemplos adversários são gerados e adicionados ao conjunto de dados como exemplos negativos. Essa abordagem, no entanto, não foi totalmente eficiente, então uma solução de ponta a ponta chamada Vanilla GANs foi desenvolvida, que é uma abordagem básica que o palestrante usa para ilustrar três outras maneiras de construir em cima da estrutura para criar exemplos impressionantes.

  • 00:25:00 Nesta seção, os apresentadores explicam como funcionam as GANs (Generative Adversarial Networks). As GANs são compostas por duas redes neurais, um gerador que produz saídas e um discriminador que é um classificador de imagem que determina quais das saídas são falsas. O objetivo de treinar um gan é permitir que a rede geradora crie resultados cada vez mais realistas. Como explica o apresentador, o gerador e o discriminador funcionam como um jogo de soma zero para duas pessoas, com cada rede tentando enganar a outra. O gerador é responsável por tentar criar saídas falsas que enganam o discriminador, e o trabalho do discriminador é capturar essas saídas falsas. Os apresentadores explicam que, após o treinamento, as saídas da GAN serão uma combinação da entrada alvo e da aleatoriedade.

  • 00:30:00 Nesta seção, o palestrante discute GANs condicionais, que visam combinar a capacidade de gerar dados com controle sobre a saída. Ao contrário das GANs normais, que geram saídas sem nenhum controle, as GANs condicionais recebem uma entrada que controla a saída, tornando-as úteis para conjuntos de dados com vários rótulos. O palestrante também discute o ciclo GAN, que usa dois geradores para mapear dois pacotes de imagens não pareados e adiciona um termo de perda de consistência de ciclo para garantir que, se uma imagem for mapeada para frente e para trás, a imagem original seja obtida. Isso permite a geração de imagens adicionais que, de outra forma, seriam caras de criar.

  • 00:35:00 Nesta seção, o palestrante explica o conceito de esteganografia, que esconde um código à vista de todos, e como ele se relaciona com modelos generativos como GANs e VAEs que ocultam uma imagem dentro da outra. O objetivo desses modelos é fazer com que o discriminador não saiba que uma imagem está escondida dentro de outra. O palestrante mostra exemplos de como esses modelos podem transformar imagens em diferentes estilos, como transformar uma fotografia em uma pintura de Monet. O palestrante também fala sobre o estilo GAN, que gera imagens hiper-realistas de pessoas, e como funciona alimentando o vetor latente por meio de uma rede neural deconvolucional que gera imagens de propriedades semânticas de baixo nível para alto nível.

  • 00:40:00 Nesta seção, o palestrante discute um modelo que permite o controle sobre os detalhes das imagens geradas pela alimentação de ruído aleatório na rede em cada camada. Este método diminui a carga de trabalho no vetor latente e também permite a geração de imagens únicas. O palestrante demonstra essa técnica alterando a luz e o vetor em pontos específicos durante o processo de geração, resultando em imagens com características específicas escolhidas em cada nível. Este modelo apresenta um nível de controle que vai além da simples geração de rostos hiper-realistas.

  • 00:45:00 Nesta seção, o palestrante discute o que pode ser feito quando um gerador é criado. Uma das técnicas é chamada de interpolação, que envolve pegar dois pontos do espaço de distribuição multivariada e traçar uma linha entre eles, escolhendo pontos igualmente espaçados e alimentando-os através do gerador, permitindo uma visão da transformação gradual de uma saída para a outra. próximo. Isso pode ser feito em uma grade de pontos igualmente espaçados para mapear cantos para pontos arbitrários no espaço de iluminação, criando uma grade de interpolação. Esses espaços latentes são dispostos geralmente em topologias esféricas, o que significa que para fazer a interpolação, também precisamos nos mover por essa região esférica, conhecida como interpolação esférica. Finalmente, para fazer manipulação de dados ou redução de dimensionalidade, é preciso mapear no espaço latente, o que requer o uso de autoencoders para mapear da saída para o espaço latente.

  • 00:50:00 Nesta seção, o palestrante discute os codificadores automáticos e sua importância em vários aplicativos de aprendizado de máquina, como manipulação de dados e redução de dimensionalidade. Codificadores automáticos são redes neurais que ajudam a mapear dados da entrada para o espaço latente e de volta para a saída. A arquitetura de gargalo da rede permite que ela aprenda e reproduza os recursos da entrada de forma mais compactada. Uma vez treinada, a rede pode produzir um agrupamento de códigos latentes em um espaço bidimensional, que apresenta características semânticas de alto nível, como um rosto sorridente como um agrupamento no espaço.

  • 00:55:00 Nesta seção, o palestrante discute a manipulação de dados no espaço latente para fazer manipulações de alto nível dos dados sem precisar de muitos dados rotulados. Eles mostram um algoritmo simples para fazer alguém sorrir usando imagens codificadas que são manipuladas no espaço latente e depois decodificadas. O palestrante também discute as limitações dos codificadores automáticos e a necessidade de uma abordagem alternativa, como o codificador automático variacional (VAE), que força um decodificador a decodificar pontos próximos à entrada original, mas não exatamente o mesmo para garantir a interpolação adequada no espaço .

  • 01:00:00 Nesta seção do vídeo, o palestrante discute autoencoders variacionais (VAEs), que são um tipo de modelo generativo que permite que o modelo se concentre nos pontos entre os dados e garante que os dados sejam centralizados na origem e tem variância não correlacionada em todas as direções. O Princípio da Máxima Verossimilhança é usado para ajustar o modelo aos dados, e uma rede neural é usada para aproximar o verdadeiro posterior. O colapso do modo ainda é um problema, pois não há mapeamento de X para Zed, mas os VAEs oferecem uma solução melhor do que os modelos anteriores.

  • 01:05:00 Nesta seção, aprendemos sobre modelos generativos e como eles podem sofrer colapso de modo, onde saídas semelhantes são produzidas para entradas diferentes. Para resolver isso, podemos usar autoencoders variacionais (VAEs), que usam duas redes neurais para codificar a entrada para uma distribuição no espaço latente e decodificar a distribuição do espaço latente para uma distribuição no espaço de entrada. Podemos usar a decomposição da probabilidade de log da entrada para obter um limite inferior para a probabilidade real, que pode ser usada como a função de perda. Isso nos permite otimizar as redes neurais para codificação e decodificação, o que ajuda a aliviar o problema de colapso de modo.

  • 01:10:00 Nesta seção, o palestrante explica como reescrever a função L em algo que pode ser usado em sistemas de aprendizado profundo. O objetivo é maximizar um limite inferior na probabilidade e, minimizando o L negativo, podemos aumentar a probabilidade o máximo possível. O orador divide a parte superior da fração usando a definição de probabilidade condicional e a simplifica para uma soma de expectativas, que se torna a divergência KL e a verossimilhança esperada de log. Esses termos podem ser calculados e usados como uma função de perda no sistema de aprendizado profundo. O termo KL puxa os vetores do conjunto em direção à origem e os engrossa em direção a uma hiperesfera ao redor da origem, enquanto o outro termo requer uma expectativa, tornando-o um pouco mais difícil de implementar.

  • 01:15:00 Nesta seção, o palestrante discute os desafios de maximizar uma expectativa no contexto do Variational Autoencoder (VAE). O palestrante explica que eles aproximam a expectativa pegando uma amostra e calculando o logaritmo da densidade de probabilidade para cada amostra e, em seguida, tirando a média. Eles definem L como 1 para manter as coisas simples. No entanto, eles observam que seu método fica preso na etapa de amostragem, que não é diferenciável. Para resolver esse problema, eles incorporam o truque de reparametrização, que permite implementar a etapa de amostragem como parte de sua rede neural. Isso leva ao desenvolvimento do Variational Encoder, que é uma abordagem baseada em princípios para treinar um gerador que é mais simples de implementar.

  • 01:20:00 Nesta seção, o palestrante explica a diferença entre um modelo generativo chamado Generative Adversarial Networks (GANs) e Variational Autoencoders (VAEs). Enquanto os GANs oferecem um mapeamento do espaço latente para o espaço de dados, os VAEs funcionam ao contrário, do espaço de dados para o espaço latente e de volta ao espaço de dados. Os VAEs oferecem interpolação entre os elementos dos dados, incluindo idioma e dados discretos, e funcionam melhor que os GANs na geração de variáveis discretas. O palestrante dá um exemplo de como os VAEs podem usar um vetor de sorriso, um papel existente e o vetor de subtração de óculos de sol para realizar o experimento do malfeitor. O palestrante conclui que os VAEs oferecem uma abordagem direta desde os primeiros princípios, mas os GANs são mais adequados para imagens.

  • 01:25:00 Nesta seção, o palestrante compara Variational Autoencoders (VAEs) com Principle Component Analysis (PCA), afirmando que ambas as técnicas são usadas para redução de dimensionalidade e mapeamento de dados para uma distribuição padronizada, mas VAEs são mais poderosos e podem fazer mais coisas. No entanto, o treinamento de VAEs é muito mais difícil, pois requer gradiente descendente, enquanto o PCA pode encontrar uma solução analítica. Além disso, o PCA geralmente fornece dimensões significativas com base nos dados, como uma dimensão sorridente para rostos, enquanto as dimensões produzidas por VAEs geralmente não têm nenhum significado, a menos que um recurso semântico específico seja direcionado.
 

Aula 10 Modelos e Conjuntos de Árvores: Árvores de Decisão, AdaBoost, Gradient Boosting (MLVU2019)



10 modelos e conjuntos de árvores: árvores de decisão, AdaBoost, aumento de gradiente (MLVU2019)

Esta primeira parte do vídeo apresenta as árvores de decisão, um modelo popular de aprendizado de máquina usado para classificação e regressão, que funciona segmentando o espaço da instância e escolhendo uma classe para cada segmento. O vídeo também discute como as árvores de decisão podem ser treinadas usando o ganho de informações e como a poda pode ajudar a mitigar o overfitting. O palestrante enfatiza a importância de dividir os dados em conjuntos de treinamento, validação e teste para garantir a imparcialidade entre os modelos. Além disso, o vídeo discute o aprendizado conjunto, em que várias árvores de decisão ou outros modelos são treinados e combinados para resolver problemas como alta variância e instabilidade. O boosting também é introduzido como uma técnica de conjunto de modelos, que envolve o treinamento sequencial de classificadores e a reponderação dos dados para melhorar o conjunto. Por fim, é explicado o algoritmo Adaboost, que seleciona classificadores que minimizam uma função de perda para melhorar o ensemble.

Esta segunda parte do vídeo abrange vários modelos e conjuntos de árvores, incluindo AdaBoost e aumento de gradiente. AdaBoost é um método popular de reforço para modelos de classificação que pondera instâncias de dados com base no desempenho do classificador. O reforço de gradiente envolve inicializar um modelo com uma função constante, computar resíduos, ajustar um novo modelo aos resíduos rotulados e adicioná-lo ao conjunto. O palestrante explica as diferenças entre o aumento de gradiente e o AdaBoost e observa que os conjuntos não são muito usados em pesquisas, pois podem confundir os resultados. Além disso, o ensacamento reduz a variância e o aumento reduz o viés.

  • 00:00:00 Nesta seção do vídeo, o apresentador apresenta três modelos de aprendizado de máquina e conjuntos modais, que é uma abordagem popular em produções e competições como o Kaggle. A abordagem combina a ideia básica de aprendizado de árvore de decisão, um modelo de classificação ou modelo de regressão e o método de conjunto, que treina muitos modelos e os combina para tornar o modelo mais forte. O apresentador também explica que as árvores de decisão funcionam em recursos numéricos e categóricos; eles são usados principalmente para recursos categóricos. A seção termina apresentando um conjunto de dados sobre filmes, que será usado para demonstrar o modelo de árvore de decisão.

  • 00:05:00 Nesta seção, o vídeo discute como as árvores de decisão funcionam e como elas podem ser treinadas usando conjuntos de dados. O processo de aprendizado da árvore de decisão envolve encontrar um bom recurso para dividir, estender a árvore passo a passo e criar subconjuntos dos dados. As divisões são determinadas criando a distribuição menos uniforme de rótulos de classe dentro de cada subconjunto. Um exemplo é dado para um conjunto de dados sobre classificações e gêneros de filmes, onde a divisão por classificações não produz uma boa distribuição de classes, mas a divisão por gênero sim.

  • 00:10:00 Nesta seção, o vídeo explica como as árvores de decisão funcionam segmentando o espaço da instância e escolhendo uma classe específica para cada segmento. A árvore se expande selecionando novas divisões para cada folha, mas não faz sentido dividir duas vezes no mesmo recurso categórico em um caminho da raiz até a folha. As condições de parada são quando todas as entradas ou todas as saídas são iguais, e a não uniformidade é determinada pela distribuição de classes entre os segmentos. Isso pode ser difícil para três ou mais turmas, pois a proporção de cada turma deve ser considerada.

  • 00:15:00 Nesta seção, o palestrante explica como a entropia pode ser usada como medida de uniformidade de uma distribuição e como calcular o ganho de informação de um recurso na classificação da árvore de decisão. A entropia é uma medida de quão uniforme é uma distribuição, com uma distribuição uniforme tendo uma entropia mais alta. O palestrante demonstra isso com duas distribuições e usa a fórmula da entropia para mostrar que a distribuição uniforme tem uma entropia de dois bits, enquanto a distribuição não uniforme tem uma entropia muito menor devido à sua maior eficiência na transmissão de informações com códigos mais curtos. A entropia condicional, que é apenas uma entropia condicionada a algo, também é explicada, e o ganho de informação de um recurso é calculado tomando a entropia genérica antes de ver o recurso menos a entropia depois de ver o recurso.

  • 00:20:00 Nesta seção, o processo de divisão da árvore usando recursos com maior ganho de informação é explicado em detalhes. O algoritmo começa com uma folha não rotulada e faz um loop até que todas as folhas sejam rotuladas. Para cada folha não rotulada com o segmento, o algoritmo verifica a condição de parada, que pode ser a falta de recursos ou todas as instâncias da mesma classe. Se a condição de parada não for atendida, a folha é dividida na feição com maior ganho de informação. O limite para recursos numéricos é escolhido para maximizar o ganho de informação, e um classificador de árvore de decisão com recursos numéricos pode ter um limite de decisão mais complicado devido à possibilidade de dividir o mesmo recurso várias vezes com diferentes limites.

  • 00:25:00 Nesta seção, o palestrante discute o problema de overfitting ao usar árvores de decisão grandes e complexas. Eles explicam como a precisão do treinamento pode aumentar com o tamanho máximo da árvore, mas a precisão nos dados de teste ou validação pode diminuir drasticamente. Para resolver esse problema, o palestrante apresenta o conceito de poda e como isso ajuda a mitigar o overfitting. Eles também enfatizam a importância de dividir os dados em conjuntos de treinamento, validação e teste para seleção de hiperparâmetros e pesquisa de modelos para garantir a imparcialidade entre os modelos. Por fim, o palestrante observa que ferramentas como o SK Learn retêm automaticamente alguns dados de treinamento durante o processo de treinamento para fazer a poda.

  • 00:30:00 Nesta seção, o palestrante fala sobre árvores de regressão, que são usadas quando o rótulo de destino não é uma classe, mas sim um valor numérico. Os princípios básicos são os mesmos das árvores de decisão, mas há algumas diferenças a serem observadas. Em primeiro lugar, nas árvores de regressão, as folhas são rotuladas com números em vez de classes. A média ou mediana geralmente é usada para rotular instâncias no segmento. Em segundo lugar, em vez de entropia, a variância é usada para determinar qual recurso dividir em cada etapa, o que maximiza a informação obtida. O palestrante também discute uma hierarquia de generalização para o espaço do modelo, onde o modelo mais generalizante é uma função constante e adicionar mais divisões aumenta a complexidade do modelo.

  • 00:35:00 Nesta seção, o palestrante discute árvores de decisão e árvores de regressão como modelos e suas limitações, como problemas de alta variância e instabilidade. A solução para esses problemas é treinar várias árvores de decisão e combiná-las em um conjunto, que é uma técnica popular. O objetivo do aprendizado conjunto é resolver o tradeoff de viés e variância, onde o viés é um problema estrutural e a variância é a dispersão dos erros dos modelos. O aprendizado conjunto ajuda a resolver esses problemas, e é possível combinar árvores de decisão com outros modelos. A analogia de avaliar os projetos dos alunos com uma rubrica é usada para explicar o alto viés e a baixa variância.

  • 00:40:00 Nesta seção, o palestrante discute o problema de viés e variação no aprendizado de máquina e como a inicialização pode ajudar a resolver esse problema. Devido ao conjunto de dados limitado disponível, pode ser difícil determinar se a distância observada do alvo se deve a um alto viés ou alta variância. Bootstrapping resolve isso simulando o processo de amostragem de outro conjunto de dados por meio da reamostragem do conjunto de dados original com substituição para criar um novo conjunto de dados de amostra. Ao analisar a função de densidade cumulativa da distribuição empírica, fica claro que a reamostragem do conjunto de dados original aproxima a amostragem da distribuição de dados original, permitindo a detecção de alta variância criando diferentes conjuntos de dados para treinar.

  • 00:45:00 Nesta seção, o vídeo explica a agregação Bootstrap ou Bagging, que envolve a reamostragem do conjunto de dados e o treinamento de vários modelos em cada conjunto de dados de reamostragem. Os modelos são então combinados por maioria de votos para classificar novos dados, e o método reduz a variabilidade, mas não reduz o viés. Além disso, o vídeo discute o reforço, que ajuda a impulsionar uma família de modelos fracos para obter um viés mais baixo. O reforço envolve a adição de uma pequena coluna chamada peso ao conjunto de dados que indica a importância de cada recurso em um ponto específico do processo de aprendizado. A ideia geral de aumentar é começar com algum classificador, M0, que pode ser qualquer coisa - um classificador linear, um modelo constante ou um que gere uma classe majoritária.

  • 00:50:00 Nesta seção, é apresentado o conceito de reforço como uma técnica de conjunto de modelos. O aumento envolve o treinamento sequencial dos classificadores e a reponderação dos dados, aumentando o peso das instâncias que os classificadores anteriores erraram e diminuindo o peso das instâncias que acertaram. Os classificadores recebem peso com base em sua importância na melhoria do ensemble, e o ensemble final é uma soma de todos os modelos treinados com seus respectivos pesos. AdaBoost é uma abordagem mais baseada em princípios para aumentar e envolve definir uma função de erro para minimizar e usar dados de treinamento ponderados. A função de erro é usada para determinar o peso dado a cada modelo no conjunto.

  • 00:55:00 Nesta seção do vídeo, o palestrante explica a função de perda usada no Adaboost e como ela é minimizada para selecionar o próximo classificador a ser adicionado ao conjunto. Ele descreve como, para cada instância no conjunto de dados, o erro é calculado tomando o exponencial da diferença entre o rótulo de destino e o rótulo previsto e mostra como esse erro é somado em todo o conjunto de dados para fornecer o erro do conjunto atual . O palestrante então explica como esse erro é ainda mais simplificado em uma nova função que pode ser minimizada selecionando o próximo classificador para minimizar a soma dos pesos das instâncias classificadas incorretamente, que é a única parte da equação que pode ser influenciada pela escolha de classificador. No geral, o algoritmo Adaboost funciona selecionando de forma iterativa os classificadores que minimizam essa função de perda, aumentando efetivamente o peso das instâncias classificadas incorretamente e reduzindo a frequência de classificações incorretas em iterações futuras.

  • 01:00:00 Nesta seção, o palestrante explica o algoritmo AdaBoost, que é um método popular de reforço para modelos de classificação. Para criar um ensemble, o algoritmo começa com um classificador específico e os pesos são calculados para cada instância de dados de acordo com o desempenho do classificador nessa instância. Um novo classificador é treinado para minimizar a soma dos pesos das classificações incorretas, e esse novo classificador recebe um peso, que é calculado tomando a exponencial do erro e, em seguida, encontrando o valor de a que minimiza o erro total. Esse processo é repetido por um determinado número de etapas e o modelo final no conjunto é o resultado. O palestrante também explica a diferença entre boosting e bagging e apresenta o gradient boosting, que é uma variante do boosting projetada para modelos de regressão.

  • 01:05:00 Nesta seção, o palestrante discute a ideia básica do aumento de gradiente, que envolve a inicialização de um modelo com a função constante e o cálculo dos resíduos do conjunto até o momento. Em seguida, um novo modelo é ajustado ao conjunto de dados rotulado com resíduos em vez dos rótulos originais, que é adicionado ao ensemble ponderado por um valor gama. O modelo pode ser escrito recursivamente como M3 = M2 + outro modelo, expandindo a soma lentamente. É chamado de aumento de gradiente porque envolve calcular o gradiente em um modelo de superajuste para a soma da função de perda de erros quadrados, que é apenas a diferença entre a saída do modelo e a saída de destino, ou o gradiente residual.

  • 01:10:00 Nesta seção, o palestrante explica como o aumento de gradiente funciona dizendo a um modelo para seguir o gradiente no espaço de previsão. O aumento de gradiente permite a substituição da função de perda por outra função de perda, como a perda de L1 em vez da perda de L2. Tomando a derivada do valor da perda em relação à saída do modelo e aplicando a regra da cadeia, pode-se calcular o seno dos resíduos em vez dos próprios resíduos e treinar o próximo classificador no conjunto para prever o seno do resíduo. Este método permite a otimização de diferentes funções de perda no aumento de gradiente.

  • 01:15:00 Nesta seção, as diferenças entre aumento de gradiente e aumento de ADA são explicadas. No gradient boosting, cada modelo ajusta os pseudo-resíduos do modelo anterior, enquanto no ADA boost, cada novo modelo ajusta um conjunto de dados reponderado com base no desempenho do modelo anterior. O reforço de gradiente funciona melhor para modelos que não otimizam uma função de perda e não funcionam por meio de métodos de aprendizado inspirados em cálculo. O empilhamento, por outro lado, é uma técnica simples que combina os julgamentos de vários modelos em uma única saída. Essa técnica é usada para obter um aumento extra no desempenho depois que você treinou alguns modelos e deseja combiná-los em um modelo ainda melhor.

  • 01:20:00 Nesta seção, o palestrante explica que os ensembles, embora ofereçam uma vantagem sobre os modelos individuais, não são muito usados em pesquisas, pois os modelos precisam ser testados isoladamente para compará-los sem qualquer aumento que possa confundir os resultados. Além disso, os ensembles podem ser caros quando usados com grandes redes neurais e, portanto, são usados principalmente com modelos minúsculos, como carimbos de decisão ou pequenas árvores de decisão. O palestrante também reitera que o bagging reduz as variantes e o boosting reduz os vieses.
 

Aula 11 Dados Sequenciais: Modelos de Markov, Word Embeddings e LSTMs



11 Dados Sequenciais: Modelos de Markov, Word Embeddings e LSTMs

Neste vídeo, o palestrante discute os diferentes tipos de dados sequenciais encontrados no aprendizado de máquina, como dados numéricos ou simbólicos organizados no tempo ou na sequência. Eles introduzem modelos de Markov, incorporações de palavras e LSTMs como modelos para lidar com esses problemas. O vídeo descreve o processo de treinamento e previsão com dados sequenciais, incluindo o conceito de validação e treinamento em dados que ocorreram antes da coisa específica que está sendo testada. Além disso, o palestrante explica como modelar sequências com redes neurais, incluindo como lidar com sequências de diferentes comprimentos e modelagem de tempo, e o processo de treinamento de uma rede neural recorrente usando retropropagação no tempo. Por fim, o vídeo aborda aspectos da classificação de sequência para rótulo, que podem ser aprimorados com modelos de Markov quando redes neurais recorrentes esquecem as coisas rapidamente.

O vídeo abrange uma variedade de tópicos relacionados ao processamento de dados sequenciais, incluindo modelos de Markov e suas limitações, redes de memória longa e curta (LSTM) e suas vantagens, usando LSTMs para geração de texto e imagem, técnicas de forçamento de professores e legendas de imagens. O palestrante fornece explicações detalhadas sobre a estrutura LSTM e os vários portões que ela contém, bem como como treinar e obter amostras dessas redes para tarefas como geração de texto shakespeariano e legendagem de imagens. A importância do uso de camadas de incorporação para melhorar LSTMs de nível de palavra também é discutida, juntamente com o espectro de métodos disponíveis para processamento de sequência - de modelos mais simples a modelos mais poderosos, como LSTMs.

  • 00:00:00 Nesta seção, o palestrante discute a importância de participar da Pesquisa Nacional de Estudantes para estudantes de ciência da computação, já que o comparecimento tem sido baixo. Em seguida, o palestrante anuncia que não haverá lição de casa na próxima semana, pois será substituída por exames práticos. O palestrante garante aos espectadores que a parte difícil do curso acabou e as demais palestras serão menos complicadas. O tópico desta palestra são dados sequenciais, e o palestrante apresenta modelos de Markov, incorporação de palavras e LSTMs como modelos para lidar com esses problemas.

  • 00:05:00 Nesta seção, o palestrante discute os diferentes tipos de dados sequenciais que podem ser encontrados no aprendizado de máquina, como dados numéricos ou simbólicos organizados em tempo ou sequência. Os dados podem ter diferentes dimensões, como unidimensionais ou bidimensionais, dependendo da natureza do problema. Por exemplo, os dados de idioma podem ser visualizados como unidimensionais, com cada palavra sendo um valor discreto, ou como bidimensionais, com uma parte pós-texto da marca de fala. O palestrante também menciona possíveis tarefas de aprendizado de máquina, como classificação ou previsão, dependendo do tipo e dimensão dos dados.

  • 00:10:00 Nesta seção, o palestrante explica como usar modelos de aprendizado de máquina para prever o próximo valor de uma sequência com base nos valores anteriores em uma única configuração de sequência, transformando os dados em uma tabela com recursos para os valores anteriores e um alvo valor. Eles sugerem o uso de um aprendiz de regressão como regressão linear ou árvore de regressão para treinar um modelo, mas alertam que é importante dividir os dados em conjuntos de treinamento, validação e teste com um processo de validação para garantir que o modelo seja treinado apenas em dados passados e testados em dados futuros, que é o que acontece em casos de uso do mundo real.

  • 00:15:00 Nesta seção, o palestrante discute diferentes métodos de treinamento e previsão com dados sequenciais. Eles enfatizam a importância da validação e treinamento em dados que ocorreram antes da coisa específica que está sendo testada. Eles apresentam o modelo de Markov como um modelo probabilístico para modelagem em nível de palavra e explicam como quebrar a distribuição de probabilidade conjunta de múltiplas variáveis aleatórias usando a regra da cadeia de probabilidade. Eles mostram como decompor a frase "Parabéns, você ganhou um prêmio" em uma distribuição de probabilidade conjunta sobre seis variáveis aleatórias, que são seis variáveis aleatórias separadas e decompor a distribuição de probabilidade conjunta em um produto de distribuições condicionais das palavras condicionadas no palavras que o antecedem.

  • 00:20:00 Nesta seção, o palestrante discute como calcular a probabilidade de uma sentença decompondo-a em um produto de probabilidades condicionais. O uso de probabilidades de log é recomendado para evitar fluxos insuficientes, pois a probabilidade de uma palavra específica pode ficar muito baixa, especialmente com um vocabulário grande, portanto, é melhor usar o logaritmo. O modelo de linguagem ideal deve incluir não apenas regras gramaticais, mas também raciocínio de senso comum e física, mas, por enquanto, o falante usa a suposição de Markov, que assume que a probabilidade de uma palavra depende apenas de suas duas últimas palavras. Podemos estimar essas probabilidades contando quantas vezes elas ocorrem em um grande conjunto de dados de linguagem conhecido como corpus.

  • 00:25:00 Nesta seção, o vídeo discute como modelos de Markov e probabilidades condicionais podem ser usados para criar um modelo de linguagem que gera texto. O modelo de Markov permite o cálculo de probabilidades para uma sequência de palavras, que podem ser utilizadas para geração de texto por meio de amostragem sequencial. Essa técnica, embora tenha suas limitações, permite que modelos de linguagem sejam testados quanto à sua capacidade e precisão. Além disso, pode-se utilizar o modelo de Markov para a classificação, que é feita por meio de um classificador Bayesiano que modela as palavras com um modelo de linguagem, condicionado a spam ou ham, para inferir uma probabilidade de um e-mail ser spam.

  • 00:30:00 Nesta seção, os palestrantes discutiram modelos de Markov, que são usados para modelar dados de sequência estimando a probabilidade de uma sequência dada uma classe e, em seguida, usando a regra de Bayes para obter probabilidades de classe. Um modelo Markov de ordem zero pode ser usado para spam, mas para outras tarefas, um modelo de ordem superior pode ser melhor. No entanto, os modelos de Markov tratam as palavras como símbolos atômicos e não consideram o fato de algumas palavras terem significados semelhantes. Para resolver isso, os modelos de incorporação podem ser usados para atribuir a cada objeto (neste caso, palavras) um vetor de peso que modela as semelhanças entre os objetos. Isso é feito aprendendo os parâmetros ou valores nesses vetores para calcular fatores latentes, semelhante à codificação de imagens em representações vetoriais.

  • 00:35:00 Nesta seção, é introduzida a hipótese distributiva, que afirma que palavras que ocorrem perto de palavras semelhantes podem muitas vezes significar a mesma coisa. A palavra algoritmo de incorporação é então discutida como uma aplicação desta hipótese para calcular uma incorporação. Antes de aplicar o algoritmo, é necessária uma representação das palavras, que é uma rede neural com um vetor one-hot para cada palavra, permitindo uma rede neural muito simples onde o vocabulário é mapeado para uma saída de 300 para o espaço de incorporação. A parte inferior do modelo é usada como uma codificação para o espaço de incorporação e, embora alguns pesquisadores acreditem que seja uma tabela de consulta, é essencialmente a mesma coisa que um mapeamento de um vetor one-hot para uma incorporação.

  • 00:40:00 Nesta seção, o palestrante discute o conceito de incorporação de palavras, um método no qual um objeto discreto, como uma palavra, é representado como um vetor denso. Os embeddings são treinados criando uma matriz de um mapeamento linear dos embeddings, que pode então ser usado para encontrar uma distribuição de probabilidade no contexto das palavras. Ele dá um exemplo de como subtrair a incorporação de "homem" de "mulher" cria uma direção na qual as coisas se tornam mais femininas e como essa direção pode ser usada para calcular vetores de palavras para outras palavras, como "rainha". O palestrante explica como essas incorporações podem ser usadas como ponto de partida para redes neurais maiores para aprendizado de máquina e como um grande número de incorporações de palavras treinadas em grandes quantidades de dados de texto pode ser baixado da biblioteca de modelos de código aberto do Google para uso em outros projetos .

  • 00:45:00 Nesta seção, o palestrante discute como modelar sequências com redes neurais, incluindo como lidar com sequências de diferentes comprimentos e como modelar o tempo. Uma abordagem é usar uma conexão recorrente, na qual uma camada oculta assume a camada oculta anterior para permitir um ciclo na rede. Isso permite que a rede opere em sequências de diferentes comprimentos, e as sequências podem ser alimentadas uma de cada vez para obter uma saída de sequência. O palestrante também enfatiza a importância das sequências de preenchimento para torná-las do mesmo tamanho para agrupamento e treinamento com redes neurais.

  • 00:50:00 Nesta seção, é explicado o processo de treinamento de uma rede neural recorrente usando retropropagação no tempo. O desafio está na propagação de volta através da camada recorrente enquanto a camada oculta continua mudando. Uma maneira de resolver isso é desenrolar a rede para que a conexão recorrente vá da cópia anterior da rede para a próxima cópia. A rede resultante é tratada como uma grande rede feedforward sem conexões recorrentes e os pesos são atualizados por meio da propagação reversa. Esse processo de treinamento é chamado de aprendizado de sequência a sequência, onde a sequência de entrada é mapeada para uma sequência de saída.

  • 00:55:00 Nesta seção, o palestrante explica a sequência para o rótulo em que o rótulo de saída vem de dados de sequência, como classificação de banda. No entanto, não é ideal usar apenas o último elemento da sequência para prever a saída, pois isso cria assimetria e pode levar a problemas com a propagação do gradiente. Em vez disso, é melhor pegar toda a saída da sequência e fazer a média, o que permite que a rede considere cada parte da sequência de entrada, tornando-a um melhor preditor do rótulo. Além disso, o palestrante explica que a sequência rotulada pode vir de duas maneiras, repetindo o rótulo de entrada n vezes e alimentando-o em uma rede neural para produzir a saída ou inicializando o estado final com uma entrada e fornecendo à rede neural 0 vetores para gerar o seqüência. No entanto, isso não é eficiente, pois as redes neurais recorrentes tendem a esquecer as coisas rapidamente, o que significa que um modelo de Markov pode ser uma escolha melhor para alguns casos.

  • 01:00:00 Nesta seção, o palestrante discute as limitações dos modelos de Markov quando se trata de memória, principalmente para decidir quais informações valem a pena serem lembradas. A solução é a Long Short-Term Memory (LSTM), que é um tipo de rede neural recorrente que possui vários portões de aprendizado que decidem quais informações lembrar ou esquecer. As portas contêm dois vetores de valores entre 0 e 1 ou entre -1 e 1, onde o valor da esquerda seleciona a parte a ser adicionada à memória e o valor da direita determina quais informações reter, dependendo de quanto as informações de entrada precisam ser adicionado e quanto precisa ser cancelado. Ao usar o LSTM, as informações selecionadas para a memória são adicionadas continuamente, o que é propício para reter memórias de longo prazo.

  • 01:05:00 Nesta seção, o palestrante explica a estrutura da rede Long Short-Term Memory (LSTM), que é um tipo de rede neural recorrente formada por células. As células recebem entrada e fornecem saída em cada intervalo de tempo enquanto passam ao longo de um valor C (estado da célula) e um valor Y (saída) entre os intervalos de tempo. O alto-falante divide a notação visual da rede LSTM e passa a descrever vários portões, incluindo o portão de esquecimento que reduz a ativação na memória e o portão de entrada que decide quais partes da entrada adicionar à memória. A etapa final envolve a decisão do valor de saída, que ocorre por meio de outra camada ativada por sigmoide. O palestrante destaca a vantagem de usar redes LSTM - não há gradiente de fuga ao longo da espinha ou da esteira da rede, o que melhora sua eficiência.

  • 01:10:00 Nesta seção, o palestrante explica como amostrar de LSTMs para construir um gerador de sequência em nível de caractere. A saída é uma distribuição de probabilidade no próximo caractere com base no histórico de entrada. O modelo aprende a dispor coisas como vírgulas, colocar novas linhas e aproximar o pentâmetro iâmbico, que soa shakespeariano se lido em voz alta. O modelo é treinado para sequenciar dados no nível do caractere em vez do nível da palavra porque é mais poderoso, mas precisa ser alimentado com toda a sequência, mesmo que a amostra seja de apenas alguns caracteres. O palestrante cita um experimento em que alguém treinou e testou um modelo de Shakespeare que gerou um texto impressionante e bastante shakespeariano, demonstrando que o modelo pode aprender a sintaxe editando um artigo da Wikipédia, que inclui links e certos textos de marcação.

  • 01:15:00 Nesta seção, o palestrante discute o uso de LS DMs na geração de texto, como artigos da Wikipedia ou tweets de Donald Trump, por meio do treinamento da rede em grandes quantidades de dados. Eles destacam os diferentes modos em que o LS DM pode se manifestar, como HTML ou XML, e mencionam que a rede pode até gerar matemática que se parece com trabalhos matemáticos de alto nível. Além disso, o palestrante sugere o uso de LS DMs para gerar saídas aleatórias usando um vetor aleatório alimentado na rede e uma rede codificadora/decodificadora baseada em um codificador externo variacional (VAE), que é demonstrado por meio de um exemplo de música gerada por meio de uma rede neural treinados em trechos de MIDI.

  • 01:20:00 Nesta seção, o apresentador discute como modelar a linguagem usando uma técnica de forçamento do professor em que um modelo de linguagem preditiva de amostragem sequencial é combinado com um codificador externo para uma sequência mais complicada. Ele passa a demonstrar um modelo que usa a força do professor chamado SketchRNN, que é usado para modelar esboços que os humanos desenham rapidamente de vários assuntos, como gatos e corujas. O SketchRNN usa uma sequência variacional para codificador de sequência que leva a um espaço latente, que é usado para interpolar suavemente entre diferentes desenhos do mesmo assunto. Por fim, o apresentador mostra como essa mesma técnica pode ser usada para interpolar suavemente entre sentenças humanas, resultando em um resultado bastante interessante.

  • 01:25:00 Nesta seção, o palestrante discute o conjunto de dados Image COCO, que contém imagens do conjunto de dados chamado ImageNet junto com cinco legendas escritas por humanos que descrevem o que está acontecendo na imagem. O palestrante sugere que uma abordagem simples para a tarefa de legenda de imagem é baixar um modelo de classificação de imagem pré-treinado e remover a camada de classificação. O mapeamento resultante pode então ser alimentado a um LSTM para treinar o modelo para produzir legendas. O palestrante também explica como melhorar o LSTM em nível de palavra usando uma camada de incorporação e a diferença entre os modelos LSTM e Markov. Por fim, o palestrante discute o espectro de métodos que podem ser usados para o processamento de sequências, dos mais poderosos aos mais simples.
 

12 modelos de matrizes: sistemas de recomendação, PCA e convoluções de grafos



12 modelos de matrizes: sistemas de recomendação, PCA e convoluções de grafos

Na primeira parte do vídeo, o palestrante discute modelos matriciais e suas aplicações em sistemas de recomendação, que podem ser usados para recomendações de produtos, notícias e redes sociais. Os sistemas de recomendação dependem de feedback explícito e implícito, bem como de informações secundárias, e podem ser manipulados para espalhar informações falsas se não forem projetados adequadamente. A fatoração de matriz é um método comum para prever classificações com base no comportamento do usuário, com o problema de otimização de encontrar matrizes U e M para tornar o UTM o mais próximo possível de R resolvido por meio de métodos de erro quadrado e cálculo da norma Frobenius. O palestrante também discute métodos para otimizar esse problema usando gradiente descendente e explica a regra de atualização de gradiente para filtragem colaborativa. Além disso, o palestrante aborda cinco maneiras de melhorar o modelo de fatoração de matriz, incluindo o controle do viés do usuário e do filme, o uso de curtidas implícitas e a incorporação de informações do site. Por fim, o palestrante discute o poder da fatoração de matrizes no cenário clássico de aprendizado de máquina, as extensões do PCA na fatoração de matrizes e a utilidade dos modelos de gráficos no armazenamento de dados.

A segunda parte do vídeo apresenta vários modelos de matriz para sistemas de recomendação, incluindo convoluções de grafos para classificação de nós e previsão de links. As convoluções gráficas misturam incorporações de nós multiplicando a matriz de adjacência com as incorporações originais, mas essa abordagem tem limitações na representação de grandes gráficos sociais. Os métodos de validação tradicionais não funcionam para modelos de recursos mistos usados em sistemas de recomendação, portanto, o aprendizado transdutivo é necessário, onde apenas os rótulos do conjunto de treinamento são retidos, mas não os recursos. Além disso, a modelagem de dados de tempo e avaliações requer levar em consideração os dados de carimbo de data/hora e o aprendizado transdutivo. O vídeo termina com um resumo da palestra e uma prévia da discussão a seguir sobre aprendizado por reforço.

  • 00:00:00 Nesta seção, o palestrante apresenta o conceito de modelos matriciais, que são diferentes abordagens para analisar conjuntos de dados que são melhor visualizados como matrizes. Os modelos que serão discutidos compartilham a característica de lidar com conjuntos de dados como matrizes. A palestra se concentra em sistemas de recomendação, que normalmente são implementados por meio de fatoração de matrizes, e o modelo vencedor da competição Netflix é discutido. A palestra também aborda brevemente a análise de componentes principais e modelos de gráficos antes de concluir com uma discussão sobre validação.

  • 00:05:00 Nesta seção, o palestrante explica três formas de dados que podem ser usados em sistemas de recomendação: feedback explícito, feedback implícito e informações secundárias. O feedback explícito é quando o usuário é solicitado a avaliar um item específico, o que é muito valioso, mas relativamente raro. O feedback implícito pode ser obtido observando o que o usuário está fazendo, como exibições de página, listas de desejos ou até mesmo movimentos do mouse. Informações secundárias não são informações sobre o emparelhamento entre usuários e filmes, mas informações sobre os próprios usuários e filmes, como duração, atores e diretores. O palestrante observa que os sistemas de recomendação são úteis para várias configurações, incluindo recomendações de produtos (por exemplo, Amazon), notícias (por exemplo, Google News) e redes sociais (por exemplo, Twitter e YouTube).

  • 00:10:00 Nesta seção, o palestrante discute os sistemas de recomendação e suas vulnerabilidades. Os sistemas de recomendação são usados para sugerir conteúdo a usuários específicos, mas podem ser manipulados para espalhar informações falsas. O palestrante observa que qualquer situação com dois conjuntos de coisas e um relacionamento entre eles pode ser considerada um paradigma de recomendação. Por exemplo, receitas e ingredientes ou políticos e leis eleitorais. O problema com os sistemas de recomendação são os dados incompletos, pois nem todos os usuários classificam todos os filmes. O palestrante sugere o uso de modelos de incorporação para atribuir a cada usuário e filme um vetor e aprender os valores desses vetores com base em uma função de perda para prever os dados ausentes.

  • 00:15:00 Nesta seção, o palestrante descreve a fatoração de matrizes como uma forma de representar usuários e filmes em um modelo com o objetivo de prever classificações de filmes com base no comportamento do usuário. O modelo atribui um vetor a cada usuário e a cada filme, que são então multiplicados em uma grande matriz. Usando um produto escalar, o palestrante explica como o modelo prevê um valor entre menos infinito e infinito positivo, com valores mais altos indicando que o usuário tem mais chances de gostar do filme. As categorias do modelo tendem a reforçar suposições superficiais sobre o comportamento do usuário e, embora não sejam particularmente refinados, o modelo ainda pode oferecer previsões confiáveis. Por meio da fatoração de matrizes, uma matriz é decomposta em duas matrizes menores, com uma matriz incorporando usuários e a outra incorporando filmes, e seu produto escalar representando as previsões.

  • 00:20:00 Nesta seção, o apresentador explica o problema de otimização de encontrar as matrizes U e M para tornar o UTM o mais próximo possível de R. Isso é feito usando o método do erro quadrado e calculando a norma de Frobenius. No entanto, o problema é que muitas vezes há valores ausentes na matriz de classificação. Para resolver esse problema, a função de perda é calculada apenas sobre os elementos de R para os quais a classificação é conhecida no conjunto de treinamento, em vez de todos os elementos de R. O apresentador também discute os dois métodos para otimizar esse problema, que são otimização alternada e gradiente descendente. O método de gradiente descendente é mais flexível e fácil de adicionar ao seu modelo.

  • 00:25:00 Nesta seção, o palestrante explica a regra de atualização de gradiente para a técnica de filtragem colaborativa com fatoração de matrizes. Ele define a matriz de erro e explica o processo de derivação da função de perda em relação aos parâmetros. Em seguida, ele demonstra como a regra de atualização de gradiente é usada para atualizar os valores dos embeddings do usuário e do filme. A regra de atualização envolve calcular o produto escalar entre a linha e a coluna da matriz de erro e a respectiva matriz de incorporação e adicioná-lo ao parâmetro que está sendo atualizado.

  • 00:30:00 Nesta seção, o palestrante explica a lógica por trás da função de previsão de produto escalar em sistemas de recomendação e como ela pode ser treinada usando descida de gradiente estocástico. O problema de ter apenas avaliações positivas e como resolvê-lo por meio de amostragem negativa também é discutido. O palestrante então investiga duas maneiras de resolver o problema de fatoração de matriz não negativa, que produz algumas dimensões interpretáveis para filmes, semelhante ao conceito de espaço latente no PCA.

  • 00:35:00 Nesta seção, o palestrante discute cinco maneiras de melhorar o modelo de fatoração de matrizes para recomendações de filmes. Em primeiro lugar, ela explica como controlar o viés do usuário e do filme pode ser incorporado ao modelo por meio da adição de parâmetros escalares aprendidos. Em segundo lugar, o problema da estrela dourada ou da inicialização a frio é resolvido usando curtidas implícitas, como comportamento de navegação, para criar uma segunda incorporação de usuário. Em terceiro lugar, o modelo pode ser regularizado para evitar overfitting adicionando um termo de penalidade à função de perda. Em quarto lugar, a análise de componentes principais (PCA) pode ser aplicada para reduzir a dimensionalidade das incorporações do usuário e do filme. Por fim, o palestrante fala sobre como as convoluções gráficas podem ser usadas para incorporar informações sobre gêneros de filmes e lançar no modelo.

  • 00:40:00 Nesta seção, o palestrante explica como adicionar informações implícitas e informações do site aos sistemas de recomendação. Para obter informações implícitas, o sistema soma todas as incorporações de filmes que um usuário gostou e as adiciona às incorporações existentes. Da mesma forma, para informações do site, os recursos de um usuário são codificados em dados categóricos e suas incorporações correspondentes são somadas para criar o terceiro vetor de incorporação. O palestrante também observa que o tempo pode afetar as classificações, portanto, controlar o tempo é necessário para boas previsões. Isso pode ser feito agrupando as incorporações em períodos de tempo discretos e aprendendo diferentes incorporações para cada período. A seção termina com um resumo da fatoração de matrizes e vieses para sistemas de recomendação.

  • 00:45:00 Nesta seção, o palestrante discute o poder da fatoração de matrizes em sistemas de recomendação e como ela pode ser aplicada no cenário clássico de aprendizado de máquina. Tomando uma matriz de colunas de recursos e linhas de instância, a fatoração de matriz por meio de retropropagação ou outros métodos de treinamento pode criar uma representação de baixa dimensão de uma instância que pode ser recuperada multiplicando-a por um vetor C matriz C. Isso é semelhante às técnicas de redução de dimensionalidade, como a análise de componentes principais (PCA), mas pode ser equivalente ao PCA assumindo que as colunas de C são linearmente independentes, resultando em um problema de minimização restrito.

  • 00:50:00 Nesta seção, o apresentador discute o PCA e suas extensões na fatoração de matrizes. Eles explicam que o PCA pode ser usado para dados incompletos, maximizando a reconstrução apenas sobre os valores conhecidos dos dados. Ao fazer isso, permite a representação de baixa dimensão, ou incorporação, dos dados que podem ser usados para classificação ou regressão. A extensão do esparso PCA também é introduzida, que usa o regularizador L1 para impor esparsidade e facilitar a interpretação de parâmetros. O apresentador continua explicando como diferentes valores de perda podem ser aplicados ao problema de fatoração de matrizes, como entropia cruzada binária para dados binários, e mostra como esses métodos podem produzir melhores incorporações para os dados. A seção termina com uma introdução aos modelos de gráfico como uma forma útil de dados.

  • 00:55:00 Nesta seção, o palestrante discute a flexibilidade dos gráficos no armazenamento de dados, como redes sociais, interações de proteínas, redes de tráfego e gráficos de conhecimento. O palestrante então propõe a ideia de usar modelos de aprendizado de máquina que podem consumir grafos, especificamente para tarefas de previsão de links e classificação de nós, que podem ser vistas como semelhantes a problemas de recomendação. O palestrante apresenta o conceito de incorporação de nós e discute a rede neural convolucional do grafo como uma forma de aprofundar o gráfico e estender a incorporação básica.

  • 01:00:00 Nesta seção, o palestrante explica como funcionam as convoluções de grafos em sistemas de recomendação. As convoluções do gráfico atribuem uma incorporação dimensional aleatória a cada nó no gráfico, o que pode ser interpretado como a atribuição de uma cor aleatória para fins de visualização. A intuição por trás das convoluções de grafos é que elas misturam essas incorporações, permitindo extrair informações dos vizinhos do nó para sua própria incorporação. Após várias etapas de mistura, todos os nós terão eventualmente a mesma representação, que representa o grafo geral. Para misturar embeddings de nós, a matriz de adjacência é multiplicada com os embeddings originais, o que dá novos embeddings onde cada embedding de nó representa a soma de seus vizinhos mais ele mesmo. As incorporações precisam ser normalizadas para garantir que os valores não explodam.

  • 01:05:00 Nesta seção, o palestrante explica como usar convoluções gráficas para classificação de nós e previsão de links. Para a classificação do nó, um grafo simples recebe uma incorporação para cada nó e uma convolução do grafo é aplicada para criar novas incorporações com base nos nós vizinhos. Em seguida, outra convolução é aplicada para mapear os embeddings em duas dimensões para classificação. Para predição de link, as incorporações de nós são produzidas por meio de várias camadas de convoluções gráficas e um modelo de fatoração de matriz é usado sobre essas incorporações. Os gradientes são então usados para retropropagar através das convoluções do gráfico original para previsão de link com base na estrutura do gráfico mais profundo.

  • 01:10:00 Nesta seção do vídeo, o palestrante discute os desafios das convoluções gráficas, que envolvem a representação de um gráfico social de forma seletiva e não excessivamente inclusiva. Devido à propriedade de mundo pequeno dos grafos sociais, representar o grafo inteiro na representação de cada nó é problemático, e as convoluções de grafos tradicionais não filtram efetivamente as informações desnecessárias. Além disso, o treinamento deve ser feito em lote completo, o que pode reduzir o desempenho. O palestrante propõe a atenção gráfica como uma abordagem mais seletiva, mas ainda é uma área de pesquisa ativa. O palestrante também observa que a validação de modelos de convolução de grafos é desafiadora e requer um desvio dos métodos de validação de aprendizado de máquina padrão.

  • 01:15:00 Nesta seção, o palestrante explica que os métodos tradicionais de validação de teste de treinamento não funcionam para abordagens de recursos mistos, como os usados em sistemas de recomendação, pois a retenção de recursos do usuário ou de filmes resulta em perda de incorporações. Em vez disso, o aprendizado transdutivo é necessário, onde apenas os rótulos do conjunto de treinamento são retidos, mas não os recursos. Essa abordagem é significativa ao treinar modelos de incorporação, onde todo o vocabulário deve ser conhecido de antemão. No entanto, reter classificações ou links aleatórios ainda pode ser feito para os dados restantes a serem usados para treinamento e teste. Por fim, o palestrante observa que a classificação na identificação do nó ainda pode ser feita usando o grafo inteiro.

  • 01:20:00 Nesta seção, o palestrante discute o desafio de modelar tempo e avaliações em um conjunto de dados, onde os dados de timestamp e aprendizado transdutivo devem ser levados em consideração. Eles explicam que é importante não ter dados de treinamento do futuro e que o conjunto de teste deve estar no futuro do conjunto de treinamento. Além disso, o palestrante resume a palestra, destacando o uso da fatoração de matrizes para resolver a tarefa abstrata de recomendação e a generalização da recomendação usando modelos de grafos e convoluções de grafos. A seção termina com uma prévia da palestra a seguir sobre aprendizado por reforço.
 

13 Aprendizagem por Reforço: Gradientes de Política, Q Learning, AlphaGo, AlphaStar (MLVU2019)



13 Aprendizagem por Reforço: Gradientes de Política, Q Learning, AlphaGo, AlphaStar (MLVU2019)

O vídeo fornece uma introdução ao aprendizado por reforço e seus componentes fundamentais, discutindo exemplos como o carro robótico de equilíbrio e o jogo da velha. O palestrante investiga os desafios do aprendizado por reforço, incluindo funções não diferenciáveis, o atraso no recebimento de recompensas e o problema de atribuição de crédito. O problema de atribuição de crédito é abordado por meio de técnicas como busca aleatória, gradientes de políticas e Q-learning, onde o palestrante explica cada algoritmo, seus benefícios e suas limitações. O algoritmo Q-learning é discutido com mais detalhes, com uma explicação de como ele funciona usando uma grande tabela de números para representar os valores-Q. A apresentação termina com uma explicação de como o Q-learning profundo e o AlphaGo revolucionaram o campo do aprendizado por reforço.

  • 00:00:00 Nesta seção, o instrutor apresenta o tópico de aprendizado por reforço e explica como ele difere do aprendizado offline. O aprendizado por reforço envolve a modelagem de um agente que interage com um mundo e aprende em tempo real com o feedback que recebe. O exemplo de um robô aspirador em um ambiente desconhecido é usado para ilustrar esse conceito. O instrutor também menciona três algoritmos para resolver a tarefa de aprendizado por reforço, ou seja, pesquisa aleatória, gradientes de política e Q-learning. A discussão então muda para desenvolvimentos recentes em aprendizado por reforço, com foco em AlphaGo, AlphaZero e a busca contínua para vencer o melhor jogador humano do mundo em StarCraft II por meio do uso de IA.

  • 00:05:00 Nesta seção, o professor explica a estrutura básica do aprendizado por reforço, que envolve um ambiente, um modelo e um aluno. O modelo realiza ações e recebe recompensas imediatas e muda seu estado de acordo, enquanto o aluno atualiza o modelo em tempo real. O palestrante apresenta exemplos simples, como o problema do aspirador de pó, jogo da velha e problemas de controle para ilustrar como funciona o aprendizado por reforço. Nos problemas do jogo da velha e do aspirador de pó, as recompensas só são dadas quando o modelo atinge um estado final, enquanto os problemas de controle envolvem aprender a controlar um robô ou máquina em um ambiente automatizado.

  • 00:10:00 Nesta seção, o palestrante discute o aprendizado por reforço no contexto de um carro robótico de balanceamento de bastões, que é um problema clássico de controle no campo. O objetivo é manter o carro na posição vertical, o que é feito com um motor de física simples ou um robô físico. O sistema usa uma recompensa esparsa, onde a única recompensa dada é se o carrinho cair do trilho ou se o poste ficar na vertical. O objetivo do aprendizado é maximizar a recompensa evitando essa penalidade o máximo possível. O palestrante então mostra uma demonstração de um helicóptero de controle remoto que foi treinado usando aprendizado por reforço para realizar acrobacias, começando com aprendizado supervisionado e adicionando metas auxiliares e modelagem de recompensa.

  • 00:15:00 Nesta seção, o palestrante discute como o aprendizado por reforço mudou o jogo do aprendizado profundo. Ele ressalta que, antes do AlphaGo, os pesquisadores usavam os jogos do Atari para obter algoritmos para aprender com os pixels. Eles criaram uma rede neural chamada aprendizado de reforço profundo que permitiu ao sistema aprender a jogar muitos jogos diferentes. Este é um conceito poderoso porque os pesquisadores usaram uma rede neural profunda para aprender os mapeamentos de estados para ações, que chamamos de política. Existem três problemas principais com o aprendizado por reforço: perda não diferenciável, o problema de atribuição de crédito e exploração versus exploração.

  • 00:20:00 Nesta seção, o palestrante discute os desafios do aprendizado por reforço, incluindo a questão das funções não diferenciáveis dentro do ambiente e o equilíbrio entre exploração e explotação. A demora em receber a recompensa real do ambiente é outro problema, pois exige o reconhecimento de quais ações anteriores contribuíram para o resultado final. O palestrante também exemplifica o desafio encontrado em aprender a dirigir um carro, onde a recompensa imediata pela frenagem pode levar a uma associação errada com uma batida subsequente. A solução requer distribuir a recompensa pelas ações anteriores e aprender quais levaram a resultados positivos ou negativos.

  • 00:25:00 Nesta seção, o vídeo apresenta o problema de atribuição de crédito no aprendizado por reforço, que envolve a determinação dos pesos de uma rede neural que maximizará a recompensa ao interagir com o mundo. O vídeo explica como uma função de recompensa, transições de estado e uma política podem determinar o ambiente da rede neural. Ele apresenta três abordagens para resolver este problema, começando com a mais simples - busca aleatória. O conceito de métodos de otimização de caixa preta baseados em população também é apresentado, com um exemplo de aplicação bem-sucedida desse método a um jogo de Atari chamado "Frostbite".

  • 00:30:00 Nesta seção, o palestrante discute o aprendizado por reforço e diferentes técnicas utilizadas para o problema de atribuição de crédito. Eles recomendam começar com a busca aleatória como abordagem básica, que funciona bem para alguns jogos simples. No entanto, métodos mais complexos, como gradientes de política e Q-learning, são populares para pipelines de aprendizado de reforço mais profundos. O gradiente de política busca atribuir recompensas a cada passo de uma trajetória em uma sequência, com base na recompensa total ao final. Embora isso possa parecer contra-intuitivo, ele calcula a média de várias trajetórias e funciona bem em situações em que parte do pipeline de aprendizado profundo não é diferenciável.

  • 00:35:00 Nesta seção, o conceito de gradientes de política e como eles podem ser usados para otimizar a recompensa final esperada por meio da estimativa de gradientes é discutido. O algoritmo envolve estimar o gradiente amostrando várias trajetórias, seguindo cada uma dessas ações pelo restante do pipeline e multiplicando a recompensa final pelo gradiente do logaritmo da probabilidade dessa ação para cada trajetória na amostra. Esta estimativa do gradiente pode então ser usada para retropropagação adicional. Este algoritmo foi usado no AlphaGo e no AlphaZero.

  • 00:40:00 Nesta seção, o palestrante discute o Q-learning, que é um algoritmo popular no aprendizado por reforço usado para otimizar a recompensa com desconto. A recompensa com desconto é a recompensa total que uma apólice receberá se escolher ações específicas em diferentes estados. O Q-learning usa uma função recursiva para calcular a recompensa com desconto para cada estado com base nas ações da política. A política ótima que maximiza a recompensa descontada é determinada com base nesse cálculo. O palestrante usa um exemplo simples de um mundo de aspirador de pó para demonstrar como o Q-learning funciona.

  • 00:45:00 Nesta seção, o palestrante explica o conceito de uma política ótima e uma função de valor ótima no aprendizado por reforço. A política ótima leva ao valor máximo para um determinado estado, enquanto a função de valor ótimo é a função de valor dessa política. No entanto, esses valores são muitas vezes difíceis de calcular. O palestrante então apresenta o algoritmo Q-learning, que redefine a política ótima e a função de valor ótimo em termos de uma função chamada Q. Q é definido como a recompensa imediata multiplicada pelo valor descontado de Q para o próximo estado resultante de uma ação tomada no estado atual. A definição circular de Q permite a possibilidade de criar uma função Q e perguntar se ela é ótima preenchendo os valores.

  • 00:50:00 Nesta seção, o palestrante discute o método de resolução de equações recorrentes por iteração como forma de encontrar a função Q ideal para Q-learning. Ele simplifica a relação de recorrência usando uma função escalar e demonstra que a computação iterativa pode ser usada para encontrar o estado/solução estável. Da mesma forma, para Q-learning, a função Q inicial é inicializada aleatoriamente e, em seguida, a relação de recorrência é aplicada como um programa, e a função Q é atualizada com base nos valores fornecidos pela relação de recorrência. Os valores da função Q são atualizados após cada interação com o ambiente onde um estado, ação, recompensa ou estado sucessor é encontrado, e o valor máximo sobre cada estado sucessor é usado para atualizar a função Q.

  • 00:55:00 Nesta seção, o algoritmo de aprendizagem Q é explicado, que envolve aprender uma grande tabela de números para representar valores Q. O algoritmo funciona observando a recompensa imediata em cada estado e propagando-a de volta ao estado inicial por meio da repetição da mesma trajetória. O espaço de estados é explorado através da exploração epsilon-greedy, um processo onde a melhor política é seguida com uma pequena probabilidade de explorar aleatoriamente um estado. O aprendizado Q profundo é então introduzido, o que envolve a implementação de uma rede neural para aprender a função de valor Q. Por meio da retropropagação, a rede é atualizada com informações de recompensas imediatas observadas e estados sucessores. Por fim, uma explicação de como funciona o AlphaGo é prometida nos 30 minutos restantes do vídeo, seguindo uma recomendação do documentário "AlphaGo".

  • 01:00:00 Nesta seção, o palestrante explica o jogo Go e desfaz alguns equívocos comuns sobre o AlphaGo. Embora seja verdade que o jogo de Go tem um alto fator de ramificação, não é apenas o tamanho da árvore que torna o jogo difícil. Olhar profundamente para a árvore para descobrir a melhor estratégia de movimento também é um aspecto desafiador. O palestrante também discute abordagens antigas do jogo Go, como o algoritmo minimax, que é usado para enumerar todos os futuros possíveis do estado atual.

  • 01:05:00 Nesta seção, o palestrante discute a busca em árvore de Monte Carlo, um método para explorar uma árvore de jogo de forma rápida e eficiente para aproximar o algoritmo minimax. Esse método envolve fazer rollouts, que escolhem movimentos aleatoriamente e estimam o valor do estado em termos de aprendizado por reforço. O palestrante fala sobre como a pesquisa de árvores em Monte Carlo combina lançamentos com a manutenção de uma memória da árvore local para construir regiões promissoras da árvore sem explorar tudo. O algoritmo básico envolve expandir os nós, fazer rollouts e retropropagar valores para atualizar as probabilidades de todos os nós seguidos até a folha. Esse método funciona bem e não envolve nenhum aprendizado de máquina ou redes neurais.

  • 01:10:00 Nesta seção, o palestrante discute como AlphaGo e AlphaZero são exemplos de aprendizado por reforço aplicado ao jogo de Go. AlphaGo usa duas redes neurais, uma rede de política e uma rede de valor, para jogar Go. A rede de política mapeia um estado do tabuleiro para uma ação, e a rede de valor mapeia o estado para a probabilidade de vitória desse estado. Eles usam o aprendizado por imitação para treinar essas redes aprendendo com os jogos humanos e, em seguida, melhoram por meio do autojogo usando o aprendizado por reforço de gradiente de política. Durante o jogo real, o AlphaGo usa a pesquisa em árvore de Monte Carlo com o valor e a rede de políticas para fazer seus movimentos. AlphaZero é uma versão mais recente que não usa nenhuma informação humana, mas constrói sua compreensão do jogo inteiramente por meio do autojogo. O AlphaZero combina as redes de política e valor em uma única rede, usa a pesquisa de árvore Monte Carlo como um operador de melhoria de política e adiciona conexões residuais com normalização em lote para melhorar o desempenho.

  • 01:15:00 Nesta seção, o conceito de "monstro de duas cabeças" é discutido, onde uma rede tem um conjunto compartilhado de camadas inferiores que obtêm gradientes das saídas de política e valor. Durante o treinamento, o princípio MCTS é usado como um operador de melhoria de política, de modo que eles começam com uma política inicial, deixam-na jogar contra si mesma usando MCTS e observam a política resultante como MCTS. Esta etapa de melhoria observada é então dada como um objetivo de treinamento para a rede. Além disso, uma combinação de conexões residuais e melhor normalização é usada como um truque para a rede neural, permitindo uma facilidade gradual no aprendizado de uma rede neural cada vez mais profunda que funciona muito bem, especialmente em combinação com a normalização em lote.

  • 01:20:00 Nesta seção, o palestrante discute a importância da inicialização de peso e padronização de dados para o treinamento adequado de redes de aprendizado por reforço profundo. O palestrante sugere que inicializar os pesos para que a entrada seja padronizada com média zero e variância um resulta em gradientes de melhor comportamento durante a retropropagação. A normalização do lote é uma camada útil para ajudar nessa padronização, pois examina todas as instâncias do lote, calcula a média e o desvio padrão e os padroniza. Isso pode ajudar a acelerar o treinamento e treinar redes muito mais profundas; o palestrante cita o sucesso do AlphaGo e do AlphaZero no treinamento usando normalização em lote.

  • 01:25:00 Nesta seção, o palestrante discute o desenvolvimento do AlphaStar, o mais recente avanço da DeepMind em aprendizado de máquina aplicado a jogos de estratégia em tempo real. Ao contrário do jogo Go, que havia sido considerado “resolvido” pelo AlphaGo da DeepMind, StarCraft apresentou desafios únicos para o aprendizado de máquina devido ao seu espaço de ação diversificado, informações imperfeitas e ausência de uma árvore de jogo. O AlphaStar usa uma combinação de técnicas, incluindo um torso transformador, núcleo LSDM profundo, rede de ponteiros e aprendizado multiagente. Embora DeepMind ainda não tenha publicado os detalhes de como o AlphaStar funciona, a demonstração de suas habilidades contra jogadores de Starcraft de nível mundial é impressionante, representando o estado atual da arte neste campo.

  • 01:30:00 Nesta seção, o palestrante discute o uso de transformadores, que funcionam como embeddings e permitem que as redes neurais comecem a aprender as relações entre as unidades. Isso é importante porque permite que a rede neural raciocine sobre as relações entre unidades específicas, por exemplo, para navegação em um jogo. O palestrante então explica como o aprendizado por reforço funciona na amostragem sequencial e como a cabeça de política auto-regressiva ajuda a criar uma sequência de ações mais coerente e eficiente. Por fim, o palestrante explica o conceito de aprendizado multiagente e como ele é utilizado para evitar que os jogadores se esqueçam de vencer estratégias fáceis.

  • 01:35:00 Nesta seção, o palestrante discute a polêmica em torno do AlphaStar, um sistema de IA desenvolvido pela DeepMind para jogar o jogo StarCraft. AlphaStar teve sucesso em derrotar jogadores profissionais de StarCraft, levando a debates sobre se o sistema de IA estava realmente apresentando desempenho semelhante ao humano ou explorando habilidades que os humanos não possuem. Uma das principais vantagens do AlphaStar era que ele podia ver todo o tabuleiro de uma só vez, ao contrário dos jogadores humanos que precisam ajustar constantemente a visão da câmera. Além disso, embora o AlphaStar fosse limitado a cerca de 600 ações por minuto, essas ações eram de qualidade superior às ações de jogadores humanos que podiam clicar até 800 vezes por minuto com muito ruído. No entanto, um ponto fraco do AlphaStar era que ele não conseguia responder bem às novas estratégias encontradas durante o jogo, que é um problema central do sistema que poderia fornecer informações sobre cognição.
 

14 Revisão: viés indutivo, viés algorítmico, impacto social do aprendizado de máquina (MLVU2019)



14 Revisão: viés indutivo, viés algorítmico, impacto social do aprendizado de máquina (MLVU2019)

Esta primeira parte do vídeo fornece uma revisão abrangente dos tópicos de aprendizado de máquina, incluindo funções de perda, sistemas de aprendizado profundo, viés indutivo e algorítmico e problemas em aberto no aprendizado de máquina. O palestrante enfatiza a importância da metodologia e dos casos de uso do mundo real no processo de ciência de dados e fornece dicas para estudar e superar a procrastinação. O palestrante também discute estratégias para melhorar a compreensão dos conceitos de aprendizado de máquina e oferece recursos para aprendizado adicional. Por fim, o vídeo destaca o problema da generalização em modelos de aprendizado de máquina e a importância dos vieses indutivos na melhoria do desempenho do modelo.

A segunda parte do vídeo discute vários problemas relacionados ao aprendizado de máquina, incluindo viés indutivo, viés algorítmico e o impacto social do aprendizado de máquina. O viés indutivo pode ser construído em uma rede neural para resolver problemas de causalidade, composicionalidade e generalização. No entanto, esta abordagem também tem limitações, incluindo robustez reduzida contra variáveis não modeladas. O viés algorítmico pode ser perpetuado se os modelos de aprendizado de máquina reforçarem os vieses nos dados. Isso pode ser problemático em casos como algoritmos de reconhecimento facial que falham em reconhecer pessoas de cor ou algoritmos usados no sistema judicial dos EUA que têm preconceitos em relação aos negros. O desenvolvimento responsável desses sistemas é importante para evitar a perpetuação de preconceitos e promover a equidade nos processos de tomada de decisão.

  • 00:00:00 Nesta seção do vídeo, o palestrante fornece uma revisão dos tópicos abordados ao longo do curso de aprendizado de máquina, incluindo a receita básica de aprendizado de máquina que envolve tarefas padrão, como classificação ou regressão, escolha de instâncias e recursos, escolha uma classe de modelo e procurando um bom modelo para ajustar as instâncias e recursos. O palestrante destaca a importância da metodologia e a ideia de dividir os dados em um conjunto de treinamento e um conjunto de teste para evitar o uso excessivo do conjunto de teste. Ele enfatiza a importância de manter o caso de uso do mundo real em mente e tomar decisões no processo de ciência de dados que reflitam esse caso de uso. O palestrante também fornece estratégias de exame e uma perspectiva sobre o estado atual e o impacto futuro do aprendizado de máquina.

  • 00:05:00 Nesta seção, o palestrante discute várias funções de perda que podem ser usadas no aprendizado de máquina, começando com a precisão e suas limitações. A função de perda de regressão logística é apresentada, que usa uma função sigmóide para interpretar as saídas do modelo como probabilidades sobre classes e, em seguida, otimiza essas probabilidades usando o princípio de máxima verossimilhança e perda de entropia cruzada. Outras funções de perda discutidas incluem mínimos quadrados, entropia e SVM de margem flexível. Finalmente, o palestrante apresenta o algoritmo de retropropagação que é usado para calcular o gradiente para modelos complicados, dividindo-os em uma composição de módulos e usando a regra da cadeia para obter um produto de derivadas locais.

  • 00:10:00 Nesta seção do vídeo, o palestrante discute os fundamentos dos sistemas de aprendizado profundo e como calcular gradientes sobre funções diferenciáveis suaves usando tensores. Ele também fala sobre modelos de variáveis ocultas e descreve o algoritmo de maximização de expectativa para encontrar distribuições em variáveis ocultas. A palestra então passa para redes neurais geradoras, que são modelos de variáveis ocultas contendo redes neurais. O palestrante discute o ajuste dos parâmetros por meio de dados usando redes adversárias generativas e autoencoders variacionais. Por fim, a palestra aborda modelos de árvore de decisão e regressão, bem como dados e modelos sequenciais, como redes neurais recorrentes e modelos de Markov.

  • 00:15:00 Nesta seção, o palestrante discute o viés indutivo e algorítmico no aprendizado de máquina, sugerindo que os dados de treinamento sempre devem preceder os dados de teste no tempo e que a validação cruzada deve ser feita usando a validação cruzada walk-forward. O palestrante então aborda os sistemas de recomendação que usam avaliações de usuários e filmes como a única fonte de dados e como esse modelo de matriz é muito informativo tanto para os usuários quanto para os filmes. Finalmente, o palestrante explica que o aprendizado por reforço requer um trade-off entre exploração e exploração, e que as redes neurais convolucionais com abandono não constituem um dilema de exploração versus exploração, mas sim uma técnica de otimização de hiperparâmetros online.

  • 00:20:00 Nesta seção, o palestrante explica que, ao falar sobre temas complexos, os conceitos são como um gráfico em nossas cabeças, mas ao explicá-los, tornam-se uma sequência. Para ajudar a reconstruir as relações de nível superior entre os conceitos discutidos, o palestrante cria um mapa mental de pesquisa e modelos. Os modelos são divididos em instâncias específicas de redes neurais, como regressão linear, classificação linear e regressão logística, juntamente com modelos mais complicados, como J de Ganz e v AE. O palestrante também discute os diferentes tipos de métodos de pesquisa, sendo a descida de gradiente a mais genérica e a descida de gradiente estocástica e a descida de gradiente em mini-lote sendo variantes específicas. O palestrante observa que a descida de gradiente de mini-lote é o que é comumente usado na maioria das vezes. Por fim, o palestrante discute as diferentes configurações e formas de lidar com dados, como a configuração básica de divisão em recursos, instâncias e valores de destino e a configuração da sequência de lidar com instâncias separadas em uma ordem específica.

  • 00:25:00 Nesta seção, o palestrante discute os diferentes tipos de conjuntos de dados e tarefas no aprendizado de máquina, como dados de sequência, sistemas de recomendação e aprendizado online. Eles também falam sobre aprendizado profundo como um método que envolve a construção de um pipeline de ponta a ponta sem fazer nenhuma extração manual de recursos para evitar a perda de informações. O palestrante dá dicas sobre alguns "truques do ofício" e uma revisão de todas as tarefas e modelos abstratos discutidos nas palestras. Por fim, o palestrante dá dicas de estudo para a prova, que inclui três categorias de questões: recordação, combinação e raciocínio.

  • 00:30:00 Nesta seção, o palestrante discute os três tipos de perguntas que os alunos podem esperar no próximo exame: questões de retenção, combinação e aplicação. Ele fornece algumas dicas para ajudar os alunos a lidar com a procrastinação, como perceber que a procrastinação é causada pelo perfeccionismo e encontrar o menor compromisso viável para iniciar uma tarefa. O palestrante também sugere a criação de uma barra de progresso para acompanhar o progresso e evitar que o trabalho seja visto como uma tarefa sem fim. Por fim, ele lembra aos alunos que não sejam perfeccionistas.

  • 00:35:00 Nesta seção do vídeo, o palestrante dá dicas de como vencer a procrastinação e aumentar a produtividade. Uma técnica que ele sugere é a Técnica Pomodoro, que envolve definir um cronômetro para 25 minutos e trabalhar com foco extremo durante esse período, seguido de uma pausa de cinco minutos. Ele também sugere focar no conteúdo da aula para um exame e usar exames práticos para se preparar rapidamente para um próximo teste. No geral, o palestrante enfatiza a importância de dar passos pequenos e alcançáveis em direção a uma meta, em vez de buscar a perfeição de uma só vez.

  • 00:40:00 Nesta seção, o palestrante compartilha estratégias para melhorar a compreensão dos conceitos de aprendizado de máquina. Em vez de ler tudo minuciosamente, ele sugere fazer uma passagem rápida para identificar as lacunas de conhecimento e, em seguida, focar nessas áreas específicas. Para ajudar nesse processo, ele recomenda criar uma lista de palavras-chave durante o aprendizado, para consulta posterior para esclarecimentos. Ele também aconselha os alunos a criar suas próprias questões de exame para priorizar quais tópicos focar e sugere a leitura de várias fontes para obter diferentes perspectivas sobre o material. Por fim, ele recomenda o curso intensivo de aprendizado de máquina do Google como um recurso abrangente para aprendizado adicional.

  • 00:45:00 Nesta seção, o apresentador discute os problemas em aberto no aprendizado de máquina, ou seja, causalidade, composicionalidade e generalização. A causalidade é um problema difícil para os métodos modernos de aprendizado de máquina porque a correlação não implica causalidade. Para identificar a causalidade, é necessária intervenção, que pode ser feita por meio de um ambiente de aprendizado por reforço, onde experimentos podem ser conduzidos. No entanto, se os experimentos não forem possíveis devido a razões éticas ou práticas, pode-se usar o conhecimento prévio para injetar no modelo. O apresentador também menciona desenhar pequenos gráficos para modelar as possíveis causas no mundo.

  • 00:50:00 Nesta seção, o palestrante fala sobre vieses indutivos e vieses algorítmicos enquanto explora como integrar o raciocínio humano em modelos de aprendizado de máquina. Eles discutem como a causalidade pode ser inferida e como o conhecimento prévio pode ser usado para raciocinar sobre correlações. Eles também discutem questões de composicionalidade e generalização em aprendizado de máquina, especialmente observadas em redes neurais recorrentes. O palestrante conclui afirmando nossa necessidade de entender os efeitos de composição para avançar ainda mais o aprendizado de máquina.

  • 00:55:00 Nesta seção, o palestrante discute o problema da generalização em modelos de aprendizado de máquina e como eles tendem a desmoronar quando testados em dados que são ligeiramente diferentes de seus dados de treinamento. A solução para isso está em pensar sobre o viés indutivo, que se refere às restrições implícitas ou explícitas colocadas em um modelo para incliná-lo para certas soluções em seu espaço de modelo. O palestrante dá exemplos de diferentes tipos de modelos e seus vieses indutivos, destacando como vieses indutivos mais fortes, como os encontrados em redes neurais convolucionais, podem melhorar a capacidade de generalização de um modelo.

  • 01:00:00 Nesta seção, o palestrante discute a ideia de viés indutivo, que pode ser incorporado a uma rede neural para ajudar a resolver problemas de causalidade, composicionalidade e generalização. Ao injetar conhecimento de fundo e construir composicionalidade explicitamente no modelo, a rede pode aprender a representar centenas ou milhares de dígitos, mesmo que tenha visto apenas dígitos de até cem. No entanto, quanto mais um modelo é restrito, menos robusto ele se torna em relação às coisas que não modelou. Além disso, o palestrante prevê que o aprendizado de máquina se moverá em direção a sistemas de aprendizado de ponta a ponta, onde o aprendizado de máquina se espalhará por todo o sistema, levando a algo chamado programação diferencial ou "software 2.0".

  • 01:05:00 Nesta seção, o palestrante discute o potencial do aprendizado de máquina se tornar primitivo em linguagens de programação e como isso pode levar a sistemas maiores e mais previsíveis. O palestrante também explora o impacto do aprendizado de máquina nas artes criativas, como o design de fontes, e sugere que o aprendizado de máquina pode ser usado para aumentar a inteligência, onde as máquinas aprimoram os processos humanos existentes, como criatividade e design. O conceito de infraestrutura inteligente também é apresentado como uma possível solução para as preocupações com o desenvolvimento de robôs assassinos.

  • 01:10:00 Nesta seção, o palestrante discute os perigos potenciais dos geradores de linguagem, como o GPT, que tem a capacidade de produzir linguagem coerente e gerar notícias falsas em escala. A preocupação é que esse tipo de tecnologia possa ter um impacto social significativo, podendo influenciar discussões e eleições nacionais ao permitir que indivíduos manipulem o conteúdo. Além disso, a questão do viés algorítmico também é discutida, pois os modelos de aprendizado de máquina podem reforçar vieses nos dados em que são treinados, o que pode ter consequências negativas quando colocados em produção.

  • 01:15:00 Nesta seção, o palestrante discute a questão do viés algorítmico, onde os algoritmos de aprendizado de máquina podem amplificar os vieses que já existem nos dados, em vez de eliminá-los. Isso pode resultar em consequências não intencionais e impactos prejudiciais em determinados grupos, como visto em exemplos como algoritmos de reconhecimento facial que falham em reconhecer pessoas de cor e resultados de mecanismos de pesquisa para imagens de CEO predominantemente masculinas. O palestrante também destaca a importância de monitorar sistemas e estar ciente dos vieses inerentes aos algoritmos de aprendizado de máquina.

  • 01:20:00 Nesta seção, o palestrante discute a questão do viés algorítmico em sistemas de aprendizado de máquina e os impactos sociais que isso pode ter. Ele explica o caso de um sistema de aprendizado de máquina usado para prever a reincidência no sistema judicial dos EUA que tinha preconceitos em relação aos negros, levando a previsões incorretas e perpetuando preconceitos sociais. Ele argumenta que, mesmo que os dados usados nesses sistemas sejam precisos, a confiança no aprendizado de máquina para tomar decisões com base na raça pode levar a perfis raciais e perpetuar vieses sistêmicos. Ele cita um caso na Holanda em que o perfil racial foi normalizado e aceito pelo público. O palestrante defende o uso ético do aprendizado de máquina para evitar a perpetuação de vieses e promover a justiça nos processos de tomada de decisão.

  • 01:25:00 Nesta seção, o palestrante discute a questão do perfil racial e como ele se relaciona com o uso indevido de probabilidades. Eles explicam o conceito de falácia do promotor e como ele pode assumir erroneamente que a probabilidade de um resultado dada uma certa condição é a mesma que a probabilidade da condição dada o resultado. O palestrante argumenta que, mesmo que as previsões sejam precisas, isso não significa necessariamente que as ações baseadas nessas previsões sejam justas ou morais. Além disso, eles apontam que certos atributos como etnia ainda podem ser inferidos ou correlacionados com outros atributos, dificultando a eliminação completa do viés racial dos sistemas de aprendizado de máquina. Por fim, o palestrante observa que, embora os indivíduos devam ser responsabilizados por suas próprias ações, é fundamentalmente injusto permitir que sejam penalizados pelas ações de outros que compartilham seus atributos, o que pode ter impactos negativos como microagressões ou ser alvo injusto em situações como paradas de trânsito.

  • 01:30:00 Nesta seção, o palestrante discute o potencial impacto social do aprendizado de máquina e a necessidade de desenvolvimento responsável desses sistemas. Com o aprendizado de máquina governando muitas decisões, há um novo problema de depender de um componente defeituoso em escala, e o sistema de crédito social da China é um exemplo. Políticos e humanos estão bem com o desenvolvimento de tais sistemas, então há uma necessidade de cientistas da computação, cientistas da informação e cientistas de dados que tenham conhecimento sobre esses problemas para construir e desenvolver esses sistemas de forma responsável. A responsabilidade da construção destes sistemas recai sobre os alunos que cursam estas áreas, pelo que o orador lhes deseja boa sorte nos exames e trabalhos finais.
 

Segmentar Imagens e Vídeos em Python usando o Modelo de Qualquer Coisa de Segmento (SAM) | YOLOv5 | YOLOv8 e SAM



Segmentar Imagens e Vídeos em Python usando o Modelo de Qualquer Coisa de Segmento (SAM) | YOLOv5 | YOLOv8 e SAM

Este vídeo apresenta o Segment Anything Model (SAM), um modelo de IA que pode identificar e extrair objetos de imagens e vídeos para várias tarefas. O SAM é treinado em um enorme conjunto de dados de 11 bilhões de imagens e 1,1 bilhão de máscaras e tem forte desempenho em uma variedade de tarefas de segmentação. O vídeo fornece instruções passo a passo para usar o SAM em um sistema local, incluindo como instalar os pacotes necessários, baixar pontos de verificação de modelos pré-treinados e realizar segmentação em imagens e vídeos usando Python. O vídeo também demonstra como usar o SAM com YOLOv5 ou YOLOv8 para criar caixas delimitadoras em torno de objetos de interesse. O SAM também tem aplicações potenciais em animação.

  • 00:00:00 Nesta seção, o vídeo apresenta o Segment Anything Model (SAM), um modelo de IA lançado recentemente pela Meta que pode identificar e extrair objetos de imagens e vídeos para várias tarefas. O SAM é treinado em 11 bilhões de imagens e 1,1 bilhão de máscaras e possui uma forte generalização zero-shot em uma variedade de tarefas de segmentação. O vídeo demonstra como usar o SAM por meio de uma demonstração que permite aos usuários carregar uma imagem e realizar a segmentação na imagem completa ou cortar cada objeto separadamente. Os usuários também podem desenhar caixas delimitadoras, adicionar máscaras e executar várias máscaras. O SAM também tem aplicações potenciais em animação. O vídeo também fornece informações adicionais sobre a arquitetura do SAM, disponibilidade do conjunto de dados e perguntas frequentes.

  • 00:05:00 Nesta seção do vídeo, o apresentador demonstra como usar o Segment Anything Model (SAM) para criar várias máscaras para diferentes objetos em uma imagem. O SAM foi treinado em um conjunto de dados de 11 milhões de imagens e 1,1 bilhão de máscaras e tem um forte desempenho em uma variedade de tarefas de segmentação. O apresentador mostra como selecionar uma imagem, executar a segmentação na imagem completa e recortar os objetos separados. O apresentador também mostra como desenhar caixas delimitadoras em torno de objetos e como baixar e distribuir os dados resultantes. O vídeo termina com informações sobre como instalar o SAM e usá-lo em Python, inclusive com YOLOv5 e YOLOv8.

  • 00:10:00 Nesta seção do vídeo, o apresentador explica os requisitos para executar o modelo do segmento Anything em um sistema local, incluindo ter uma GPU e instalar os pacotes necessários, como Torch e Dodge Vision com suporte a CUDA. Eles demonstram como clonar o repositório do modelo Segment Anything e instalar todas as dependências necessárias usando pip. O vídeo também aborda como converter um modelo de segmentação para o formato ONNX e como baixar os pontos de verificação do modelo pré-treinado para três tamanhos diferentes de backbone. O apresentador então mostra como fazer a segmentação em imagens e vídeos usando o modelo. O vídeo também inclui instruções passo a passo detalhadas para cada tarefa, facilitando o acompanhamento dos espectadores.

  • 00:15:00 Nesta seção do vídeo, o apresentador primeiro importa todas as bibliotecas necessárias, incluindo Matplotlib para exibir imagens de entrada e saída no notebook do aplicativo Google. Em seguida, eles baixam amostras de imagens de sua unidade e mostram uma imagem de exemplo de várias pessoas caminhando com edifícios ao fundo. Em seguida, eles carregam um ponto de verificação de modelo pré-treinado com borda de traço no bloco de anotações do aplicativo Google e aplicam o gerador automático de máscara de modelo de qualquer coisa do segmento às imagens para segmentá-las. O apresentador fornece pontos por lado das imagens que são usados pelo SMAM para digitalizar a imagem e segmentá-la com base nos pontos fornecidos. Um limite IOT de previsão de 0,9 é definido para aumentar a precisão da segmentação.

  • 00:20:00 Nesta seção do vídeo, o apresentador demonstra como usar o Segment Anything Model (SAM) para realizar a segmentação de objetos em imagens e vídeos usando Python. Eles demonstram como ajustar a programação IU para aumentar a precisão e reduzir a quantidade de lixo na saída. Eles aplicam o modelo de segmentação a uma imagem de amostra e mostram como ela segmenta com precisão a pessoa, a construção e a árvore. Em seguida, eles usam o mesmo modelo para segmentar um vídeo de amostra instalando o pacote de meta segmentação e baixando vídeos de amostra do Google Drive. O apresentador então copia o código de um repositório GitHub e o aplica ao vídeo, implementando efetivamente o SAM no vídeo.

  • 00:25:00 Nesta seção, o palestrante discute o repositório Segment Anything Model (SAM), que contém três modelos diferentes com tamanhos de backbone diferentes, permitindo que os usuários definam o nome do modelo e chamem o vídeo que desejam implementar. O palestrante executa o código necessário para integrar o SAM com YOLOv5 ou YOLOv8, usando pacotes existentes e imagens de amostra. O palestrante demonstra como o SAM é usado para realizar segmentação em prédios, árvores e carros, usando códigos de cores para reduzir o ruído da saída. O palestrante também discute as diferentes versões do modelo de segmentação, indicando que cada modelo possui um tamanho de backbone diferente. A demonstração destaca a precisão e a velocidade do menor modelo YOLOv8 Nano.

  • 00:30:00 Nesta seção, o palestrante mostra como eles foram capazes de usar o Segment Anything Model (SAM) com YOLOv8 para realizar a segmentação e criar caixas delimitadoras em torno de objetos de interesse. Eles demonstram a capacidade do modelo apresentando uma caixa delimitadora que envolve uma pessoa e também faz a segmentação de sua imagem. O palestrante conclui o tutorial em vídeo destacando a integração do YOLOv8 com o SAM e se despedindo dos espectadores.
 

Curso YOLOv8 - Aplicação Web de Detecção de Objetos em Tempo Real usando YOLOv8 e Flask - Webcam/Câmera IP


Curso YOLOv8 - Aplicação Web de Detecção de Objetos em Tempo Real usando YOLOv8 e Flask - Webcam/Câmera IP

O curso YOLOv8 é uma série de tutoriais que orientam os visualizadores na criação de um aplicativo da web de detecção de objetos em tempo real usando YOLOv8 e Flask. Os tutoriais cobrem a instalação do software necessário, como Python e PyCharm, criando um ambiente virtual, instalando pacotes e testando a detecção de objetos em imagens e webcams. Os tutoriais também abrangem a conversão de saída de tensores para inteiros, rotulação dos objetos detectados e salvamento do vídeo de saída com detecções. Os visualizadores aprendem como integrar o YOLOv8 com o Flask e como executar o aplicativo da web de detecção de objetos em tempo real em vídeos e feeds de webcam ao vivo.

Na segunda parte do vídeo, o apresentador demonstra como criar um aplicativo web usando Flask e YOLOv8 para detecção de objetos em feeds e vídeos ao vivo da webcam, além de mostrar o treinamento e a inferência de um modelo personalizado para detecção de equipamentos de proteção individual. O aplicativo da web tem uma página inicial, uma página de vídeo e uma página de feed de webcam ao vivo, com estilo CSS para cada página, e o apresentador percorre os arquivos HTML e Flask usados para o projeto. O vídeo demonstra o processo de importação de um conjunto de dados, preparando-o para treinar o modelo YOLOv8, treinar o modelo, analisar os resultados e testar o modelo em vídeos de demonstração. No geral, o vídeo fornece um tutorial abrangente para desenvolver e testar um aplicativo da web de detecção de objetos em tempo real.

O apresentador também discute as alterações feitas em um aplicativo da web que usa o modelo YOLOv8 treinado em um conjunto de dados de equipamento de proteção individual (EPI). As alterações incluem modificar o código para atribuir cores diferentes a caixas delimitadoras e retângulos de rótulos com base em nomes de classe e definir uma pontuação de confiança acima de 0,5 para caixas delimitadoras e retângulos aparecerem. O apresentador demonstra a detecção bem-sucedida de itens de EPI em um vídeo e feed de webcam ao vivo, marcando o final do curso.

  • 00:00:00 O próximo passo é baixar e instalar Python e PyCharm Community Edition. A versão mais recente do Python não é recomendada, pois pode conter erros e correções de bugs. Podemos baixar a versão mais recente do Python 3.8, que é recomendada. A versão PyCharm Professional oferece uma avaliação gratuita de 30 dias, mas a Community Edition é suficiente para o tutorial. Depois de baixar e instalar o software necessário, podemos criar uma pasta vazia com qualquer nome de nossa escolha e abri-la no PyCharm para iniciar o projeto.

  • 00:05:00 Nesta seção do curso intensivo YOLOv8, o instrutor demonstra como criar um novo ambiente virtual no Pycharm e instalar os pacotes necessários para o projeto. O instrutor mostra como criar um novo projeto, selecionar o interpretador base e instalar pacotes por meio da janela Gerenciador de pacotes. Eles também mostram como criar um arquivo requirements.txt para anotar todos os pacotes que você gostaria de instalar a partir da linha de comando. O vídeo enfatiza a importância de instalar o pacote ultralytics para detecção de objetos usando o YOLOv8.

  • 00:10:00 Nesta seção, o instrutor mostra como instalar o YOLOv8, que é a única versão do YOLO que possui seu próprio pacote. Usando o pip install ultralytics, o YOLOv8 pode ser instalado e, se alguma alteração precisar ser feita no script de detecção ou treinamento, o repositório pode ser clonado. O instrutor então usa o YOLOv8 para detectar objetos em uma imagem importando o pacote e o modelo YOLOv8, especificando o arquivo de pesos pré-treinados e passando o caminho da imagem de entrada. Os resultados mostram os objetos detectados na imagem.

  • 00:15:00 Nesta seção, o vídeo demonstra como testar o modelo YOLOv8 em novas imagens, adicionando-as à pasta de imagens e executando o script de teste YOLO. Depois de importar a biblioteca cv2 e adicionar um atraso, o modelo produz resultados bastante impressionantes detectando motocicletas e carros com precisão. O vídeo também aborda a questão da precisão versus velocidade ao usar diferentes modelos YOLO e sugere o uso do modelo YOLOv8x para resultados ainda mais precisos. O vídeo passa a testar o modelo YOLOv8 em uma webcam usando um novo diretório.

  • 00:20:00 Nesta seção do vídeo, o apresentador cria um novo arquivo chamado "YOLOv8_webcam.py". Eles importam YOLOv8, CB2 e math e definem "cap" como igual a "CV2.videoCapture(0)", o que permitirá que executem YOLOv8 em sua webcam. Eles calculam a taxa de quadros e a altura chamando "cap.get(5)" e "cap.get(4)", respectivamente. Eles explicam que desejam salvar o vídeo de saída com as detecções, então definem o nome do arquivo de saída como "output.avi" usando CB2.VideoWriter(). Eles passam a taxa de quadros e a altura para a função e, em seguida, definem "moderno" como igual a "YOLOv8". O apresentador então testa se sua webcam está funcionando bem chamando "CV2.imshow('image', image)" e "CV2.waitKey(1)" em sua imagem.

  • 00:25:00 Nesta seção do Curso YOLOv8, o apresentador testa a webcam e verifica se o vídeo de saída foi salvo corretamente. Em seguida, ele executa as detecções no feed da Web ao vivo usando o modelo YOLOv8 e salva os resultados em uma variável chamada 'resultados'. O código examina cada uma das caixas delimitadoras individuais para ver o desempenho. Cada caixa delimitadora tem quatro coordenadas - X1, Y1, X2 e Y2, que são convertidas em formato inteiro a partir de tensores para processamento posterior e criação de caixas delimitadoras ao redor do objeto detectado.

  • 00:30:00 Nesta seção do vídeo, o apresentador aborda como a saída está sendo convertida de tensores para inteiros e como um retângulo é criado em torno de cada objeto detectado usando cv2.rectangle. A cor e a espessura da caixa delimitadora são definidas junto com o ponto inicial e final de cada objeto detectado. A saída do aplicativo mostra que as caixas delimitadoras estão sendo desenhadas perfeitamente ao redor dos objetos detectados. No entanto, o apresentador menciona a necessidade de exibir também o rótulo e o índice de confiança para cada objeto detectado. A pontuação de confiança é exibida atualmente na forma de tensores, mas o apresentador planeja convertê-la em um número inteiro usando mat.c.

  • 00:35:00 Nesta seção do tutorial em vídeo, o instrutor mostra aos visualizadores como adicionar pontuações de confiança aos objetos detectados, convertê-los em números inteiros e rotulá-los de acordo com o ID da classe. O ID da classe é determinado pelo tipo do objeto, sendo 0 uma pessoa, 1 uma bicicleta e 2 um carro. O instrutor também demonstra como criar um retângulo ao redor do rótulo e salvar as detecções de saída em um arquivo chamado output.avi. Os visualizadores podem ver as detecções ao vivo quadro a quadro, e o instrutor mostra como interromper o processo clicando na tela. O instrutor também exibe o arquivo de vídeo de saída e confirma se os resultados são os esperados. Por fim, o instrutor anuncia que no próximo tutorial eles executarão o YOLOv8 no Windows e compartilharão os resultados.

  • 00:40:00 Nesta seção do curso YOLOv8, o criador demonstra como realizar a detecção de objetos em um vídeo de amostra usando pesos pré-treinados YOLOv8. O objetivo é detectar tanto bicicletas quanto pessoas, que fazem parte do conjunto de dados COCO. O criador mostra como executar o script e redirecionar a pasta para a pasta de vídeo designada, detectando com sucesso bicicletas, pessoas e outros objetos, como um semáforo. O criador então demonstra que o vídeo de saída com as detecções é salvo na pasta selecionada, mostrando as caixas delimitadoras ao redor dos objetos detectados com rótulos e pontuações de confiança. A função de detecção de vídeo é criada para conter todo o código e um arquivo chamado last app dot Pi é criado.

  • 00:45:00 Nesta seção do vídeo, o palestrante discute as etapas necessárias para integrar YOLOv8 com Flask para criar um aplicativo da web de detecção de objetos em tempo real. O primeiro passo é instalar o Flask, que é feito usando o pip install. Em seguida, o alto-falante importa as bibliotecas necessárias e inicializa o Flask. Em seguida, eles criam uma função chamada gerar quadro que pega o caminho do arquivo de vídeo de entrada e gera a saída com caixas delimitadoras ao redor dos objetos detectados. Por fim, o palestrante discute a codificação de imagens como bytes e a conversão de quadros individuais em um vídeo usando o teclado de exclusão. O resultado final são quadros individuais com caixas delimitadoras ao redor do objeto detectado, rótulos e pontuações de confiança.

  • 00:50:00 Nesta seção, o criador do vídeo explica como integrar YOLOv8 com Flask para criar um aplicativo da web de detecção de objetos em tempo real. O vídeo demonstra a codificação de quadros e a conversão da imagem em bytes, seguido de um loop em quadros individuais para detecção e exibição de quadro subsequente. O vídeo mostra a substituição de quadros visuais usando o tipo de meio, enquanto o tipo de conteúdo é utilizado para exibir os quadros subsequentes. O vídeo inclui uma demonstração em que o arquivo de vídeo é passado como entrada para detecção, resultando em caixas delimitadoras ao redor dos objetos detectados; neste cenário, pessoas, bicicletas e semáforos. O vídeo conclui afirmando que o próximo tutorial cobrirá a detecção em feeds de webcam ao vivo, criando assim uma API Fly Fast.

  • 00:55:00 Nesta seção, o apresentador demonstra como executar o aplicativo da Web de detecção de objetos em tempo real YOLOv8 em um feed de webcam ao vivo. Ao alterar o caminho do vídeo para 0 no script, o programa pode ser executado no feed da webcam ao vivo. Um novo URL é criado e vinculado ao aplicativo Flask, permitindo a detecção de objetos em tempo real do feed da webcam ao vivo. O apresentador mostra que o programa pode detectar com precisão objetos como uma pessoa, uma bicicleta e um semáforo a partir da transmissão ao vivo. Além disso, o caminho do vídeo é alterado de volta para o URL do vídeo e o programa também demonstra sua capacidade de detectar objetos em um vídeo.

  • 01:00:00 Nesta seção, o tutorial em vídeo se concentra na criação de uma página da Web HTML completa usando HTML e CSS para o design de front-end e Flask para o back-end. O aplicativo da web consiste em três páginas diferentes: uma página inicial, uma página de vídeo e uma página de feed de webcam ao vivo. A página inicial apresenta um cabeçalho, conteúdo e um rodapé com resultados de amostra de diferentes projetos. A página de vídeo permite que o usuário carregue um vídeo e execute as detecções YOLOv8 nesse vídeo. A página de feed da webcam ao vivo permite que o usuário faça detecções no feed da webcam ao vivo. O vídeo também mostra o arquivo de pilha de pontos do aplicativo Flask e as três páginas HTML.

  • 01:05:00 Nesta seção, o tutorial em vídeo explica como permitir que os usuários carreguem um arquivo de vídeo para o modelo de detecção de objetos usando o formulário Flask. O tutorial usa validadores para garantir que o usuário carregue o arquivo de vídeo no formato correto (MP4 ou .avi). O caminho do arquivo de vídeo carregado é armazenado na variável de arquivo usando o formulário de classe. O tutorial também apresenta a função de geração de quadros que é usada para detectar objetos no arquivo de vídeo de entrada. O arquivo de vídeo de entrada é salvo na pasta de arquivos estáticos e o usuário pode enviar o arquivo de vídeo para detecções clicando no botão enviar.

  • 01:10:00 Nesta seção do curso YOLOv8, o foco está na função de detecção que temos no arquivo de vídeo YOLO Dash. A função de redução de vídeo nos fornece uma direção e com a detecção de objetos, existem caixas delimitadoras de saída em torno dos objetos detectados com rótulos e pontuações de confiança. Os quadros atuais são então convertidos em bytes, conforme exigido pela imagem ou quadros de entrada do Flask. A função web de geração de quadros é chamada quando queremos acessar ou redirecionar para a webcam no aplicativo, com uma sessão dot clear removendo os arquivos de vídeo de entrada do armazenamento da sessão, permitindo que a detecção ocorra em novos vídeos ou arquivos de entrada, não nos anteriores uns. A instância do formulário de arquivo de upload é criada, com o caminho do arquivo de vídeo salvo na variável de armazenamento da sessão. O armazenamento da sessão é limpo posteriormente para garantir que a detecção ocorra nos novos vídeos, evitando que o aplicativo detecte nos vídeos ou arquivos de entrada anteriores.

  • 01:15:00 Nesta seção, o palestrante explica o código e os arquivos HTML usados no Curso YOLOv8 para Detecção de Objetos em Tempo Real em um Aplicativo Web usando Flask e uma Webcam/Câmera IP. O palestrante demonstra como salvou a parte do vídeo no armazenamento da sessão e chamou o caminho do vídeo para fazer as detecções no vídeo. Eles também mostram o arquivo dot Pi do aplicativo Flask para o projeto. O arquivo HTML consiste no idioma, título da página, corpo e cabeçalhos com suas propriedades, como cor de fundo, família de fontes, cor do texto, altura e outros elementos. Além disso, o palestrante explica a finalidade do raio da borda na criação de uma forma de retângulo arredondado.

  • 01:20:00 Nesta seção, o palestrante está demonstrando as páginas principais do aplicativo da web que ele construiu. Eles começam mostrando o URL da página inicial do Dash que direciona o usuário para a página de feed de vídeo, onde eles podem fazer upload de um vídeo e realizar detecções de objetos. Em seguida, eles mostram a página UI.html, onde as detecções acontecem no feed da webcam ao vivo. Eles também demonstram a página de resultados de amostra, mostrando três imagens que eles salvaram e passaram para o HTML. Por fim, mostram o rodapé, que ao ser clicado redireciona o usuário para seu canal no YouTube. Ao longo da demonstração, o palestrante mostra o estilo CSS usado para cada página.

  • 01:25:00 Nesta seção, o palestrante demonstra o aplicativo da Web de detecção de objetos em tempo real usando YOLOv8 e Flask com um feed e vídeo de webcam ao vivo. O estilo CSS é adicionado à página da Web, e o palestrante executa o arquivo Python class cap para fazer as detecções no vídeo, bem como o feed da webcam ao vivo. O usuário também pode inserir um arquivo de vídeo para obter as detecções. Os resultados são impressionantes, pois o modelo YOLOv8 é capaz de detectar objetos como pessoas, bicicletas, semáforos, etc., e criar caixas delimitadoras com os rótulos e pontuação de confiança. O palestrante conclui demonstrando que as detecções no feed da webcam ao vivo também estão funcionando com precisão.

  • 01:30:00 Nesta seção do vídeo, o apresentador mostra um aplicativo web Flask que pode detectar objetos em vídeos e feeds de webcam ao vivo usando YOLOv8. O aplicativo tem uma página inicial, uma página de vídeo com a capacidade de realizar detecções em qualquer vídeo de entrada e uma página de feed de webcam ao vivo. O apresentador passa a demonstrar como o YOLOv8 pode ser usado para detecção de equipamentos de proteção individual (EPI) usando um conjunto de dados disponível no Roboflow, que consiste em 3235 imagens com 7 classes diferentes. O apresentador renomeia as classes de acordo para refletir os objetos reais detectados pelo YOLOv8 e, em seguida, mostra as estatísticas do conjunto de dados, que inclui uma distribuição de classe não balanceada. A taxa de divisão usada para o conjunto de dados é 70-20-10. Por fim, o apresentador demonstra como importar o modelo YOLOv8 para um notebook Collab.

  • 01:35:00 Nesta seção do curso YOLOv8, o instrutor explica como importar as bibliotecas necessárias e verificar o acesso à GPU. A biblioteca do sistema operacional é usada para navegar para diferentes arquivos e a biblioteca de imagens é usada para exibir imagens de entrada/saída no bloco de anotações do Google Colab. O conjunto de dados de detecção de dados PPE é então importado do Roboflow e baixado para a pasta 'conjuntos de dados' recém-criada. O modelo YOLOv8 é instalado usando pip install ultralytics e sua funcionalidade é verificada para instalação e operação usando import ultralytics.

  • 01:40:00 Nesta seção do vídeo, o apresentador mostra como baixar e preparar o conjunto de dados de detecção de PPE para treinar um modelo YOLOv8. O conjunto de dados consiste em conjuntos de teste e validação, bem como um arquivo data.yml com nomes de classe para cada objeto. Depois de baixar e renomear a pasta, o apresentador usa a interface de linha de comando para implementação local de treinamento, validação e teste do modelo. O treinamento leva cerca de três horas para ser concluído, e o apresentador mostra os resultados do treinamento, incluindo o arquivo de melhores pesos e os 90 últimos pesos do trabalho. O modelo foi treinado em sete classes diferentes de objetos PPE.

  • 01:45:00 Nesta seção, os resultados do treinamento do modelo YOLOv8 são analisados, incluindo a precisão média média e a matriz de confusão para cada classe. As perdas de treinamento e validação também são examinadas, com os valores de perda diminuindo continuamente ao longo do processo de treinamento. As previsões do modelo em lotes de validação também são mostradas, indicando que o modelo está funcionando bem. Os melhores pesos para o modelo são usados para validar um pedido personalizado, com as pontuações médias de precisão média permanecendo fortes. Por fim, a inferência é executada em uma imagem para detectar o rótulo usando o modelo personalizado. No geral, o modelo YOLOv8 parece ter um bom desempenho na detecção de várias classes na detecção de objetos em tempo real.

  • 01:50:00 Nesta seção, o criador do vídeo demonstra como executar o modelo YOLOv8 em um conjunto de dados de teste de imagens e um vídeo de demonstração. Os resultados do conjunto de dados de teste são salvos no arquivo "prediction" e o criador exibe a saída para as cinco primeiras imagens usando o pacote "ipython.display". Os resultados mostram que o modelo pode detectar corretamente objetos como placas de proteção, jaquetas, luvas, máscaras contra poeira, aias de proteção e capacetes. O criador então baixa um vídeo de demonstração e o passa pelo modelo, exibindo a saída que mostra que o modelo é capaz de detectar jaquetas de proteção e aias. O criador do vídeo também menciona a vantagem de usar uma GPU para treinamento e previsão, pois leva menos tempo.

  • 01:55:00 Nesta seção, o apresentador testa o modelo YOLOv8 em vídeos de demonstração para ver como ele funciona. O modelo é capaz de detectar capacetes e jaquetas de proteção, mas não luvas. O apresentador baixa os vídeos de demonstração de saída e mostra o desempenho do modelo em cada um deles. O modelo é capaz de detectar as aias e jaquetas de proteção em todos os vídeos de demonstração testados. Em seguida, o apresentador baixa o arquivo de melhores pesos para o modelo treinado em equipamentos de proteção individual e discute como integrá-lo ao Flask para um aplicativo da web de detecção de objetos em tempo real.

  • 02:00:00 Nesta seção, o apresentador discute as alterações feitas no código no aplicativo da web que usa o modelo Yellow V8 treinado em um conjunto de dados de equipamento de proteção individual (EPI). O conjunto de dados PPE tem sete classes diferentes e seus nomes são listados. O arquivo de melhores pesos foi renomeado para ppe.pt do conjunto de dados Coco, que consiste em 80 classes diferentes. O apresentador adicionou um recurso para atribuir cores diferentes à caixa delimitadora e ao retângulo do rótulo com base no nome da classe. O apresentador estabeleceu um limite para a pontuação de confiança e mencionou que a caixa delimitadora e o retângulo só aparecerão se a pontuação for superior a 0,5. Os arquivos Flask app.py e HTML permanecem os mesmos. Por fim, o apresentador mostra os resultados da detecção de vídeo no conjunto de dados PPE e em uma webcam. O aplicativo é capaz de detectar com sucesso os itens de EPI no vídeo.

  • 02:05:00 Nesta seção, o apresentador demonstra os recursos de detecção bem-sucedidos do modelo YOLOv8 em tempo real usando um feed de webcam ao vivo. O modelo é capaz de detectar com precisão uma pessoa usando um capacete de proteção e uma máscara contra poeira, descontando a ausência de luvas e escudos. Os resultados são considerados satisfatórios e marcam o fim do curso.