Prévia do material em texto
DEEP LEARNING 3 UNIDADE Machine learning - Unidade3 - Formato A5.indd 65 30/10/2019 16:15:57 Objetivos da unidade Tópicos de estudo Apresentar os modelos de arquiteturas Deep Learning; Identificar as redes neurais profundas existentes e evidenciar a complexidade da teoria; Discutir sobre as redes convolucionais, desde a sua arquitetura até os chamados “autoenconders”. Deep Learning Tipos de arquiteturas Redes neurais profundas Complexidade da teoria Redes convolucionais Arquitetura Redes neurais recorrentes Autoencoders (AE) MACHINE LEARNING 66 Machine learning - Unidade3 - Formato A5.indd 66 30/10/2019 16:15:57 Deep Learning A Inteligência Artifi cial consolida-se como uma área de estudo com foco em agentes inteligentes, capazes de executar tarefas e/ou tomada de de- cisões como seres humanos. Nesse contexto, são desenvolvidas diversas técnicas que modelam tais inteligên- cias – uma dessas áreas é chamada de Aprendizado de Máquina, ou Machine Learning (ML), cujos algoritmos pre- sumem que o conjunto de dados a ser usado durante o treinamento foram previamente selecionados por um ser humano. Assim, suas características re- levantes e discriminativas são fundamentais para criação de um modelo de aprendizagem efi ciente. Porém, esse processo está sujeito a erros, visto que depende de um especialista para tal função. Um subgrupo das técnicas de ML são aquelas conhecidas como Deep Lear- ning (DL), atreladas a um nível mais profundo de automação. Ele apresenta uma conceituação direcionada no desenvolvimento e criação de redes neurais, que vem evoluindo desde a década de 1950. As redes neurais se destacam também por conta da sua aplicabilidade em setores diversifi cados como, por exemplo, o ambiente organizacional e industrial, além de setores relacionados à saúde e educação, dentre outros. O Deep Learning se ocupa em verifi car as possibilidades de aprendizagem em um nível mais aprofundado, com a utilização de redes neurais que visem a aprimorar diversos aspectos computacionais, como o reconhecimento de fala, por exemplo, tornando-o um dos temas mais requisitados dentro da Ciência da Computação atual. Um dos principais problemas enfrentados pelo aprendizado de máquina é a extração de características, o que requer que um programador precise dizer para o algoritmo que tipo de coisas devem ser procuradas para que uma decisão possa ser tomada. Como nem sempre alimentar o algoritmo com dados é efi ciente, tal extração necessita ser feita de maneira autônoma. O modelo de aprendizagem profunda tem sido muito efi caz na resolução de tarefas complexas. MACHINE LEARNING 67 Machine learning - Unidade3 - Formato A5.indd 67 30/10/2019 16:16:01 De acordo com a professora Taiane Ramos, do Instituto de Matemática e Estatística da USP no trabalho Deep Learning, de 2015 (p. 3): A principal diferença entre machine learning tradicional, que utiliza algoritmos não supervisionados, e deep learning é o método utilizado para extração de características relevantes para a classificação. Na abordagem tradicional, um programa- dor faz a engenharia de forma manual, determinando quais são as características relevantes para que um certo tipo de dado seja diferenciado das outras possíveis classes. Em deep learning, o método de extração de características é feito de forma automática. O algoritmo é exposto a uma grande quan- tidade de dados e dinamicamente determina quais são as ca- racterísticas relevantes para separar as entradas em classes e quais classes serão consideradas. Tendo em vista que as técnicas de DL são usualmente utilizadas para resol- ver o problema de treinamento de redes neurais artificiais, como já menciona- mos anteriormente, necessitam de muitos dados para aprender as característi- cas de forma hierárquica, não precisando mais de um humano para selecionar as características que formarão o modelo de aprendizado em questão. Devido à necessidade de interpretar modelos com níveis de complexi- dade maior e criar sistemas de percepção que consigam aprender a inter- pretar ambientes, surge então a Deep Learning, ou aprendizado profundo, como um subcampo das redes neurais artificiais que tem como base o algo- ritmo backpropagation. Importante frisar que o backpropagation pode ser compreendido como um algoritmo extremamente relevante na história das redes neurais, pois sem a presença dele seria inimaginável habilitar as redes de aprendizagem profunda da maneira como é visualizada atualmente, pela qual o treinamento realiza- do em modelos profundos é considerado tratável, do ponto de vista compu- tacional. Vale ressaltar que as redes neurais modernas tornam o treinamento descendente mais rápido em relação à implementação ingênua, indicando a principal distinção entre um modelo treinado em um período mais curto em relação aos modelos que são executados a longo prazo, levando um período de anos, por exemplo. MACHINE LEARNING 68 Machine learning - Unidade3 - Formato A5.indd 68 30/10/2019 16:16:01 O backpropagation, além da sua utilização no Deep Learning, pode ser con- siderado uma relevante ferramenta na área computacional e em áreas rela- cionadas, por exemplo, a previsão do tempo. Isto implica dizer, caro leitor, que este algoritmo foi reutilizado inúmeras vezes em campos distintos. Voltando à alocação do Deep Learning dentro da Inteligência Artificial, a Figura 1 demostra a hierarquização das áreas de estudo mencionadas. É pos- sível observar, portanto, que Deep Learning está compreendida nos estudos de aprendizagem de máquina que, por sua vez, se insere nos estudos de inte- ligências artificiais. INTELIGÊNCIA ARTIFICIAL Agente que sente, raciocina, atua, adapta-se MACHINE LEARNING Algoritmo cuja eficácia melhora à medida que é exposto a mais dados DEEP LEARNING Algoritmos baseados em redes neuronais que aprendem a partir de vastas quantidades de dados Figura 1. Hierarquia das áreas de estudo. Fonte: SARAIVA, 2018. (Adaptado). O algoritmo de DL não possui estrutura linear, mas múltiplas camadas em cascata. São unidades compostas por RNA, e seus parâmetros são es- timados durante seu treinamento. Esse tipo de algoritmo necessita de um grande volume de poder computacional e uma parcela significativa de tem- po para treinamento. MACHINE LEARNING 69 Machine learning - Unidade3 - Formato A5.indd 69 30/10/2019 16:16:01 Algumas das tarefas complexas que as técnicas de Deep Learning podem executar são traduções de máquina, transcrição de dados, síntese e reconhe- cimento de fala, entre outras. Modelos de DL, como as redes neurais convolu- cionais (ou CNN, isto é, Convolutional Neural Network), alcançaram o estado da arte no campo da visão computacional, possibilitando o desenvolvimento de softwares capazes de localizar e classificar objetos em imagens com desem- penho surpreendente. Uma rede neural, também conhecida como CNN, pode ser entendida como um algoritmo de aprendizado profundo, que se caracteriza por reali- zar uma série de ações, como a captura de imagem de entrada, a atribuição de importância aos aspectos e uma habilidade em distinguir um do outro. Vale ressaltar que o pré-processamento solicitado dentro de uma ConvNet se apresenta em um nível menor se comparado com algoritmos diferentes de classificação. Os métodos primitivos apresentam os filtros de forma ma- nual, enquanto que as ConvNets apresentam habilidade de compreender estes filtros e suas características. A utilização desta arquitetura eleva o nível de rapidez do treinamento das redes convolucionais. E o que isto indica? Bem, através disso é possível treinar redes profundas de diversas camadas qualificadas, no que se refere à classificação de imagens. Atualmente as redes neurais convolucionais são utilizadas na maioria das redes empregadas para reconhecimento de ima- gem, por exemplo. Com o sucesso crescente desses novos algoritmos,diversos resultados foram colhidos pelas diferentes arquiteturas em suas distintas classes de problemas, emergindo uma gama desmedida de estudos sobre os melhores modelos e técnicas de treinamento em contextos específicos. Importante frisar as diferenças entre a rede neural simples e o Deep Learning, que é a rede de aprendizado profundo. O Deep Learning se ca- racteriza, dentre outros aspectos, pela utilização de camadas de neurônios matemáticos. Estas camadas visam a executar um conjunto de ações re- lacionadas ao processamento de dados, compreensão da fala humana e identificação dos objetos de maneira visual. A informação é transmitida por meio de cada camada, saindo da anterior e disponibilizando uma entrada para uso na próxima camada. MACHINE LEARNING 70 Machine learning - Unidade3 - Formato A5.indd 70 30/10/2019 16:16:01 É preciso compreender que a pri- meira camada em uma rede é deno- minada de “camada de entrada”, assim como a última recebe a nomenclatura “camada de saída”. As camadas pre- sentes entre as duas podem ser classi- ficadas como “camadas ocultas”. Uma camada pode ser definida como um al- goritmo com características uniformes e simples, apresentando um modelo de função de ativação. Você pode estar se questionando sobre o nível de importância da apren- dizagem profunda. Bem, ela é conside- rada a grande responsável pela evolu- ção atual de aspectos computacionais, como o processamento de linguagem natural, por exemplo. O aprendizado está diretamente relacionado ao entendi- mento sobre as redes neurais artificiais, que se caracterizam por reproduzir o funcionamento do cérebro humano. A Aprendizagem Profunda se destaca também pela retirada dos recursos. Esta retirada de atributos utiliza um algoritmo para desenvolver, de maneira automatizada, importantes recursos dos dados, objetivando o aprendizado e a compreensão. Geralmente a área de ciência de dados é a responsável por retirar estes recursos. É importante que você observe, caro leitor, que o aprendizado profundo pode apresentar uma elevação acelerada e um aparente nível de domínio em relação aos mecanismos habituais de aprendizagem de máquina, no qual uma diversidade de atividades pode ser visualizada, porém, com uma explicação complexa. Entretanto, existe um interesse na busca por informações relacio- nadas à aprendizagem profunda nos mais diversos meios de comunicação. O aprendizado profundo apresenta grande importância em áreas do conheci- mento, como a medicina, através do diagnostico do câncer de pele e autismo. A diferença estrutural entre as redes neurais simples e as de aprendizado profundo pode ser visualizada na Figura 2. MACHINE LEARNING 71 Machine learning - Unidade3 - Formato A5.indd 71 30/10/2019 16:16:10 Camada de entrada Camada de saídaCamada oculta Rede neural simples Rede de aprendizado profundo Figura 2. Rede neural simples e rede neural de aprendizado profundo. Fonte: DATA SCIENCE ACADEMY, 2019a. (Adaptado). Figura 3. Redes Neurais com Multicamadas. Fonte: DATA SCIENCE ACADEMY, 2019a. (Adaptado). Tipos de arquiteturas Ao criar uma rede neural direcionada à categorização de dígitos manuscritos, utilizando linguagem Python, é necessário compreender a terminologia usada no momento de desenvolver o modelo através da Arquitetura das Redes Neurais. Como já visualizamos na Figura 2, a camada localizada à esquerda é denomi- nada camada de entrada e apresenta neurônios com a mesma denominação. Por sua vez, a camada à direita apresenta neurônios de saída. A camada oculta se caracteriza por dispor de neurônios que se localizam entre as entradas ou saídas. Por exemplo, a rede a seguir, na Figura 3, apresenta quatro camadas, com duas camadas ocultas: Camada de entrada Camadas ocultas Camada de saída MACHINE LEARNING 72 Machine learning - Unidade3 - Formato A5.indd 72 30/10/2019 16:16:10 Importante frisar que as redes de camadas múltiplas são denominadas de Perceptrons Multicamadas ou MLPs (Multilayer Perceptrons). No que se refere ao design das camadas de entrada e saída dentro de uma rede, ele ocorre de maneira direta, entretanto, pode haver um volume de variações no design das camadas ocultas. Portanto, não é viável sintetizar o procedi- mento de design de tais camadas utilizando normas simples. Tem sido co- mum a pesquisa de redes neurais com o objetivo de desenvolver heurísticas de design para as camadas ocultas, que auxiliam as pessoas a adquirir o perfil desejado de suas redes. Existem basicamente três tipos de arquiteturas de DL: a primeira arqui- tetura é a feedforward, muito utilizada em redes multicamadas, como as redes convolucionais. Estes modelos de redes neurais medem um conjun- to de mudanças que transforma as similaridades entre os casos. As ações executadas pelos neurônios em cada camada são classificadas como uma função não linear das ações executadas na camada antecedente. O segundo modelo é denominado de feedback, normalmente utiliza- do dentro das redes Stacked Sparse Coding. Estes modelos adotam um conjunto de ciclos relacionados com seu grafo de conexão. E o que isso significa? Bem, é provável que o usuário retorne ao ponto inicial seguindo as setas, o que pode apresentar uma dinâmica complexa, dificultando o seu treinamento. No momento atual, existe muito interesse em descobrir maneiras efi- cientes de realizar treinamentos em redes recorrentes. Estas redes são con- sideradas como a forma mais simples de estabelecer um modelo de dados dispostos em sequências. Elas apresentam capacidade de indicar informa- ções em seu estado oculto por um período mais extenso, porém, é extrema- mente complexo treiná-las para utilizar esse potencial. O terceiro modelo é o bidirecional, usado em Deep Boltzmann e autoen- coders. Eles funcionam de maneira similar às redes recorrentes, porém, existe uma simetria entre as conexões, e são mais fáceis de serem analisa- dos. São mais limitados no intuito de obedecer à função de energia. Neste contexto, as redes conectadas simetricamente, que não apresentam unida- des ocultas, são classificadas de redes Hopfield, enquanto redes com unida- des ocultas são conhecidas como máquinas de Boltzmann. MACHINE LEARNING 73 Machine learning - Unidade3 - Formato A5.indd 73 30/10/2019 16:16:10 Figura 4. Tipos de arquiteturas Deep Learning. Feedforward Feedback Bidirecional Essas arquiteturas operam em diferentes tipos de treinamentos. Os seguin- tes protocolos de treinamento podem ser utilizados: • Puramente supervisionado: tem inicialização de parâmetros de maneira alea- tória e utiliza tipicamente o método do gradiente descendente e backpropagation; • Não supervisionado e classifi cação no topo: em cada camada é rea- lizado o treinamento não supervisionado. Depois são treinadas as camadas supervisionadas, mantendo as outras fi xas; • Não supervisionado e sintonização global supervisionada: em cada ca- mada não supervisionada é efetuado o treino. Depois, é adicionada uma cama- da de classifi cação e retirado o supervisionamento de toda a hierarquia. Redes neurais profundas Existem diversos estudos que se dedicam a estudar e demostrar por que as redes profundas são melhores do que as redes simples, tomando como partida o teorema da aproximação. O trabalho de A. Kolmogorov, de 1936, intitulado “Zur Theorie der Markoff schen Ketten”, publicado no periódico Mathematische Annalen, demostrou o limite superior para a aproximação de funções contínuas em subespaços de funções. Hugh Warren, em 1968, no artigo “Lower bounds for approximation by nonlinear manifold”, publicado no periódico Transactions of the American Mathematical Society, também descreveu o limite por aproxima- ção de polinômios e dimensões da função-alvo, provando a dimensão VC de polinômios. Esses resultados foram mais refi nados em relação ao teorema de hierarquia de profundidade em complexidade de circuitos, sendo esteresulta- do apenas a base para estudos de redes neurais profundas. MACHINE LEARNING 74 Machine learning - Unidade3 - Formato A5.indd 74 30/10/2019 16:16:10 Os resultados obtidos estabelecem uma relação entre o uso de múltiplas camadas com algoritmos de divisão e conquista. Dentro deste contexto, o custo gerado pelo achatamento do grafo, formado pela rede neural para so- lucionar um problema previamente determinado, é comumente proibitivo. Os autores tomam como o exemplo a Transformada Rápida de Fourier (FFT), que faz uso de fatorização esparsa da matriz da Transformada Discreta de Fourier (DFT). A DFT é composta por duas expressões numéricas: n log n, que resulta em elementos não nulos na matriz, e a expressão n², que resulta em elementos não nulos na matriz da DFT. Isso indica que, na FFT, é possível idealizar que, nas operações organizadas em grafo, os achatamentos destas operações, em apenas uma contagem, elevarão estas operações do nível n log n para o nível n². Caso você não se lembre de como funcionam as redes neurais e as proprie- dades básicas dos neurônios, cabe retomarmos tal conteúdo: Redes neurais são basicamente uma coleção de neurônios e suas conexões. O neurônio, por sua vez, é uma função que dispõe de várias entradas e apenas uma saída. Sua tarefa é reunir todos os números recebidos em suas entradas, executá-los e enviar o resultado para sua saída. Mesmo com a existência de vários métodos, o uso do neurônio consegue ser o mais genérico e flexível. Um neurônio simples pode ser analisado através da implementação de um modelo computacional indicado para as redes neurais. Estes neurônios se ba- seiam em aspectos relacionados à matemática e algoritmos que podem ser classificados como a lógica de limiar. Este modelo é um precursor das pesqui- sas relacionadas à rede neural, através de uma abordagem direcionada aos procedimentos cerebrais à Inteligência Artificial. Um neurônio é um modelo que apresenta um cálculo das entradas, atra- vés da multiplicação por pesos, e esse valor está inserido em uma função de ativação. As diferenças entre aprendizagem profunda e redes neurais clássi- cas estão ligadas a novos métodos de treinamento, atreladas a redes maio- res. Atualmente, apenas os teóricos tentariam determinar qual aprendizado considerar profundo ou não. Enquanto isso, nós usamos bibliotecas populares “profundas”, como Keras, TensorFlow e PyTorch, mesmo quando construímos uma pequena rede com cinco camadas – isso porque é mais adequada do que todas as ferramentas que vieram antes. E assim, nós apenas as chamamos de redes neurais. MACHINE LEARNING 75 Machine learning - Unidade3 - Formato A5.indd 75 30/10/2019 16:16:10 Importante mencionar que o TensorFlow é considerado como a primeira es- trutura de Deep Learning. Criada no ano de 2017, esta biblioteca era considera- da complexa. Recentemente, algumas bibliotecas de Deep Learning passaram a se popularizar graças à facilidade de utilização do TensorFlow, dentre as quais se destacam Keras e Pytorch. O Keras é considerado como uma API de nível elevado, que se localiza sobre outras estruturas pertencentes ao Deep Learning, suportando, dentre outros componentes, o TensorFlow e CNTK. O Keras é de fácil utilização e pode come- çar a funcionar de maneira rápida. Estabelecer as redes neurais pode ocorrer de maneira intuitiva, e a utilização da API funcional possibilita estabelecer ca- madas como funções. Já o Pytorch é definido como uma estrutura de Deep Learning criada por grupos de pesquisa de Inteligência Artificial. Ele se caracteriza pela habilidade de abstração das partes complexas da programação realizada em redes pro- fundas. Apresenta um estilo de codificação mediano em relação ao Keras e TensorFlow, além de dispor de um nível de flexibilidade e controle mais elevado do que o Keras, sem que exista a necessidade de realizar uma programação declarativa mais difícil. É válido mencionar que os usuários do Deep Learning debatem sobre qual é a estrutura mais adequada, porém, é preciso levar em consideração determinadas preferencias dos usuários. As redes neurais apresentam algumas aplicações, como: • Detecção e classificação de objetos; • Processamento de linguagem natural; • Identificação de faces; • Segmentação semântica de imagens; • Reconhecimento automático de voz. Entretanto, vale ressaltar que as redes profundas ganharam notoriedade com a descoberta de técnicas especializadas em treinamento profundo e a con- cretização das GPUs. Vale ressaltar que, partindo deste ponto, foi possível evoluir de maneira significativa através da arquitetura AlexNet. Posteriormente, esta arquitetura foi superada pelo VGG. Após a arquitetura VGG, foi introduzida a arquitetura ResNet (Residual Networks, em inglês), que se caracteriza por sobrepor a ha- bilidade humana em classificar imagens para o ImageNet – lembrando que o MACHINE LEARNING 76 Machine learning - Unidade3 - Formato A5.indd 76 30/10/2019 16:16:10 ImageNet é uma série de dados formada por uma quantidade imensa de ima- gens, o que demonstra as possibilidades que as redes profundas apresentam. Com a especialização presente nos recursos computacionais aliados a uma grande quantidade de conjuntos de dados à disposição, a performance das redes neurais permanece em plena evolução. Atualmente as redes neurais são métodos consolidados por conta da utilização elevada nos mais variados pro- blemas. Vale frisar que elas vêm apresentando resultados diferenciados, além de uma quantidade expressiva de aplicações e expectativas elevadas. Ao determinar os tipos de Deep Learning, o Keras disponibiliza uma API Funcional, e as redes neurais são estabelecidas como uma série de funções determinadas em sequência. A figura a seguir traz um exemplo prático, eviden- ciando que a saída da camada 1 de definição de função representa a entrada da camada 2 estabelecida na função. Figura 5. Camadas do Keras. Fonte: SEIF, 2019. (Adaptado). Figura 6. Camadas do Pytorch. Fonte: SEIF, 2019. (Adaptado). Similar ao Keras, o Pytorch disponibiliza camadas como modelos de desen- volvimento, porém se encontram em uma classe Python. MACHINE LEARNING 77 Machine learning - Unidade3 - Formato A5.indd 77 30/10/2019 16:16:19 Como o Pytorch fornece acesso a todos os recursos de classe do Python, em vez de camadas de função simples, defi nir as redes pode ser muito mais claro e mais elegante. Realmente não há muita desvantagem nisso, a menos que você realmente sinta que escrever o código de rede o mais rápido possível é o mais importante para você, então, o Keras será um pouco mais fácil de trabalhar. Complexidade da teoria A técnica de Deep Learning tem atingido resultados estatísticos de grande relevância, demostrado pelo uso das diversas camadas. Mas existem limita- ções quanto ao uso de redes neurais profundas, cuja forma de aprendizado se dá pela aplicação de uma série de transformações nos vetores de entradas. Essas transformações são dadas por um grande conjunto de pesos (parâme- tros), que passa por atualização durante a etapa de treinamento, sendo ainda que tais transformações precisam ser deriváveis. Assim, o mapa de entradas precisa ser contínuo e suave. Outra limitação está relacionada à abstração e adaptação da rede, ten- do em vista que as redes neurais profundas necessitam de um grande nú- mero de dados categorizados para aprender conceitos simples, em com- paração a um ser humano, que precisa de poucos exemplos para aprender algum conceito e, assim, é capaz de se adaptar facilmente a tais conceitos no decorrer do tempo. Os algoritmos DL podem ser divididos em dois tipos de modelos: os mo- delos com redes neurais e os modelos probabilísticos. Eles são, mais espe- cifi camente: • Redes neurais • Convolucionais (CNN) • Recorrentes (RNN e LSTM) • Modelos probabilísticos • Restricted Boltzmann Machine (RBM) • Rede Deep BeliefNetwork (DBN) • Autoencoders (AE) A Figura 7, a seguir, exibe os modelos que serão analisados e seus respecti- vos comportamentos. MACHINE LEARNING 78 Machine learning - Unidade3 - Formato A5.indd 78 30/10/2019 16:16:19 Figura 7. Redes neurais artificiais. Fonte: DATA SCIENCE ACADEMY, 2019b. (Adaptado). O algoritmo Long Short-Term Memory (LSTM) é um modelo de rede neural recorrente essencial em uma série de problemas, devido à sua capacidade de separar ocorrências recentes e distantes. Isto ocorre inserindo pesos distintos para cada um e apresentando a habilidade de descartar memórias irrelevantes para predizer saída posterior. Sendo assim, elas apresentam uma capacidade superior de tratar com sequências de dados longas, quando mensuradas em relação a outras redes neurais recorrentes. As redes Long Short-Term Memory são definidas como um tipo usual e pro- fundo de redes neurais. Foram abordadas pelos estudiosos Sepp Hochreiter e Jürgen Schmidhuber no artigo “Long short-term memory”, publicado em 1997 no periódico Neural Computation, e objetivam disponibilizar uma performance mais evoluída para solucionar questões referentes ao desaparecimento de gradiente, que redes neurais recorrentes podem sofrer quando lidam com sequências ex- tensas de dados. Geralmente, a LSTM lida com séries de dados, estabelecendo o nível das falhas contínuas por meio de unidades específicas denominadas gates, que permitem ajustes de medidas da mesma forma que a sequência, quando a informação é desnecessária. Esse modelo de rede é utilizado extensivamente nas redes neurais artificiais, como se visualiza na figura a seguir: Redes neurais artificiais LSTM RBM RNN AE Célula de saída Célula com memória Célula recorrente Entrada celular Célula de entrada e saída Entrada celular backfed Nível probabilístico MACHINE LEARNING 79 Machine learning - Unidade3 - Formato A5.indd 79 30/10/2019 16:16:19 ft it Ot Ct Gate de entrada Xt ht Gate de saída Gate de esquecimento Figura 8. Redes LSTM. Fonte: ZAYTAR; AMRANI, 2016, p. 8. (Adaptado). Este fato é visto especifi camente no processamento de linguagem natu- ral e em identifi cação de caligrafi a. Desde a sua realização, esta ferramenta foi disseminada em inúmeras variações. Porém, à medida que é analisada, nenhuma foi habilitada para expor alguma evolução importante em relação aos resultados. Bastante utilizadas em predições relacionadas aos preços de ações, as redes LSTM exibem uma performance importante em relação ao processa- mento de linguagem natural. Tais redes são normalmente utilizadas como entrada para predizer tendências de preço, em redes recorrentes, além de adquirir resultados elevados. Redes convolucionais Uma rede neural convolucional, do inglês Convolutional Neural Network (CNN), é um modelo de DL inspirado no córtex visual e que, por- tanto, abrange o campo da visão computacional, viabilizando o desenvolvimento de softwares capazes de classifi car e loca- lizar objetos em imagens com dinamismo surpreendente. MACHINE LEARNING 80 Machine learning - Unidade3 - Formato A5.indd 80 30/10/2019 16:16:19 Desenvolver uma CNN, partindo do ponto inicial, pode ser vista como uma atividade custosa, que demanda certo tempo para ser executada. Diante desta situação, um conjunto de APIs é criado com o objetivo de possibilitar que as empresas adquiram insights de maneira imediata, sem a necessidade de obter um aprendizado automático ou experiência em visão em uma máquina compu- tacional. Alguns exemplos destas APIs são: • Google Cloud Vision: Trata-se de uma API responsável pelo reconheci- mento visual do Google ao usar uma API denominada de “REST”. Vale frisar que esta API tem como referência a estrutura TensorFlow, que se caracteriza por dispor de um código aberto. Ele está habilitado, por exemplo, a identificar rostos e objetos de maneira individualizada e dispor de uma série de rótulos com um nível elevado de abrangência; • IBM Watson Visual Recognition: É considerada como uma parte do Watson Developer Cloud. Caracteriza-se por apresentar um grande conjunto composto por classes embutidas, além de ser desenvolvido para realizar trei- namento de classes personalizadas baseado em imagens fornecidas. Esta API lida com um conjunto de aspectos astutos, apresentando uma identificação de NSFW e OCR, assim como ocorre no Google Cloud Vision. • Clarif.ai: É considerada uma API de identificação de imagens, que usa uma API denominada de “REST”. Uma característica importante em relação ao Clarif. ai se dá pelo fato de apresentar um conjunto de módulos que auxiliam a adap- tação do seu algoritmo a assuntos exclusivos. As APIs normalmente são adaptadas para aplicações mais generalistas, porém, é possível adquirir resultados mais expressivos, criando uma solução específica para atividades personalizadas. Esta API está localizada em diversas bibliotecas, o que facilita a vida dos profissionais ligados aos desenvolvedores e cientistas de dados no que se refere a aspectos de otimização e computação, possibilitando a concentração nos modelos de treinamento. O TensorFlow, por exemplo, é um mo- delo de biblioteca muito usada por conta sua diversidade de aplicações. No que se refere à aplicação das redes neurais convolucionais, é possível verificar algumas situações, como a adição de sons em filmes silenciosos. Para acrescentar um som a um vídeo silencioso, é importante que o sistema execute ações capazes de sintetizar os sons. Vale frisar que o sistema passa por um trei- namento usando diversos exemplos de vídeos que utilizam um som de bastão, MACHINE LEARNING 81 Machine learning - Unidade3 - Formato A5.indd 81 30/10/2019 16:16:20 alcançando superfícies e sons distintos. Um modelo de aprendizagem profunda realiza uma interligação entre os quadros de vídeo e os bancos de dados de sons gravados previamente. O objetivo é selecionar um som que se relaciona com a cena. Diante desta situação, o sistema é analisado com o auxílio de uma configu- ração parecida com o teste de Turing, que se caracteriza pelo procedimento de seres humanos estabelecerem qual vídeo apresenta sons falsos ou reais. Do tipo feedforward, as redes convolucionais aprendem representações hierárquicas em diversos níveis de abstração. David Hubel e Torsten Wiesel, em 1960, encontraram dois tipos de células na arquitetura funcional do cór- tex visual de um gato. Ao analisarem-nas, definiram que elas se diferenciavam entre células simples (S-Cell) e complexas (C-Cell). As células simples rastreiam características, e as complexas sintetizam (“pool”), dentro de uma vizinhança retinotópica, as saídas das células simples. A primeira rede neural com ideias neurofisiológicas foi criada em 1979 em Fukushima, e era chamada de “Neocognitron”. Com isso, foi introduzido o con- ceito de redes neurais convolucionais. Juyang Weng, em 1992, cria o Crescep- tron, capaz de adaptar sua topologia durante seu treinamento. Em 2016, são apresentadas por Kumar Chellapilla as primeiras redes neurais convolucionais implementadas em GPU. Ao criar um experimento, geralmente se utiliza o modelo Inception v3, de- finido como uma arquitetura de rede neural convolucional. Trata-se de um modelo de identificação de imagens utilizado de maneira ampliada e com alto índice de precisão. Este modelo é formado por blocos do tipo simétrico e assi- métrico. A figura a seguir expõe as camadas inseridas na arquitetura do mode- lo Inception v3. Figura 9. Arquitetura de modelo Inception v3. Fonte: GOOGLE CLOUD, 2019. Convolução AvgPool MaxPool Concat Dropout Fully-connected Softmax MACHINE LEARNING 82 Machine learning - Unidade3 - Formato A5.indd 82 30/10/2019 16:16:20 Arquitetura De maneira geral, as Convnets (redes convolucionais) são organizadas em estágios, sendo cada um composto por uma ou mais camadas de convolução, seguidas de uma de amostragem (pooling). Apósa camada de estágio fi nal, são adicionadas uma ou mais camadas complementares, de maneira que elas fi quem interconectadas. A seguir são descritos em mais detalhes cada camada e suas respectivas funcionalidades. • Camada convolucional (Convolutive layer): Nesta camada, os neurônios não estão individualmente ligados a todas as entradas da rede. Uma rede con- volucional, logo, dedica vários neurônios para possibilitar o mapeamento de todas as entradas. Essas redes seguem os seguintes critérios: se um conjunto de pesos de um neurônio pode descrever uma região de uma imagem, mui- to provavelmente podem descrever outra região. Chamamos esse comporta- mento de compartilhamento de parâmetros. • Camada de amostragem (Pooling layer): A camada de amostragem ope- ra de uma maneira muito parecida com os featuares de entrada, reduzindo a vizinhança, pegando o valor máximo e, ao realizar este procedimento, por diversas vezes reduz as variações da representação do feature. É importante ressaltar que a função de max pooling não possui parâmetros de otimização, portanto, não temos equação de correção dos parâmetros, sendo o erro pas- sado para a seguinte camada. • Camada fully-connected (Fully-connected layer): É a camada que faz a ligação entre a última camada de neurônio e a saída da classifi cação. Nessa ca- mada, os neurônios possuem pesos que se associam a cada vetor de entrada. Em CNNs, esta camada é chamada também de FC, e é posicionada após múltiplas camadas convolucionais, pois a FC redimensiona os dados que provêm das cama- das anteriores, produzindo uma combinação linear dos vetores. Sendo as duas primeiras geralmente localizadas nas primeiras camadas, esse grupo tem a função de ex- trair os principais padrões para a classifi cação. Elas se organizam da seguinte maneira: convolucional – amostragem – convolucional – amostragem, con- forme ilustrado na Figura 10. MACHINE LEARNING 83 Machine learning - Unidade3 - Formato A5.indd 83 30/10/2019 16:16:20 Camada de entrada 36 36 26 12 1226 11 11 3 3 3 7 73 9 9 9 Camada convolucional 1 Camada convolucional 2 Camadas de saída Camada fully-connected Camada de amostragem 1 Camada de amostragem 2 3 3 3 3 2 2 6 6 Figura 10. Rede CNN. Fonte: NIELSEN, 2015. As CNN ganharam popularidade em 2012, quando foram utilizadas no re- conhecimento de objetos a partir do mapa de características extraídas de ima- gens de forma automatizada. Sendo assim, a CNN desempenha o papel de ex- trator de características de forma autônoma. Ao contrário de trabalhar com conjuntos de dados em forma de textos e números, dos quais extrair recursos é fácil, quando se trata de imagens, o pro- blema se torna mais complexo. Por esse motivo, as CNNs se mostram mais efi- cientes nesse ambiente. As imagens precisam ser rotuladas manualmente para que possamos ensinar a máquina, por exemplo, sobre onde estão as orelhas, o nariz e a boca das pessoas. Por isso esse trabalho se torna um pouco artesanal. Dessa forma, a máquina precisa aprender esses recursos por conta própria. Algoritmos de otimização CNN Tendo as funções de custo definidas, é necessário ajustar os parâmetros de forma que o custo seja reduzido. Para que isso seja feito, usa-se o algoritmo do gradiente descendente, em conjunto com o método de backpropagation, que permite obter a sequência de parâmetros presentes na rede utilizando a regra da cadeia. A seguir, apresentamos alguns dos algoritmos de otimização frequente- mente utilizados. • Gradiente Descendente Estocástico (SGD): utilizando o método de apro- ximações do gradiente descendente, é possível acelerar o treinamento da rede, por exemplo, ao usar amostras aleatórias dos dados. Devido a esse motivo, o método recebe a nomenclatura gradiente descendente estocástico, pois anali- sa apenas uma amostra, e não todo o conjunto de dados. MACHINE LEARNING 84 Machine learning - Unidade3 - Formato A5.indd 84 30/10/2019 16:16:20 • Momentum: ao desenvolver o fator momentum, é possível adicionar um novo hiperparâmetro. Isto permite o controle da velocidade das mudan- ças nos parâmetros “W” da rede que altera o peso da direção atual do gra- diente, além de prevenir que a nova atualização, denominada de “W+1”, se distancie da atual direção inserida no espaço dos parâmetros. Aspectos a se considerar no treina- mento de CNNs: • Inicialização: atualmente são uti- lizados números aleatórios, sorteados a partir de uma distribuição gaussia- na, para inicializar os pesos. É possível utilizar um valor fixo com uma variância de 0,01, mas que também pode atra- palhar nas convergências; • Tamanho do minibatch: com o uso de SGD e suas variações, é necessário definir o tamanho do minibatch de exemplo que será usado; • Regularização: ao utilizar uma função de custo, alguns problemas podem surgir. Um caso recorrente é a existência de diversos parâmetros “W”, que fa- zem com que o modelo classifique corretamente o treinamento. Como existem diversas soluções, é difícil encontrar bons parâmetros. Portanto, é utilizado um termo de norma L2 para regularizar os pesos; • Dropout: técnica utilizada para minimizar overfitting, com probabilidade de ativação dos neurônios na fase de treinamento e durante a propagação dos dados pela rede; • Batch normalization (BN): a BN é um método de normalização, e regula- rizador das ativações da camada anterior em cada batch de entrada, que man- tém a ativação média próxima a 0 e o desvio padrão próximo a 1. • Data-augmentation: é a geração de uma base de treinamento aumenta- da, normalmente aplicando operações de processamento em cada imagem da base e gerando cerca de cinco a dez novas imagens por imagem original; MACHINE LEARNING 85 Machine learning - Unidade3 - Formato A5.indd 85 30/10/2019 16:16:33 • Pré-processamento: as imagens de entradas podem ser pré-processadas de diversas formas, sendo as mais comuns: computação da imagem média para todo o conjunto treinado e a normalização do Z-score, que é o método mais utilizado. O ponto forte dessa técnica é o fato de dispormos de uma rede neural que procura as características mais distintivas dos objetos por conta própria. Nós não precisamos, portanto, imputá-los manualmente. Podemos alimentar a má- quina com qualquer quantidade de imagens, de qualquer objeto, e nossa rede criará mapas de recursos a partir de variáveis e aprenderá a diferenciar qual- quer objeto por conta própria. EXEMPLIFICANDO As redes CNNs são usadas para procurar objetos em fotos e vídeos, bem como para reconhecimento de face, transferência de estilo, geração e aprimoramento de imagens, criação de efeitos e melhoria da qualidade da imagem. Atualmente, as CNNs são usadas em todos os casos que envol- vem fotos e vídeos. Se você usa iPhone, várias dessas redes estão fazen- do uso de suas fotos para detectar objetos nelas. Rede neurais recorrentes As redes neurais recorrentes (RNNs) possuem laços de conexão que possi- bilitam a persistência da informação. As RNNs utilizam eventos passados para recalibrar suas saídas em relação às novas entradas. Podemos dizer que um si- nal é enviado à rede recorrente em um instante de tempo t, e este pode alterar o comportamento da rede em um momento t + k, onde k > 0. As RNNs são adequadas para o processamento de informação e sequên- cias, dado que são capazes de memorizar eventos mesmo que eles ocorram após longos intervalos. As RNNs têm sido utilizadas em uma variedade de con- textos, relacionando-se, por exemplo, a modelagem da linguagem, tradução, reconhecimento de voz etc. Tendo em vista que as RNNs são máquinas de Tu- ring completas, na teoria, podem desenvolver qualquer computação. Com isso, têm surgido diversas aplicações das RNNs, como, por exemplo, a geração de legenda para imagens. Existem muitas maneiras para que as unidades de uma RNN possam se conectar entre si. MACHINE LEARNING 86 Machine learning - Unidade3- Formato A5.indd 86 30/10/2019 16:16:33 A A A A h x h x h x h x Figura 11. Redes neurais recorrentes desdobradas. A rede representada na Figura 11 tem uma aparência simples, porém, se repararmos bem, a unidade oculta tem uma conexão A que se liga a si mesma. Sendo assim, A recebe sinais gerados por ela própria em um ins- tante t do passado. Redes neurais recorrentes são o segundo tipo mais popular para reconhe- cimento de voz e síntese de voz em assistentes inteligentes. As RNNs são mais utilizadas para dados sequenciais, como voz, texto ou música. O Amazon Alexa e o Assistente do Google utilizam-nas, por exemplo. O sistema deles é capaz de dizer palavras claramente e até inserem os acentos adequados – isso porque os modernos assistentes de voz são treinados para falar não letra por letra, mas frases inteiras ao mesmo tempo. Podemos selecionar um monte de textos sonoros e treinar uma rede neural para gerar uma sequência de áudio mais próxima possível do discurso original. EXEMPLIFICANDO As RNNs funcionam da seguinte forma: utilizamos um texto como entrada, e o áudio associado ao texto como a saída desejada. Solicitamos à má- quina (isto é, à rede neural) para gerar um áudio para o texto dado. Então, compare-o ao texto original e corrija os erros, de forma a chegar o mais próximo possível do ideal. Podemos treinar a máquina para gerar esses sons, mas então surge a dúvida: como ela se lembrará das respostas? A ideia é adicionar memória a cada neurônio e usá-lo como uma entrada adicional nas próximas execuções. MACHINE LEARNING 87 Machine learning - Unidade3 - Formato A5.indd 87 30/10/2019 16:16:33 Modelos de redes neurais e modelo probabilísticos Um caso especial é o de uma máquina Boltzmann, na qual não temos conexões entre os neurônios da mesma camada. É, portanto, um modelo de duas camadas, sendo uma oculta e uma visível, e de sinapse não direcional. Sua mais importante utilização é a de aprendizagem para se construir uma Deep Belief Network. Camada oculta Camada visível Figura 12. Rede RBM. A camada oculta é representada na figura por neurônios do tipo binários estocásticos. Na camada visível, as entradas binárias são ligadas por feature detectors binários, que utilizam pesos de conexão. Deep Belief Network (DBN) Um modelo generativo probabilístico composto de diversas camadas de variáveis latentes estocásticas tem como objetivo aprender níveis abstratos da distribuição dos dados de entrada. A seguir, trataremos de três algorit- mos que são aplicados na resolução deste tipo de problema: • Wake – Sleep: Nesse algoritmo, para cada vetor de pesos reconhecido pelo neurônio X da arquitetura, é utilizada a programação bottom-up e se- leciona-se os estados binários das unidades ocultas; • Greedily Layer-Wise Training: Os DBN são treinados um a um. Cada variável latente é tratada. Os pesos de saída de cada camada são utilizados para inicializar a próxima; • Up-Down: Utiliza o algoritmo Greedily Training para aprender os pesos da DBN, mas os recalibra com o método “up-down”, pois o método GT não garante alta qualidade no valor dos pesos gerados. MACHINE LEARNING 88 Machine learning - Unidade3 - Formato A5.indd 88 30/10/2019 16:16:33 Autoencoders (AE) O modelo Stacked Autocoders, também conhecido como autocodifi cado- res ou redes autoassociativas, defi ne-se por uma estrutura que tem base no módulo RBM. Essa classe de rede pode ser treinada de maneira não supervi- sionada, característica que pode ser muito útil em um posterior aprendizado supervisionado. Com isso, os autocoders são muito utilizados na redução de dimensões não lineares de dados. Autoencoder é uma rede neural treinada para tentar copiar sua entrada para sua saída. Internamente, ele tem uma camada oculta que descreve as pro- teções presentes à entrada. Além disso, eles são restritos a copiar somente entradas que se assemelhem com os dados de treinamento. Como o mode- lo é forçado a priorizar aspectos da entrada devem ser copiados, geralmente aprende propriedades úteis. Além disso, o autoencoder é um algoritmo de aprendizado de máquina não supervisionado que toma uma imagem como entrada e tenta reconstruí- -la usando um número menor de bits do gargalo, também conhecido como espaço latente. A imagem é majoritariamente comprimida no gargalo. A com- pactação em autoencoders é obtida por meio do treinamento da rede por um período e, à medida que ela aprende, tenta representar melhor a imagem de entrada no gargalo. Os algoritmos gerais de compressão de imagens, como a própria nomen- clatura sugere, comprimem as imagens sem a necessidade de qualquer tipo de treinamento, e se saem razoavelmente bem na compactação das imagens. Essa rede possui uma pequena camada intermediária de neurônios, que divide a rede em duas partes simétricas. Sua estrutura contém blocos de RBM que diminuem a quantidade de neurônios em cada camada até a central. Essa, por sua vez, tem a menor dimensão de toda a rede. Na Figura 13 a seguir, podemos visualizar como funciona este método: temos uma imagem de 28x28 pixels, reduzida até chegar em 30 unida- des na camada central. Após o processamento, a rede reconstrói a imagem com os 28x28 pixels. MACHINE LEARNING 89 Machine learning - Unidade3 - Formato A5.indd 89 30/10/2019 16:16:33 28x28 28x28 1000 neurônios 1000 neurônios 500 neurônios 500 neurônios 100 neurônios 100 neurônios 30 Figura 13. Método AE. EXEMPLIFICANDO Para conseguir treinar a máquina, faremos o seguinte: dividimos uma imagem inteira em blocos de 8x8 pixels, e atribuímos a cada pixel um tipo de linha dominante, que pode ser horizontal ( – ), vertical ( | ) ou uma das diagonais ( / ). Dessa forma, é possível treinar a máquina para as caracte- rísticas encontradas. Essa operação é chamada de convolução, que deu nome ao método. São imagens por si só, mas construídas com parâmetros definidos. Assim, podemos mais uma vez tomar um bloco de 8x8 e verificar como eles se combinam, fazendo isso repetidas vezes até obtermos o treinamento da máquina. MACHINE LEARNING 90 Machine learning - Unidade3 - Formato A5.indd 90 30/10/2019 16:16:33 É possível treinar qualquer arquitetura de autoencoder escolhendo a di- mensão do código e a capacidade do codificador e do decodificador com base na integralidade do conjunto. Em vez de limitar a capacidade do modelo man- tendo o decodificador superficial e o tamanho do código, pequenos autorre- ceptores usam uma função que incentiva o modelo a ter outras propriedades além da capacidade de copiar sua entrada para a saída esperada. Essas outras propriedades incluem a dispersão da representação, a peque- na derivada da representação e a robustez do ruído ou à falta de entradas. Um autoencoder pode ser não linear e completo, mas ainda assim aprender algo útil sobre o conjunto de dados, mesmo que a capacidade do modelo seja gran- de o suficiente para aprender uma função de identidade básica. Existe uma variedade de autoencoders, mas os mais utilizados são o enco- der e o decodificador, com as características conforme seguem: Encoder: esta parte da rede comprime ou reduz a entrada em um número menor de bits. O espaço representado por esse menor número de bits é fre- quentemente chamado de espaço ocioso ou gargalo. O gargalo é também cha- mado de “ponto máximo de compressão”, já que, neste momento, a entrada é comprimida ao máximo. Esses bits compactados que representam a entrada original são juntos chamados de “codificação” de entrada. Decodificador: esta parte da rede tenta reconstruir a entrada usando ape- nas a codificação de entrada. Quando o decodificador é capaz de reconstruí-la de forma exata, podemos afirmar que o codificador é capaz de produzir as melhores codificações. MACHINE LEARNING 91 Machine learning - Unidade3 - Formato A5.indd 91 30/10/2019 16:16:33 Sintetizando O Machine Learning apresenta um conjunto de subgruposdenominado Deep Learning (DL), que se caracteriza por estar ligado à automação, de for- ma mais aprofundada. O Deep Learning dispõe de uma abordagem mais es- sencial ao desenvolvimento e criação de redes neurais, que vêm evoluindo de forma aplicável a vários setores, principalmente ligados à educação e e-com- merce, por exemplo. Vimos que o Deep Learning trata-se de um método que apresenta algumas chances de aprendizagem profunda através da utilização de redes neurais, utilizadas, dentre outras coisas, para a identificação de fala, visão e lingua- gem. Essas redes são formadas essencialmente por uma série de neurônios, que têm o objetivo de apresentar diversas entradas e uma única saída, além das suas conexões. Mesmo com a existência de várias técnicas clássicas, o neurônio é a unidade do Deep Learning que apresenta características gene- ralistas e flexíveis. Uma rede neural convolucional, também abordada aqui, é definida como um modelo de Deep Learning que abrange uma visão computacional, possibi- litando a criação dos softwares capazes de classificar e encontrar objetos em imagens com elevado nível de dinamismo. No modelo feedforward, as redes convolucionais se instruem de simbologias hierárquicas em vários níveis de abstração. Por fim, verificamos que o Stacked Autocoders é determinado como auto- codificador ou rede autoassociativa, cuja estrutura se referencia no módulo RBM. O treinamento desta classe de rede ocorre de forma não supervisiona- da, aspecto extremamente importante em um aprendizado supervisionado futuro. Os autocoders, finalmente, são muito usados nas limitações de di- mensões não lineares de dados. MACHINE LEARNING 92 Machine learning - Unidade3 - Formato A5.indd 92 30/10/2019 16:16:33 Referências bibliográficas BUSSON, A. et al. Desenvolvendo modelos de deep learning para aplicações multi- mídia no tensorflow. In: SIMPÓSIO BRASILEIRO DE SISTEMAS MULTIMÍDIA E WEB, Minicursos, XXIV, 2018, Salvador, BA. Anais…, Salvador: SBC, IFBA 2018, p. 67-116. DATA SCIENCE ACADEMY. Capítulo 3 – O Que São Redes Neurais Artificiais Profun- das ou Deep Learning? In: Deep Learning Book, 2019a. Disponível em: <http:// deeplearningbook.com.br/o-que-sao-redes-neurais-artificiais-profundas/>. Aces- so em: 17 out. 2019. DATA SCIENCE ACADEMY. Capítulo 9 – A Arquitetura das Redes Neurais In: Deep Learning Book, 2019b. Disponível em: <http://deeplearningbook.com.br/a-arqui- tetura-das-redes-neurais/>. Acesso em: 17 out. 2019. GOOGLE CLOUD. Guia avançado do Inception v3 no Cloud TPU. 16 ago. 2019. Disponível em: <https://cloud.google.com/tpu/docs/inception-v3-advanced?hl=p- t-br>. Acesso em: 15 out. 2019. GREFF, K. et al. LSTM: A search space odyssey. IEEE Transactions on Neural Net- works and Learning System, v. 28, n. 10, p. 2222-2232, 2017. KOLMOGOROV, A. Zur Theorie der Markoffschen Ketten. Mathematische Anna- len, v. 112, n. 1, p. 155-160, 1936. LeCUN, Y.; BENGIO, Y.; HINTON, G. Deep Learning. Nature – International Journal of Science, v. 521, n. 7553, p. 436-444, 2015. HOCHREITER, S.; SCHMIDHUBER, J. Long short-term memory. Neural Computa- tion, v. 9, n. 8, p. 1735-1780, 1997. Disponível em: <https://www.researchgate.net/ publication/13853244_Long_Short-term_Memory>. Acesso em: 17 out. 2019. MORAES, H. R; CASTRO, A. R. G. Deep neural network with application to trans- former failure diagnosis. In: ENCONTRO NACIONAL DE INTELIGÊNCIA ARTIFICIAL E COMPUTACIONAL, XV, 2018, São Paulo. Anais…, Porto Alegre: SBC, 2018, p. 287- 298. Disponível em: <https://sol.sbc.org.br/index.php/eniac/article/view/4424>. Acesso em: 21 ago. 2019. NIELSEN, M. A. Neural networks and deep learning. [S.l.]: Determination Press, 2015. RAMOS, T. Deep Learning. São Paulo: IME-USP, 2015. Disponível em: <https:// www.ime.usp.br/~gold/cursos/2015/MAC5742/reports/DeepLearning.pdf>. Aces- so em: 2 out. 2019. MACHINE LEARNING 93 Machine learning - Unidade3 - Formato A5.indd 93 30/10/2019 16:16:34 SARAIVA, Sérgio. Deep Learning Passo a Passo. Revista Programar, 23 abr. 2018. Disponível em: https://www.revista-programar.info/artigos/deep-learning-passo- -passo/. Acesso em: 2 out. 2019. SEIF, G. Keras vs Pytorch for Deep Learning. Towards Data Science, 16 jun. 2019. Disponível em: <https://towardsdatascience.com/keras-vs-pytorch-for-deep-lear- ning-a013cb63870d>. Acesso em: 10 out. 2019. WARREN, H. E. Lower bounds for approximation by nonlinear manifolds. Transac- tions of the American Mathematical Society, v. 133, n. 1, p. 167-178, 1968. ZAYTAR, M. A.; AMRANI, C. E. Sequence to sequence weather forecasting with Long Short-Term Memory recurrent neural networks. International Journal of Com- puter Applications, v. 143, n. 11, p. 7-11, 2016. MACHINE LEARNING 94 Machine learning - Unidade3 - Formato A5.indd 94 30/10/2019 16:16:34