Introdução ao Aprendizado Profundo

O trocador de jogos

Ilija Mihajlovic Blocked Desbloquear Seguir Seguindo 22 de abril Crédito para a imagem vai para: https://www.digitalocean.com/

D Aprendizagem eep tornou-se o principal impulsionador de muitas novas aplicações e é hora de realmente ver por que esse é o caso. Com tantas outras opções que temos usado por tanto tempo, por que Deep Learning?

Deep Learning é popular agora porque é fácil e funciona. OK, você talvez pense que a aprendizagem profunda é fácil e funciona, mas o que é isso? Estou feliz que você tenha perguntado, vamos direto ao assunto. ?

A aprendizagem profunda é um subconjunto do aprendizado de máquina em que redes neurais artificiais, algoritmos inspirados no cérebro humano, aprendem com grandes quantidades de dados. Da mesma forma que aprendemos com a experiência, o algoritmo de aprendizagem profunda executaria uma tarefa repetidamente, cada vez ajustando-a um pouco para melhorar o resultado.

Referimo-nos à "aprendizagem profunda" porque as redes neurais têm várias camadas (profundas) que permitem o aprendizado. Qualquer problema que exija "pensamento" para descobrir é um problema que a aprendizagem profunda pode aprender a resolver.

A aprendizagem profunda difere das técnicas tradicionais de aprendizado de máquina, na medida em que elas podem aprender automaticamente representações a partir de dados como imagens, vídeo ou texto, sem introduzir regras codificadas manualmente ou conhecimento de domínio humano. Suas arquiteturas altamente flexíveis podem aprender diretamente a partir de dados brutos e podem aumentar sua precisão preditiva quando fornecidos com mais dados. Por exemplo, no reconhecimento facial, como os pixels em uma imagem criam linhas e formas, como essas linhas e formas criam características faciais e como esses traços faciais são organizados em um rosto.

O aprendizado profundo altera a maneira como você pensa em representar o problema que está resolvendo com a análise. Passa de dizer ao computador como resolver um problema para treinar o computador para resolver o problema em si

Por exemplo, um modelo de aprendizagem profunda conhecido como rede neural convolucional pode ser treinado usando grandes números (como em milhões) de imagens, como aquelas que contêm gatos. Esse tipo de rede neural geralmente aprende com os pixels contidos nas imagens que adquire. Ele pode classificar grupos de pixels que são representativos das características de um gato, com grupos de características como garras, orelhas e olhos, indicando a presença de um gato em uma imagem.

O aprendizado profundo é fundamentalmente diferente do aprendizado de máquina convencional. Neste exemplo, um especialista em domínio precisaria gastar um tempo considerável projetando um sistema de aprendizado de máquina convencional para detectar os recursos que representam um gato. Com o aprendizado profundo, tudo o que é necessário é fornecer ao sistema um número muito grande de imagens de gatos, e o sistema pode aprender autonomamente os recursos que representam um gato.

Crédito para a imagem vai para: TechTarget

A quantidade de dados que geramos todos os dias é impressionante – atualmente estimada em 2,6 quintilhões de bytes e é o recurso que possibilita a aprendizagem profunda. Como os algoritmos de aprendizagem profunda exigem uma tonelada de dados para aprender, esse aumento na criação de dados é uma das razões pelas quais os recursos de aprendizado profundo cresceram nos últimos anos. Além de mais criação de dados, os algoritmos de aprendizagem profunda se beneficiam do poder computacional mais forte que está disponível atualmente.

O aprendizado profundo também tem sido fundamental na descoberta de exoplanetas e novas drogas e na detecção de doenças e partículas subatômicas. É fundamentalmente aumentando nossa compreensão da biologia, incluindo genômica, proteômica, metabolômica, o imunoma e muito mais.

Que tipo de problemas a aprendizagem profunda resolve?

Como mencionado, as redes neurais profundas são excelentes para fazer previsões baseadas em dados amplamente não estruturados. Isso significa que eles oferecem o melhor desempenho em sala de aula em áreas como reconhecimento de voz e imagem, onde trabalham com dados confusos, como voz e fotografias gravadas.

Você deveria usar sempre aprendizado profundo em vez de aprendizado de máquina?

Não, porque o aprendizado profundo pode ser muito caro do ponto de vista computacional. Para tarefas não-triviais, o treinamento de uma rede neural profunda geralmente exigirá o processamento de grandes quantidades de dados usando clusters de GPUs de última geração por muitas, muitas horas.

Considerando que as GPUs de ponta podem custar milhares de dólares para comprar, ou até US $ 5 por hora para alugar na nuvem, não é sensato ir direto ao aprendizado profundo.

Se o problema puder ser resolvido usando um algoritmo de aprendizado de máquina mais simples, como inferência Bayesiana ou regressão linear, que não exija que o sistema lide com uma combinação complexa de características hierárquicas nos dados, então essas opções muito menos exigentes seja a melhor escolha.

A aprendizagem profunda também pode não ser a melhor escolha para fazer uma previsão baseada em dados. Por exemplo, se o conjunto de dados é pequeno, às vezes, simples modelos lineares de aprendizado de máquina podem produzir resultados mais precisos – embora alguns especialistas em aprendizado de máquina argumentem que uma rede neural de aprendizado profundo adequadamente treinada ainda pode funcionar bem com pequenas quantidades de dados.

Quais são os inconvenientes da aprendizagem profunda?

Uma das grandes desvantagens é a quantidade de dados que eles precisam treinar, com o Facebook recentemente anunciando que usou um bilhão de imagens para alcançar um desempenho recorde por um sistema de reconhecimento de imagem. Quando os conjuntos de dados são grandes, os sistemas de treinamento também exigem acesso a grandes quantidades de capacidade de computação distribuída. Esta é outra questão da aprendizagem profunda, o custo do treinamento. Devido ao tamanho dos conjuntos de dados e ao número de ciclos de treinamento que precisam ser executados, o treinamento geralmente requer acesso a hardware de computador de alta potência e alto custo, geralmente GPUs de ponta ou matrizes de GPU. Quer você esteja construindo seu próprio sistema ou alugando hardware de uma plataforma de nuvem, nenhuma das opções provavelmente será barata.

As redes neurais profundas também são difíceis de treinar, devido ao que é chamado de problema do gradiente de fuga, o que pode piorar as camadas mais existentes em uma rede neural. À medida que mais camadas são adicionadas, o problema do gradiente de desaparecimento pode resultar em um longo tempo inviável para treinar uma rede neural até um bom nível de precisão.

Por que as redes neurais profundas são difíceis de treinar?

Como mencionado, as redes neurais profundas são difíceis de treinar devido ao número de camadas na rede neural. O número de camadas e links entre os neurônios da rede é tal que pode se tornar difícil calcular os ajustes que precisam ser feitos em cada etapa do processo de treinamento – um problema conhecido como o problema do gradiente de fuga.

Crédito para a imagem vai para: makeameme.org

Outra grande questão é a grande quantidade de dados necessários para treinar redes neurais de aprendizagem profunda, com os corpus de treinamento medindo frequentemente petabytes em tamanho.

Quanto custa investir em aprendizado profundo?

Depende da sua abordagem, mas normalmente custa centenas de dólares para cima, dependendo da complexidade da tarefa de aprendizado de máquina e do método escolhido.

Quais são as técnicas de aprendizado profundo?

Existem vários tipos de redes neurais profundas, com estruturas adequadas a diferentes tipos de tarefas. Por exemplo, as Redes Neurais de Convolução (CNNs) são normalmente usadas para tarefas de visão computacional, enquanto Redes Neurais Recorrentes (RNNs) são comumente usadas para processamento de linguagem. Cada um tem suas próprias especializações, em CNNs as camadas iniciais são especializadas para extrair características distintas da imagem, que são então alimentadas em uma rede neural mais convencional para permitir que a imagem seja classificada. Enquanto isso, os RNNs diferem de uma rede neural feed-forward tradicional em que eles não apenas alimentam dados de uma camada neural para a próxima, mas também possuem ciclos de feedback internos, onde a saída de dados de uma camada é passada de volta para a camada anterior isso – emprestando à rede uma forma de memória. Há uma forma mais especializada de RNN que inclui o que é chamado de célula de memória e que é adaptada para processar dados com atrasos entre as entradas.

O tipo mais básico de rede neural é uma rede perceptron multicamada, o tipo discutido acima no exemplo das figuras manuscritas, em que os dados são alimentados entre camadas de neurônios. Cada neurônio normalmente transformará os valores que eles alimentam usando uma função de ativação, que altera esses valores em uma forma que, no final do ciclo de treinamento, permitirá que a rede calcule o quão longe está de fazer uma previsão precisa.

Há um grande número de diferentes tipos de redes neurais profundas. Nenhuma rede é inerentemente melhor que a outra, elas são mais adequadas para aprender tipos específicos de tarefas.

Mais recentemente, as redes geradoras de conflitos (GANS) estão ampliando o que é possível usando redes neurais. Nessa arquitetura, duas redes neurais batalham, a rede geradora tenta criar dados “falsos” convincentes e o discriminador tenta distinguir entre dados falsos e dados reais. Com cada ciclo de treinamento, o gerador melhora a produção de dados falsos e o discriminador fica mais atento para detectar esses produtos falsificados. Ao colocar as duas redes uma contra a outra durante o treinamento, ambas podem alcançar um melhor desempenho. As GANs foram usadas para realizar algumas tarefas notáveis, como transformar esses vídeos dashcam do dia para a noite ou do inverno para o verão, como mostrado no vídeo abaixo, e ter aplicativos que vão desde transformar fotos de baixa resolução em alternativas de alta resolução e gerar imagens a partir de texto escrito. No entanto, as GANs têm suas próprias limitações, o que pode torná-las desafiadoras para trabalhar, embora elas estejam sendo resolvidas com o desenvolvimento de variantes GAN mais robustas.

Quais frameworks de software de aprendizagem profunda estão disponíveis?

Há uma ampla gama de estruturas de software de aprendizagem profunda, que permitem aos usuários projetar, treinar e validar redes neurais profundas, usando uma variedade de linguagens de programação diferentes.

Uma escolha popular é a biblioteca de software TensorFlow do Google, que permite aos usuários escrever em Python, Java, C ++ e Swift, e que pode ser usada para uma ampla gama de tarefas de aprendizado profundo, como reconhecimento de imagem e fala, e gama de CPUs, GPUs e outros processadores. É bem documentado e tem muitos tutoriais e modelos implementados que estão disponíveis.

Outra escolha popular, especialmente para iniciantes, é o PyTorch, um framework que oferece o modelo de programação imperativo familiar aos desenvolvedores e permite que os desenvolvedores usem instruções padrão do Python. Ele funciona com redes neurais profundas que variam de CNNs a RNNs e é executado eficientemente em GPUs.

Entre a ampla gama de outras opções estão o Cognitive Toolkit da Microsoft, o MATLAB, o MXNet, o Chainer e o Keras.

Exemplos de casos de uso de aprendizado detalhado

Robótica

Muitos dos desenvolvimentos recentes em robótica foram impulsionados pelos avanços da IA e pela aprendizagem profunda. Por exemplo, a IA permite que os robôs detectem e respondam ao seu ambiente. Esse recurso aumenta a variedade de funções que podem ser executadas, desde a navegação pelos pisos do depósito até a classificação e o manuseio de objetos desiguais, frágeis ou confusos. Algo tão simples como pegar um morango é uma tarefa fácil para os seres humanos, mas tem sido extremamente difícil para os robôs executarem. Conforme a IA progride, esse progresso aumentará as capacidades dos robôs.

Desenvolvimentos em IA significam que podemos esperar que os robôs do futuro sejam cada vez mais usados como assistentes humanos. Eles não serão usados apenas para entender e responder perguntas, como alguns são usados hoje. Eles também serão capazes de agir em comandos de voz e gestos, até mesmo antecipar o próximo movimento de um trabalhador. Hoje, os robôs colaborativos já trabalham ao lado dos humanos, com humanos e robôs, cada um executando tarefas separadas que são mais adequadas aos seus pontos fortes.

Agricultura

A IA tem o potencial de revolucionar a agricultura. Hoje, o aprendizado profundo permite que os agricultores implantem equipamentos que possam ver e diferenciar plantas e ervas daninhas. Esta capacidade permite que máquinas de capina pulverizem seletivamente herbicidas em ervas daninhas e deixem outras plantas intocadas. As máquinas agrícolas que usam a visão computacional de aprendizagem profunda podem até mesmo otimizar plantas individuais em um campo pulverizando seletivamente herbicidas, fertilizantes, fungicidas, inseticidas e produtos biológicos. Além de reduzir o uso de herbicidas e melhorar a produção agrícola, a aprendizagem profunda pode ser estendida ainda a outras operações agrícolas, como a aplicação de fertilizantes, a irrigação e a colheita.

Imagiologia Médica e Cuidados de Saúde

O aprendizado profundo tem sido particularmente eficaz em imagens médicas, devido à disponibilidade de dados de alta qualidade e à capacidade de redes neurais convolucionais para classificar imagens. Por exemplo, a aprendizagem profunda pode ser tão eficaz quanto um dermatologista na classificação dos cânceres de pele, se não mais. Vários fornecedores já receberam aprovação do FDA para algoritmos de aprendizado profundo para fins de diagnóstico, incluindo análise de imagens para doenças oncológicas e de retina. A aprendizagem profunda também está fazendo avanços significativos na melhoria da qualidade da assistência médica ao prever eventos médicos de

Assistentes virtuais

Seja Alexa, Siri ou Cortana, os assistentes virtuais de provedores de serviços on-line usam o aprendizado profundo para ajudar a entender seu discurso e a linguagem que os humanos usam quando interagem com eles.

Traduções

De maneira semelhante, os algoritmos de aprendizagem profunda podem traduzir automaticamente entre idiomas. Isso pode ser poderoso para viajantes, pessoas de negócios e pessoas no governo.

A propósito confira este engraçado fracasso pelo Google translate (Por tudo que você desencadeou os fãs do Bieber por aí agora não sou eu culpa do Google está OK ?!:])

PVision para caminhões de entrega sem motorista, drones e carros autônomos

A forma como um veículo autônomo entende as realidades da estrada e como responder a elas, seja um sinal de parada, uma bola na rua ou outro veículo, é através de algoritmos de aprendizagem profunda. Quanto mais dados os algoritmos recebem, melhor eles são capazes de agir como seres humanos em seu processamento de informações – saber que um sinal de parada coberto de neve ainda é um sinal de parada.

Chatbots e bots de serviço

Chatbots e robôs de serviço que fornecem atendimento ao cliente para muitas empresas são capazes de responder de uma maneira inteligente e útil a uma quantidade crescente de perguntas auditivas e de texto, graças ao aprendizado profundo.

Colorização da imagem

Transformar imagens em preto-e-branco em cores era uma tarefa feita meticulosamente pela mão humana. Hoje, os algoritmos de aprendizagem profunda são capazes de usar o contexto e os objetos nas imagens para colori-los, basicamente, para recriar a imagem em preto-e-branco em cores. Os resultados são impressionantes e precisos.

Reconhecimento facial

Crédito para a imagem vai para: Yann LeCun

O aprendizado profundo está sendo usado para reconhecimento facial não apenas por motivos de segurança, mas também para marcar pessoas em postagens no Facebook e talvez possamos pagar por itens em uma loja apenas usando nossos rostos em um futuro próximo. Os desafios para os algoritmos de aprendizagem profunda para o reconhecimento facial é saber que é a mesma pessoa, mesmo quando eles mudaram de penteado, cresceram ou rasparam a barba ou se a imagem tirada é ruim devido à iluminação ruim ou a uma obstrução.

O futuro da aprendizagem profunda

Atualmente, existem várias arquiteturas de redes neurais otimizadas para certos tipos de entradas e tarefas. Redes neurais de convolução são muito boas na classificação de imagens. Outra forma de arquitetura de aprendizagem profunda usa redes neurais recorrentes para processar dados sequenciais. Tanto a convolução quanto os modelos de redes neurais recorrentes executam o que é conhecido como aprendizado supervisionado, o que significa que eles precisam receber grandes quantidades de dados para aprender. No futuro, tipos mais sofisticados de IA usarão aprendizado não supervisionado. Uma quantidade significativa de pesquisa está sendo dedicada à tecnologia de aprendizado sem supervisão e sem supervisão.

O aprendizado por reforço é um paradigma ligeiramente diferente do aprendizado profundo, no qual um agente aprende, por tentativa e erro, em um ambiente simulado, apenas de recompensas e punições. Extensões de aprendizagem profunda neste domínio são referidas como aprendizado por reforço profundo (DRL). Houve um progresso considerável neste campo, como demonstrado pelos programas de DRL que batem humanos no antigo jogo do GO.

Projetar arquiteturas de redes neurais para resolver problemas é incrivelmente difícil, tornando-se ainda mais complexo com muitos hiperparâmetros para ajustar e muitas funções de perda para escolher otimizar. Tem havido muita atividade de pesquisa para aprender boas arquiteturas de redes neurais autonomamente. Aprender a aprender, também conhecido como metalearning ou AutoML, está progredindo regularmente.

Redes neurais artificiais atuais foram baseadas na compreensão dos anos 50 de como os cérebros humanos processam informações. A neurociência progrediu consideravelmente desde então, e as arquiteturas de aprendizado profundo tornaram-se tão sofisticadas que parecem exibir estruturas como as células da grade, que estão presentes nos cérebros neurais biológicos usados na navegação. Tanto a neurociência quanto o aprendizado profundo podem se beneficiar mutuamente da polinização cruzada de ideias, e é altamente provável que esses campos começarão a se fundir em algum momento.

Conclusão

Agora, com aprendizagem profunda e GPUs, podemos alcançar maior precisão a uma velocidade prática! A aprendizagem profunda também é muito mais acessível em termos da curva de aprendizado. Grande parte do software de código aberto é muito fácil de usar e obter um tradutor de linguagem simples, bot de bate-papo ou reconhecedor de imagens não é muito desafiador. Matemática e codificação menos complexas, mais fazendo coisas legais!

Se você quiser entrar em contato e, a propósito, você sabe uma boa piada que você pode entrar em contato comigo por e-mail ou me enviar uma mensagem através do Linkedin.

Obrigado pela leitura! ? ?