Curso de Machine Learning
142 subscribers
2 photos
1 link
Um "fork" do @AcervoHackerBR para postar aulas essenciais para o desenvolvimento de sistemas Machine Learning.
Download Telegram
Channel photo updated
Tópicos que serão abordados neste breve curso de Machine Learning (obs: não ensinaremos você á fazer seu próprio bot ou algo do tipo, já que isso varia de linguagem para linguagem, este curso é totalmente conceituoso e introdutório)
1 - O que é o aprendizado de máquina?
2 - Tipos de aprendizagem por máquina
3 - Redes Neurais
4 - Ensinar matemática usando redes neurais
5 - Uma rede Neural simples para reconhecer padrões

E isto é tudo graças ao @Meninodanoite
@AcervoHackerBR
1 - O que é o aprendizado de máquina?
O aprendizado de máquina dá aos computadores a capacidade de aprender sem ser explicitamente programado.
É a capacidade de programas de computador analisar dados, extrair informações automaticamente, e aprender com ele.
Então, basicamente, implementar o aprendizado de máquina significa criar algoritmos que podem aprender e fazer
previsões sobre dados.

Alguns exemplos de aprendizagem por máquina:
- Recomendações da Amazon baseadas no comportamento de navegação e compra do cliente.
- O motor de busca do Google, que classifica os sites por relevância.
- Carros auto-guiados.
- Filtros de spam por e-mail.

Todos os sistemas acima aprendem e melhoram-se à medida que mais e mais dados são fornecidos: quanto mais você busca e compra na Amazon, melhores recomendações ele dá. Quanto mais e-mails você marcar como spam, melhor o sistema filtra novos e-mails. Quanto mais situações o carro anda, melhor ele dirige.

Isto é muito semelhante à forma como nós humanos aprendemos. Um exemplo típico é o problema da classificação. Por exemplo, o filtro de spam por e-mail precisa classificar o spam e não e-mails de spam. Note, que isto é bastante dependente do utilizador. Se sabemos que um usuário específico está marcando todos os e-mails de viagem como spam, vamos classificar os novos e-mails de forma mais eficaz. Dados mais relevantes levam a melhores previsões.

📜 Nota: Basicamente, o objetivo de um aprendiz é generalizar a partir de sua experiência.
2 - Tipos de aprendizagem de máquina
Algoritmos de aprendizagem automática podem ser divididos em três grandes categorias:
"Aprendizagem supervisionada": o computador é apresentado com entradas de exemplo e suas saídas desejadas, e o objetivo é aprender uma regra geral que mapeia entradas para saídas. Um exemplo é um filtro de spam por e-mail.

"Aprendizagem não supervisionada": não são dadas etiquetas ao algoritmo de aprendizagem, deixando-o por conta própria para encontrar estrutura na sua entrada (descobrindo padrões ocultos nos dados). Por exemplo, imagine ter dados sobre todos os carros e seus compradores. O sistema pode encontrar padrões e identificar que, por exemplo, as pessoas nos subúrbios preferem SUVs com motores a gasolina, mas as pessoas que vivem perto do centro da cidade, preferem carros elétricos menores. Saber isso pode ajudar o sistema prever quem vai comprar qual carro.

"Aprendizagem de reforço": um programa de computador interage com um ambiente dinâmico no qual ele deve executar um determinado objetivo (como conduzir um veículo ou jogar um jogo contra um adversário). Ao programa é fornecido feedback em termos de recompensas, e punições fazendo com que ele tente melhorar.

Outra categorização das tarefas de aprendizagem da máquina surge quando se considera a saída desejada.
Em classificação, (normalmente na aprendizagem supervisionada) as entradas são divididas em duas ou mais classes. Filtragem de Spam é um exemplo de classificação, onde as entradas são e-mails e as classes são "spam" e "não spam".

Em "regressão", também um problema supervisionado, nós predizemos Saídas continuamente avaliadas. Por exemplo, a previsão dos preços da habitação ou dos preços das ações.

Em agrupamento, um conjunto de entradas deve ser dividido em grupos. Ao contrário da classificação, os grupos não são conhecidos de antemão, tornando esta tipicamente uma tarefa não supervisionada. Um exemplo é a segmentação do cliente.

A estimativa da densidade encontra a distribuição de entradas em algum espaço. Por exemplo, tendo resultados de testes de diabetes de um número específico de pessoas, podemos estimar a distribuição para toda a população.

A redução de dimensionalidade simplifica as entradas mapeando-as para um espaço de dimensões mais baixas. Modelagem de tópicos é um problema relacionado onde um programa é dado uma lista de documentos de linguagem humana e é encarregado de descobrir quais documentos cobrem tópicos semelhantes, assim preparando as recomendações da Amazon por exemplo.

📜 Nota: Compreender o tipo de problema que você está tentando resolver é a chave para identificar os algoritmos certos a usar.
3 - Redes neurais
O objetivo dos algoritmos de aprendizagem de máquinas de rede neural artificial é imitar a forma como o cérebro humano organiza e compreende a informação, a fim de chegar a várias previsões.

Redes neurais, com sua notável capacidade de derivar significado a partir de dados complicados ou imprecisos, podem ser usadas para extrair padrões e detectar tendências que são muito complexas para serem notadas por humanos ou outras técnicas de computador.

Redes neurais artificiais, como cérebros reais, são formadas a partir de "neurônios" conectados, todos capazes de realizar uma tarefa relacionada com dados, tais como reconhecer algo, combinar um pedaço de informação com outra peça, e responder a uma pergunta sobre a relação entre eles.
Cada neurônio é capaz de transmitir os resultados de seu trabalho a um neurônio vizinho, que pode então processá-lo ainda mais.
Tipicamente, os neurônios são organizados em camadas. Diferentes camadas podem realizar diferentes tipos de transformações em suas entradas. Os sinais viajam da primeira camada (entrada) para a última camada (saída), possivelmente depois de atravessar as camadas múltiplas vezes.
É assim que se parece uma rede neural simples:
Como a rede é capaz de mudar e adaptar-se com base nos dados que passam por ela, as conexões entre esses neurônios são afinadas até que a rede produza previsões altamente precisas. Pode ser pensado como" aprender", da mesma forma que os nossos cérebros.

Redes neurais têm sido usadas em uma variedade de tarefas, incluindo visão de computador, reconhecimento de fala, tradução de máquina, tabuleiro de jogo e jogos de vídeo, diagnóstico médico, e em muitos outros domínios.
4 - Ensinar matemática usando redes neurais
Vamos construir um programa, que vai ensinar o computador a prever a saída de uma expressão matemática sem "conhecer" a fórmula exata.
Considere a seguinte expressão: (a+b)*2
Para duas entradas a E b a operação terá uma saída distinta.
O objetivo é criar um programa, que irá prever a saída de dados de entrada, sem saber a fórmula da expressão.
Para isso, usaremos redes neurais. Redes neurais artificiais, como cérebros reais, são formadas a partir de "neurônios" conectados, todos capazes de realizar uma tarefa relacionada a dados, tais como responder a uma pergunta sobre a relação entre eles.
Para torná-lo realmente simples, nós vamos apenas modelar um único neurônio, com duas entradas e uma saída.
Estes quatro primeiros exemplos são chamados de conjunto de treinamento:
Produção De Entradas
2 3 10
1 1 4
5 2 14
12 3 30
Nós vamos treinar o neurônio para trabalhar o padrão e resolver a tarefa para entradas personalizadas, apenas tendo o conjunto de treinamento e sem saber que Operação ele realiza.

Formacao
Damos a cada entrada um peso, que pode ser um número positivo ou negativo. Uma entrada com um grande peso positivo ou um grande peso negativo tem um forte efeito na saída do neurônio. Antes de começarmos, definimos cada peso num número aleatório. Então começamos o processo de treinamento:
1. Pegue as entradas do conjunto de treinamento, ajuste - as pelos pesos, e passe-as através de uma fórmula especial para calcular a saída do neurônio.
dois. Calcule o erro, que é a diferença entre a saída do neurônio e a saída desejada no exemplo de conjunto de treinamento.
três. Dependendo da direção do erro, ajuste os pesos.
4. Repita este processo 10 mil vezes.
Eventualmente, os pesos do neurônio alcançarão um ótimo resultado para o conjunto de treinamento. Este processo é chamado de propagação traseira.

Para a fórmula, tomamos a soma ponderada das entradas:
produção = peso1 * input1+peso2 * input2

Após cada iteração, precisamos ajustar o peso com base no erro (a diferença da saída calculada e a saída real). Usamos esta fórmula para cada peso:
ajuste = 0,01 * erro * entrada
Isto torna o ajuste proporcional ao tamanho do erro. Após cada ajuste o tamanho do erro deve ficar menor e menor.

Após as 10.000 iterações, teremos pesos ótimos e, em seguida, podemos dar ao programa as entradas desejadas. O programa irá usar os pesos e calcular a saída usando a mesma soma ponderada como acima.
5 - Uma rede neural para reconhecer padrões
Vamos construir um programa que vai ensinar o computador a reconhecer padrões simples usando redes neurais.
Redes neurais artificiais, como cérebros reais, são formadas a partir de "neurônios" conectados, todos capazes de realizar uma tarefa relacionada a dados, tais como responder a uma pergunta sobre a relação entre eles.

Vamos pegar o seguinte padrão:
1 1 1 = 1
1 0 1 = 1
0 1 1 = 0
Cada entrada, e a saída pode ser apenas um 1 ou um 0. Se olharmos mais de perto, perceberemos que a saída é 1, se a primeira entrada for 1. No entanto, não vamos dizer isso ao computador. Nós só forneceremos as entradas e saídas da amostra e pediremos para" adivinhar " a saída da entrada 1 0 0 (que deve ser 1).
Para torná-lo realmente simples, nós vamos apenas modelar um único neurônio, com três entradas e uma saída.
Os três exemplos acima são chamados de conjunto de treinamento.
Nós vamos treinar o neurônio para trabalhar o padrão e resolver a tarefa para a entrada 10 0, apenas tendo o conjunto de treinamento e sem saber que Operação ele realiza.

Formacao
Daremos a cada entrada um peso, que pode ser um número positivo ou negativo. Uma entrada com um grande peso positivo ou um grande peso negativo, terá um forte efeito na saída do neurônio. Antes de começarmos, definimos cada peso num número aleatório. Então começamos o processo de treinamento:
1. Pegue as entradas do conjunto de treinamento, ajuste - as pelos pesos, e passe-as através de uma fórmula especial para calcular a saída do neurônio.
dois. Calcule o erro, que é a diferença entre a saída do neurônio e a saída desejada no exemplo de conjunto de treinamento.
três. Dependendo da direção do erro, ajuste os pesos.
4. Repita este processo 10 mil vezes.
Eventualmente, os pesos do neurônio alcançarão um ótimo para o conjunto de treinamento. Este processo é chamado de propagação traseira.

Para a fórmula, vamos pegar a soma ponderada das entradas e normalizá-la entre 0 e 1:
Após cada iteração, precisamos ajustar o peso com base no erro (a diferença da saída calculada e a saída real). Usaremos esta fórmula:
ajustamento = erro * input * output*(1-output)
Isto fará o ajuste proporcional ao tamanho do erro. Após cada ajuste o tamanho do erro deve ficar menor e menor.

Após as 10.000 iterações, teremos pesos ótimos e, em seguida, podemos dar ao programa as entradas desejadas. O programa irá usar os pesos e calcular a saída usando a mesma fórmula de soma ponderada como acima.

📜 Nota: A técnica descrita nesta lição é um exemplo muito simples, no entanto, algoritmos complexos de reconhecimento de padrões / imagens usam uma abordagem semelhante
É isso galera. Chegamos ao fim do curso, espero que tenham gostado. Se você veio do canal @AcervoHackerBR provavelmente já deve saber que estamos dando um curso de Python no canal @forkPython e em breve iremos postar cursos de SQL (MySQL, PostgreSQL, Oracle...) e NumPy com Python
Forwarded from Sam Marx
Criado repositório p ensinar redes neurais, inteligência artificial, aprendizado de máquina e aprendizado profundo. Vocês podem acessá-lo em github.com/Sam-Marx/redes-neurais. O conteúdo será atualizado toda semana, com scripts, definições, cálculos etc.)