Aprendizado profundo: conceitos, técnicas e estudo de caso de análise de imagens com Java
|
|
|
- Luísa de Lacerda Delgado
- 8 Há anos
- Visualizações:
Transcrição
1 III Escola Regional de Informática do Piauí. Livro Anais - Artigos e Minicursos, v. 1, n. 1, p , jun, ISBN: Capítulo 11 Aprendizado profundo: conceitos, técnicas e estudo de caso de análise de imagens com Java Francisco Gerardo Medeiros Neto, Raimundo Farrapo Pinto Júnior, Marden Gabriel Oliveira Rocha, Jarbas Joaci de Mesquita Sá Junior e Iális Cavalcante de Paula Júnior Abstract Deep learning corresponds to a broad class of machine learning techniques and architectures. The algorithms of this research area involve using many layers of non-linear information processing which are in hierarchical nature. It is noticed in the literature that the techniques have been evolving and they are able to process databases with high volume of information. The demand for this type of learning technique is increasing due to the greater availability of data in the last years, mainly with the increase of internet speed, growth of social networks and advance of communication and marketing technologies. Deep learning methods seek to simulate human brain behavior in tasks such as visual recognition, speech recognition, and natural language processing. The purpose of this work is to introduce deep learning methods for image analysis using the Java library known as Deeplearning4j. Resumo Aprendizado profundo corresponde a uma classe bastante ampla de técnicas e arquiteturas de aprendizagem de máquina. Os algoritmos dessa linha de pesquisa envolvem a característica de usar muitas camadas de processamento de informações não-lineares que são de natureza hierárquica. Percebe-se na literatura que essas técnicas vêm evoluindo e conseguem processar bases de dados com alto volume de informações. A demanda por esse tipo de técnica de aprendizagem é crescente por consequência da maior disponibilidade de dados nos últimos anos, principalmente com o aumento da velocidade da internet, crescimento das redes sociais e avanço das tecnologias de comunicação e marketing. Os métodos de aprendizagem profunda buscam simular o comportamento do cérebro humano em tarefas como reconhecimento visual, reconhecimento de fala e processamento de linguagem natural. O objetivo deste minicurso é introduzir métodos de
2 aprendizado profundo para análise de imagens com o uso da biblioteca em Java conhecida como a Deeplearning4j Introdução Desde 2006, a aprendizagem profunda estruturada, ou mais comumente chamada de aprendizagem profunda ou aprendizagem hierárquica, emergiu como uma nova área de pesquisa de aprendizagem de máquina [Liu et al. 2017, Bengio 2009, LeCun et al. 2015]. Durante os últimos anos, as técnicas desenvolvidas a partir de pesquisas de aprendizagem profunda têm impactado em uma ampla gama de trabalhos de processamento de sinais e reconhecimento de padrões. É reconhecível a abertura de novos domínios de problemas que podem ser resolvidos com essas técnicas, incluindo aspectos-chave da aprendizagem de máquina e da inteligência artificial. Nota-se também uma cobertura midiática do progresso nesta temática, principalmente nas mídias sociais [Hinton et al. 2012, Yang et al. 2015]. Grandes empresas protagonistas no mercado de tecnologia têm investido fortemente no estudo de aprendizado profundo e gerado novas aplicações. O aprendizado profundo é um conjunto de algoritmos de aprendizado de máquina que tentam assimilar em vários níveis, correspondendo a diferentes graus de abstração. Os níveis nesses modelos estatísticos aprendidos correspondem a graus distintos de conceitos, em que os de alto nível são definidos a partir de níveis inferiores, e os mesmos conceitos de nível inferior podem ajudar a definir muitos conceitos de nível superior. Aprendizado Profundo envolve a aprendizagem de múltiplos níveis de representação e abstração que ajudam a dar sentido aos dados, como imagens, sons e textos. Dentre as várias descrições de aprendizagem profunda disponíveis na literatura, dois aspectos-chave se destacam: (1) são modelos que consistem em múltiplas camadas ou estágios de processamento de informação não linear; e também (2) são métodos para a aprendizagem supervisionada ou não supervisionada da representação de características em camadas sucessivamente mais altas e mais abstratas. O aprendizado profundo está nas interseções entre as áreas de pesquisa de redes neurais, inteligência artificial, modelagem gráfica, otimização, reconhecimento de padrões e processamento de sinais. Três razões importantes para a popularidade atual da aprendizagem profunda envolvem o aprimoramento das capacidades de processamento de chips (por exemplo, unidades de processamento gráfico de propósito geral ou GPGPUs), o aumento significativo do tamanho dos dados usados para treinamento e os recentes avanços na pesquisa em aprendizagem de máquina e processamento de sinais. Esses avanços permitiram que os métodos de aprendizagem profunda explorassem eficazmente funções complexas e não lineares, aprendessem representações de recursos distribuídos e hierárquicos, além de permitirem o uso efetivo de dados rotulados e não rotulados [Chung et al. 2015, LeCun et al. 2010]. Dentro desse contexto, o aprendizado profundo refere-se a uma classe bastante ampla de técnicas e arquiteturas de aprendizagem de máquina. Estas, por sua vez, envolvem a característica de usar muitas camadas de processamento de informações não lineares que são de natureza hierárquica. Dependendo de como as arquiteturas e técnicas são destinadas para uso como, por exemplo, síntese/geração ou reconhecimento/classificação, pode-se categorizar amplamente a maior parte do trabalho nessa área em três grupos principais [Bengio 2009, Pang et al. 2017]:
3 1. Redes profundas para aprendizado não supervisionado ou generativo, que se destinam a capturar a correlação de alta ordem dos dados observados ou visíveis para fins de análise ou síntese de padrões quando não há informações sobre os rótulos das classes disponíveis na base. Aprendizagem de característica ou representação não supervisionada na literatura refere-se a essa categoria de redes profundas. Quando usado no modo generativo, também pode-se buscar a caracterização de distribuições estatísticas conjuntas dos dados visíveis e suas classes associadas quando disponíveis, podendo ainda estas serem tratadas como parte dos dados visíveis. 2. Redes profundas para aprendizagem supervisionada, que se destinam a fornecer diretamente poder discriminativo para fins de classificação de padrões, frequentemente caracterizando as distribuições a posteriori de classes condicionadas aos dados visíveis. Os dados do rótulo-alvo estão sempre disponíveis de forma direta ou indireta para essa aprendizagem supervisionada. Elas também são chamadas de redes profundas discriminativas. 3. Redes profundas híbridas, se destacam pela discriminação que é assistida, muitas vezes de forma significativa, com os resultados de redes profundas generativas ou não supervisionadas. Isso pode ser alcançado através de uma melhor otimização e/ou regularização das redes profundas supervisionadas. A proposta dessa rede também pode ser alcançada quando critérios discriminativos para a aprendizagem supervisionada são usados para estimar os parâmetros em qualquer das redes profundas generativas ou não supervisionadas [Goodfellow et al. 2016]. O objetivo deste minicurso é trazer uma breve introdução sobre os conceitos e métodos de aprendizado profundo. Como melhor forma de associação desses conceitos com as aplicações práticas desse ramo, aborda-se também uma preparação do ambiente de desenvolvimento em Java focado em análise de imagens. Uma biblioteca com boa aceitação no meio acadêmico e comercial é a API Deeplearning4j, da qual alguns exemplos de documentação e códigos-fonte serão apresentados aqui. Dessa forma, a Seção 11.2 apresenta (de forma sucinta) diversos conceitos introdutórios envolvidos na construção de arquiteturas de redes de aprendizado profundo. A seguir, na Seção 11.3, descrevemos procedimentos utilizados durante o treinamento de redes de aprendizado profundo. A Seção 11.4 apresenta as tecnologias de desenvolvimento de software que estão relacionados a aprendizado profundo na linguagem de programação Java. Na Seção 11.5, apresentamos as considerações finais Conceitos de Redes de Aprendizado Profundo Alguns autores assumem a classificação das técnicas de aprendizado profundo em modelos discriminativos profundos ou em modelos generativos/não-supervisionados. Dentre os discriminativos, são elencadas as Redes Neurais Profundas (do inglês Deep Neural Network - DNN), Redes Neurais Recorrentes (do inglês Recurrent Neural Network - RNN), Redes Neurais Convolucionais (do inglês Convolutional Neural Network - CNN), dentre outros. Quanto aos modelos generativos, destacam-se a Máquina Restrita de Boltzmann (do inglês Restricted Boltzmann Machine - RBMs), Máquinas Profundas de Boltzmann (do inglês Deep Boltzmann Machines - DBM), Redes deep-belief, e as redes auto-
4 codificadoras regularizadas, etc. No entanto, essa maneira de classificação bidirecional deixa escapar um conhecimento oriundo da pesquisa de aprendizagem profunda sobre como modelos generativos ou não supervisionados podem melhorar bastante a formação de DNNs e outros modelos de aprendizagem supervisionada através de melhor regularização ou otimização. Além disso, as redes profundas para a aprendizagem não supervisionada podem não necessariamente serem probabilísticas ou estimar uma amostra significativa do modelo [Nanduri and Sherry 2016, Lipton et al. 2015, Goodfellow et al. 2016]. A classificação em duas categorias de métodos aponta, na verdade, para várias diferenças fundamentais entre redes profundas de aprendizagem não supervisionada e supervisionada. Comparando-se as duas abordagens, os modelos de aprendizado profundo supervisionado, como as DNNs, são geralmente mais eficientes para treinar e testar, mais flexíveis de construir e mais adequados para a aprendizagem de ponta a ponta de sistemas complexos. Por outro lado, os modelos profundos de aprendizagem não supervisionada, especialmente os métodos generativos probabilísticos, são mais simples de interpretar, têm menor complexidade para incorporar o conhecimento do domínio, e são mais diretos em sua composição e para lidar com a incerteza, Entretanto, os modelos profundos são tipicamente intratáveis na inferência e aprendizagem para sistemas complexos [Dean et al. 2012]. Nas subseções a seguir são analisadas algumas arquiteturas de redes de aprendizado profundo. Desse modo, faz-se necessário destacar algumas terminologias que serão destacadas nas definições que surgirão ao longo do texto. Rede de deep-belief: modelos probabilísticos generativos compostos de múltiplas camadas de variáveis estocásticas e ocultas. As duas camadas superiores possuem conexões simétricas não direcionadas entre elas. As camadas inferiores recebem conexões direcionadas de cima para baixo a partir da camada acima. Máquina de Boltzmann (do inglês, Boltzmann Machine - BM): uma rede de unidades simétricas ligadas a neurônios que tomam decisões estocásticas sobre se devem ser ligadas ou não. Máquina Restrita de Boltzmann: um tipo especial de BM constituída por uma camada de unidades visíveis e uma camada de unidades ocultas sem conexões visíveisvisíveis ou ocultas-ocultas. Rede Neural Profunda: um perceptron de múltiplas camadas com muitas camadas ocultas, cujos pesos estão totalmente conectados e muitas vezes (embora nem sempre) inicializados usando uma técnica de pré-treinamento não supervisada ou supervisionada. Na literatura anterior ao ano de 2012, uma rede deep-belief foi usado frequentemente incorretamente para significar um rede neural profunda Redes Autocodificadoras Uma rede autocodificadora profunda, também conhecida por rede codificadora/- decodificadora, é composta de duas redes simétricas de deep-belief [Mohamed et al.
5 2009, Hinton et al. 2006] que tipicamente têm quatro ou cinco camadas superficiais que representam a metade de codificação da rede e um segundo conjunto de quatro ou cinco camadas que compõem a metade de descodificação. As camadas são Máquinas Boltzmann Restritas, além dos blocos de construção de redes de deep-belief, com várias peculiaridades que discutiremos adiante. Aqui está um esquema simplificado da estrutura de uma rede autocodificadora profunda, que vamos explicar a seguir. Figura Exemplo de uma Rede Autocodificadora. Fonte: [Lange and Riedmiller 2010] Processando o conjunto de dados de referência MNIST (que será mais detalhado na subseção ) uma rede autocodificadora profunda usaria transformações binárias após cada RBM. Os codificadores automáticos profundos também podem ser usados para outros tipos de conjuntos de dados com valores reais, nos quais seriam usadas as transformações retificadas gaussianas para os RBMs. Codificação a partir dos dados de entrada Considerando um exemplo de codificador a partir dos dados de entrada (784 elementos): 1000 > 500 > 250 > 100 > 30. Define-se a entrada alimentada à rede com 784 pixels (o total de pixels das imagens 28x28 no conjunto de dados MNIST). Dessa maneira, a primeira camada do autocodificador profundo deve ser ligeiramente maior, contando com 1000 parâmetros. Isso pode parecer contra-intuitivo, porque ter mais parâmetros do que a entrada é uma boa maneira de provocar overfitting em uma rede neural. Nesse caso, a expansão dos parâmetros e das características da própria entrada tornará possível a decodificação dos dados da rede autocodificadora. Isto é devido à capacidade de representação das unidades de sigmoid-belief, uma forma de transformação usada em cada camada. Unidades de sigmoid-belief não podem
6 representar tanta informação e nem a variação dos valores reais dados. A expansão da primeira camada é uma maneira de compensar isso (784 para 1000 parâmetros). As camadas terão 1000, 500, 250, 100 nós de largura, respectivamente, até o final, onde a rede produz um vetor de 30 atributos. Esse vetor final é a última camada da primeira metade do autocodificador profundo, que é a metade do pré-treinamento. Esse é o resultado de um RBM normal, ao invés de uma camada de saída de classificação como softmax ou regressão logística, como normalmente seria encontrado ao fim de uma rede de deep-belief. Codificação a partir dos dados de saída Esses 30 números são uma versão codificada da imagem de 28x28 pixels. A segunda metade de uma rede autocodificadora profunda realmente aprende como decodificar o vetor condensado, que se torna a entrada no caminho de volta para a saída da rede. A metade de descodificação de uma rede autocodificadora profunda é uma rede de alimentação avançada com camadas 100, 250, 500 e 1000 nós de largura, respectivamente. Pesos de camada são inicializados aleatoriamente e formam as demais camadas com a arquitetura que segue: 30 > 250 > 500 > 1000 > 784 (saída). A metade de decodificação de um autocodificador profundo é a parte que aprende a reconstruir a imagem. Isso se realiza com uma segunda rede feed-forward que também conduz uma retropropagação (do inglês, backpropagation). A execução da retropropagação ocorre através da entropia de reconstrução. No estágio da retropropagação do decodificador, a taxa de aprendizagem deve ser reduzida, ou tornada mais lenta: variando entre 10 3 e 10 6, dependendo se são abordados dados binários ou contínuos, respectivamente. Como descrito no exemplo acima, a rede autocodificadora profunda foi capaz de compactar imagens em vetores de 30 números. A busca de imagens, portanto, se torna uma questão de carregar uma imagem, em que o mecanismo de busca realiza a compressão da entrada para 30 números, e comparar esse vetor com todos os outros em um processo de indexação. Vetores contendo números semelhantes serão retornados para a consulta de pesquisa e traduzidos para comparação com a imagem correspondente. Os autocodificadores profundos são úteis na modelagem de tópicos ou na modelagem estatística de tópicos abstratos distribuídos em uma coleção de documentos. Por sua vez, isso é um passo importante nos sistemas de perguntas-respostas como o IBM Watson [Devarakonda and Tsou 2015] Redes Neurais Convolucionais Semelhante em sua estrutura com o perceptron de múltiplas camadas (MLP), as redes neurais convolucionais (RNC) possuem uma ampla utilização em classificação, reconhecimento e detecção em imagens [Vargas et al. 2016]. Sua estrutura pode resumir-se em camadas de convolução, agrupamento e classificação. A forma como a estrutura de uma RNC é arquitetada, ou seja, o número de cama-
7 das de convolução alternadas com as camadas de agrupamento dependerá da sua aplicação ou uso de uma estrutura já definida na literatura [Lecun et al. 1998] [Szegedy et al. 2015] [Lin et al. 2014]. Normalmente, após cada camada de convolução aplica-se uma camada de agrupamento. Na imagem abaixo podemos visualizar um exemplo de sua estruturação. Figura Exemplo de uma RNC e suas camadas. Fonte: [Vargas et al. 2016] A entrada da RNC é uma imagem, seja ela em escala de cinza ou utilizando outro esquema de cores. A seguir, na camada de convolução cada neurônio está associado a uma janela de kernel que será convoluída na imagem de entrada. Esse kernel de convolução é composto pelos valores dos pesos de ligacão do neurônio. A partir da imagem original são geradas n imagens, que resultam das operações em cada um dos n neurônios. Com essas novas imagens, devido a operação de convolução, podem ser obtidos valores negativos em alguns pixels. Por conseguinte, é realizada uma operação para remoção desses valores. As imagens obtidas a partir dessa camada são conhecidas por mapa de características. Após a camada de convolução é comum ser aplicada uma camada de agrupamento (pooling). A importância dessa etapa é a redução na dimensionalidade dos mapas de características, acelerando o tempo necessário de treinamento da rede. Na RNC alternam-se camadas de convolução e agrupamento e, como exemplo dessa arquitetura, podemos citar a GoogLeNet [Szegedy et al. 2015], que possui cinco camadas de convolução seguida por uma de agrupamento. Por fim, após todas as camadas que extraíram características da imagem original, existe uma camada que consiste em uma rede neural convencional para a classificação. É devido ao seu enorme número de camadas que a RNC é utilizada em aprendizagem profunda. Sua arquitetura permite extrair diversas características da imagem a partir de cada camada de convolução, sejam bordas, círculos, retas, texturas, etc. Essas características são cada vez mais exploradas à medida que esses valores são repassados para as camadas seguintes. É importante ressaltar que os valores dos filtros de kernel aplicados nas camadas de convolução são resultados do backpropagation da etapa de treinamento da rede. Desse modo, torna-se evidente a importância do uso das RNC em aprendizagem profunda devido a sua capacidade de extrair o máximo de informação de seus dados de entrada. Um exemplo claro de sua aplicação é a arquitetura proposta em [Lin et al. 2014], na qual foram associados RNCs e MLPs para classificação de imagens.
8 11.3. Definições de Ajustes em Redes Profundas Mesmo que o modelo de redes neurais profundas seja mais aproximado ao comportamento do cérebro humano e tenha vantagens em relação às arquiteturas tradicionais, o treinamento dessas redes era de difícil execução até alguns anos atrás, devido a duas maiores dificuldades. A primeira destas envolve a dissipação dos gradientes (vanishing gradients), que é causado por unidades que estão saturadas [Hochreiter et al. 2001]. Durante a aplicação do algoritmo de retropropagação, o gradiente da ativação de cada unidade oculta é calculado e utilizado como um termo multiplicativo para atualização dos pesos correspondentes. No entanto, se a unidade em questão está próxima da saturação, então a derivada parcial resultante será um valor próximo de zero. Isso faz com que o gradiente em relação às pré-ativações seja também próximo de zero, porque seu cálculo envolve multiplicar pela derivada parcial. Isso significa que o gradiente retropropagado para as camadas anteriores será cada vez mais próximo de zero, de tal forma que quanto mais próximo à camada de entrada, maior a quantidade de gradientes próximos de zero. Como resultado, à medida que o gradiente do erro é retropropagado, seu valor decresce exponencialmente a ponto de que o aprendizado nas camadas mais próximas à entrada se torna muito lento. Esse problema afeta não apenas o aprendizado em redes profundas feed-forward, mas também em redes recorrentes. O segundo complicador é consequência do número maior de parâmetros para adequar decorrente do aumento do número de camadas. O risco de overfitting é crescente de acordo com o aumento de parâmetros a serem ajustados em uma determinada rede [Schmidhuber 2015, Silver et al. 2016]. Como definido na literatura que aborda os métodos tradicionais de redes neurais, o aprendizado de modelos no treino das redes neurais profundas é definido de forma empírica. Discute-se a seguir técnicas de treinamento de redes neurais profundas que permitem diminuir o tempo de treinamento, ou ainda, minimizar o erro de generalização dos modelos alcançados Pré-treinamento Não Supervisionado A ideia subjacente ao pré-treinamento não supervisionado é iniciar os pesos de uma rede por meio de uma abordagem não supervisionada. Esse procedimento permite posicionar os pesos da rede em uma região do espaço de parâmetros tal que seja mais fácil para métodos de otimização baseados em gradientes encontrar um valor ótimo para o objetivo durante o treinamento supervisionado. Durante a aplicação desse procedimento, camadas intermediárias são adicionadas à rede iterativamente. Em cada iteração, uma nova camada intermediária é adicionada à rede. A nova camada intermediária adicionada deve capturar regularidades nos padrões de ativação das unidades contidas na camada anterior. Esse procedimento pode ser aplicado para a construção de redes com um número arbitrário de camadas intermediárias. Após a fase de pré-treinamento não supervisionado (que substitui a iniciação aleatória dos pesos), a camada de saída (a que produz uma distribuição de probabilidades sobre os rótulos da tarefa de classificação em questão) é então adicionada à rede. Os pesos que conectam essa camada com a camada anterior podem ser iniciados de forma aleatória. Finalmente, a rede completa é treinada da forma supervisionada usual (ou seja, com sequências de propagações de sinais adiante intercaladas por retropropagações do
9 erro). Essa segunda fase é denominada sintonia fina (fine-tuning) [Dean et al. 2012, Goodfellow et al. 2016]. Uma vantagem do pré-treinamento é que é possível tirar proveito da existência de dados não rotulados, que em geral são mais comuns do que dados rotulados. Outra vantagem é que normalmente o aprendizado com pré-treinamento converge mais rapidamente. Alguns autores adotam o uso de pré-treinamento através de RBMs, enquanto outros optam pelo pré-treinamento por meio de redes autocodificadoras Uso de Unidades Lineares Retificadas Durante anos, foi um consenso na comunidade de redes neurais usar funções sigmoides para implementar a ativação de unidades ocultas, de modo a induzir não linearidades. Entretanto, esse consenso foi colocado em prova por Nair & Hinton (2010), que propuseram o uso de uma alternativa mais simples, a função de ativação retificada linear. Neurônios que usam essa função de ativação são chamados de unidades retificadoras lineares (rectified linear units, ReLU). A Figura 11.3 apresenta um comparativo entre as funções de ativação de neurônios mais comuns para aprendizado profundo, na ordem: sigmóide (do inglês sigmoid) oriunda da função logística, tangente hiperbólica (também conhecida na literatura como TanH) e ReLU [Goodfellow et al. 2016, Nair and Hinton 2010]. Figura Tipos de funções de ativação. Fonte: [Moujahid 2016] Foi demonstrado por meio de experimentos que, em geral, a função ReLU produz um erro de treinamento menor, por conta de não ser tão suscetível ao problema da dissipação dos gradientes quanto as funções sigmoide e tangente hiperbólica. Além disso, essa função de ativação reduz o tempo de convergência dos parâmetros (por conta de sua computação não envolver exponenciações) [Krizhevsky et al. 2012]. Em 2011, o grupo de Yoshua Bengio demonstrou que ReLUs permitem o treinamento supervisionado de redes profundas sem a necessidade de utilizar pré-treinamento não supervisionado [Glorot et al. 2011] Desligamento (Dropout) Essa é outra técnica também aplicável ao treinamento de uma rede neural para reduzir o risco de sobreajuste. Na fase de propagação adiante, antes de um padrão ser apresentado à camada intermediária de índice k, cada entrada de um vetor binário m(k) é gerada por meio de uma distribuição uniforme com parâmetro p (p = 0,5 é um valor
10 usual). Esse vetor é então usado como uma máscara para desativar algumas das unidades da camada k. Mais especificamente, a pré-ativação da camada k ocorre de forma usual, mas a sua ativação é modificada ligeiramente: h(x) = g(a k (x)) m (k). Efetivamente, essa modificação faz com que a ativação das unidades correspondentes a valores iguais a zero na máscara m(k) seja também igual a zero [Srivastava et al. 2014]. O efeito da aplicação do desligamento em uma rede neural pode ser visualizado na Figura Apresenta-se na imagem à esquerda como seria uma configuração original da rede, e à direita dispõe-se a configuração após o desligamento de algumas unidades. (a) Estágio inicial (b) Estágio final Figura Efeito da aplicação da técnica dropout em uma rede neural. Fonte: [Nielsen 2015] A aplicação dessa técnica requer a definição de um parâmetro relevante, que é a probabilidade p. Ela controla a intensidade de desligamento. Se p = 1 implica que não há desligamento de neurônios, e quanto menor o valor de p, maior a taxa de desligamento. É possível reconhecer na literatura alguns valores adotados pelos pesquisadores. Assume-se p na faixa de 0,5 a 0,8 para as unidades ocultas. Apresenta-se ainda na literatura que o procedimento de desligamento pode ser interpretado como uma forma adaptativa de acréscimo de dados. Assume-se que definir a mudança de ativação de algumas unidades ocultas para 0 (zero) é equivalente a fornecer na entrada da rede um exemplo moldado para produzir ativações iguais a 0 para aquelas unidades, ao mesmo tempo em que se mantém a mesma ativação para todas as demais unidades daquela camada. Considerando que cada exemplo moldado é muito provavelmente diferente do exemplo original correspondente, e que cada máscara diferente corresponde a um exemplo moldado de forma diferente, então é intuitivo concluir que o procedimento de desligamento produz resultado semelhante a aumentar a quantidade de exemplos de treinamento [Bezerra 2016] Normalização em Lote Uma transformação usual durante o treinamento de uma rede neural é normalizar o conjunto de dados de treinamento de acordo com a distribuição normal padrão para evitar problemas de comparação devido às diferentes escalas usadas nos dados. Ocorre que durante a passagem dos exemplos normalizados através das camadas da rede, esses valores são novamente transformados (por meio das pré-ativações e ativações), podendo
11 fazer com que os dados de entrada de algumas camadas ocultas fiquem desnormalizados novamente. Esse problema, conhecido como mudança de covariável interna (internal covariate shift), apresenta maior gravidade quanto mais profunda for a rede a ser treinada. Esse problema aumenta o tempo de treinamento porque implica na definição de uma taxa de aprendizagem pequena, além de propiciar a dissipação dos gradientes [Mnih et al. 2015]. A normalização em lote (do inglês batch normalization) é um mecanismo proposto recentemente para resolver o problema acima, e que consiste em normalizar os dados fornecidos a cada camada oculta. A normalização é aplicada em cada mini-lote, para aumentar a eficiência durante a aplicação da transformação. Um mini-lote (mini-batch) de treinamento é uma amostra aleatória do conjunto de treinamento. Valores comumente escolhidos para o tamanho de um mini-lote estão entre 50 e 256 [Ioffe and Szegedy 2015] Preparando Ambiente para Análise de Imagens A partir do conhecimento básico sobre Aprendizado Profundo definido nas seções anteriores, é possível analisar algumas imagens com frameworks de desenvolvimento disponíveis gratuitamente. Como as arquiteturas de redes profundas são desenvolvidas para bases de dados com grande quantidade de amostras, serão utilizadas neste minicurso algumas bases públicas que permitem o livre acesso a um grande número de imagens para fins de testes e benchmarking. Algumas dessas bases são descritas a seguir. O desenvolvedor que partir para a implementação de uma rede de aprendizado profundo pode utilizar algumas APIs disponibilizadas por importantes empresas do mercado de tecnologia. Google, Facebook e Microsoft já disponibilizaram kits de desenvolvimento para pesquisadores que utilizam esse tipo de algoritmo. Nesta seção há um foco maior na API Java denominada Deeplearning4j Bases de Dados Públicas Para as classes desenvolvidas neste trabalho, são utilizadas as imagens pertencentes a uma mesma base. As imagens pertencem à base MNIST, que é usada como benchmarking para desenvolvimentos de redes de aprendizado profundo e está disponível em Amostras dessa base são mostradas na Figura Essa coleção de imagens se organiza com 10 classes, cada uma contendo imagens de dimensões 28x28 pixels. Para as condições de teste, a base possui imagens. O conjunto de dados CIFAR-10 ( cifar.html) possui imagens coloridas de 32x32 pixels. Esses dados estão divididos em 10 classes, cada uma com 6000 imagens. Assim como a base MNIST, esta também é pública e pode ser utilizada para definição de comparativos entre diferentes métodos. Outras bases de dados públicas estão disponíveis no portal da API Deeplearning4j no endereço: Elas estão organizadas pelo domínio de trabalho avaliado e podem ser trabalhadas com outras técnicas de aprendizagem de máquina, se o custo computacional for viável por conta da quantidade
12 Figura Amostras da base MNIST. Fonte: [Lin et al. 2014] de imagens processadas [Mera-Moya et al. 2016, Sá Júnior and Backes 2016, Souza et al. 2016] API para Desenvolvimento Java Deeplearning4j (ou DL4J) é uma biblioteca para desenvolvimento em aprendizado profundo de código aberto, distribuída, escrita para Java e Scala e com aplicação comercial. DL4J pode ser integrada com Hadoop e Spark, que são bibliotecas para desenvolvimento em Big Data. Inicialmente, ela foi projetada para uso em ambientes de negócios com GPUs e CPUs distribuídas. A empresa Skymind é sua mantenedora e atua com apoio comercial [DL4J 2017]. A DL4J pode importar modelos de redes neurais da maioria dos frameworks através do Keras, incluindo TensorFlow, Caffe, Torch e Theano. Keras atua como API Python de Deeplearning4j. Esse recurso de importação de modelos preenche a lacuna entre a linguagem de programação Python e a JVM (Java Virtual Machine) com um conjunto de ferramentas para cientistas de dados, engenheiros e desenvolvedores. A biblioteca DL4J resume-se em suas características: permite processamento de CPUs e GPUs distribuídas; mantém APIs de Java, Scala e Python; permite arquitetura adaptada para microsserviços; treinamento paralelo via redução iterativa; escalável no Hadoop; suporte em GPU para dimensionamento de escala na Amazon Web Services. Mais detalhes da instalação dessa API para diferentes sistemas operacionais estão disponíveis em Outras bibliotecas associadas à instalação da DL4J são: ND4J [ND4J 2017], que é Numpy (de Python) para a JVM; DataVec, ferramenta para ajuste em base de dados para aprendizagem de máquina; JavaCPP, atua como ponte entre Java e C++ nativo; Arbiter, que permite avaliação de algoritmos de aprendizagem de máquina; e RL4J, com aprendizado profundo por reforço para a JVM.
13 Existem ainda outras ferramentas como TensorFlow, Caffe e Torch que são alternativas para desenvolvimento e dispõem de documentação extensa e uso livre [Kussul et al. 2017, Wang and Cottrell 2015, Bottleson et al. 2016]. Torch é um framework de computação científica com amplo suporte para algoritmos de aprendizagem de máquina para uso prioritário com GPUs 1. A codificação é enxuta porque é baseada na linguagem de script LuaJIT, mas com associação à implementação em C/CUDA. O framework Caffe foi desenvolvido pela Berkeley AI Research (BAIR) e por contribuintes da comunidade para algoritmos em aprendizagem profundo. Yangqing Jia criou o projeto durante seu doutorado em UC Berkeley 2. TensorFlow 3 foi originalmente desenvolvido por pesquisadores e engenheiros que trabalham na Google Brain Team dentro do centro de pesquisa Google s Machine Intelligence para desenvolvimento em aprendizagem de máquinas e pesquisa de redes neurais profundas, mas o sistema pode ser aplicado em outros domínios. Este capítulo terá como foco o desenvolvimento de uma rede autocodificadora profunda e uma rede neural convolucional, ambas com auxílio da API Deeplearning4j. O algoritmo DeepAutoEncoder1.java apresentado na Listing 1.1 corresponde a uma implementação de uma rede autocodificadora profunda sobre a base de dados MNIST. Como essa base é utilizada como benchmarking na literatura, a API disponibiliza uma classe iteradora que já carrega os dados dessa referida coleção de imagens: MnistDataSetInterator, na linha 12. É possível sinalizar na instância dessa classe o tamanho do lote de dados, número de amostras, quantidade de dados para treino/teste, etc. Outra classe importante nessa implementação, e que é adotada por outros programas que também fazem uso dessa API, é a estrutura MultiLayerConfiguration (linha 15). Nela permite-se montar a arquitetura da rede e os detalhes de cada camada que a compõe. Na Listing 1.1, são definidas 10 camadas da rede autocodificada (linhas 20 a 29). Cinco camadas iniciais de codificação, com o número de neurônios decaindo de 1000 para 30, e as cinco camadas finais, com o número de neurônios aumentando de 30 para Todas as camadas ocultas foram definidas através de RBMs com uma função de perda. Como o modelo da rede definido, faz-se o treino da mesma. De forma bem resumida, essa implementação envolve testar as imagens da base MNIST na rede e verificar se a imagem é reconstruída ao fim da mesma. Se essa reconstrução apresenta baixa taxa de erro e se mostra pertencente à classe da imagem de entrada, então a implementação está adequada. 1 public class DeepAutoEncoder1{ 2 3 private static Logger log = LoggerFactory.getLogger( DeepAutoEncoder1.class); 4 5 public static void main(string[] args) throws Exception { 6 final int numrows = 28; final int numcolumns = 28; 7 int seed = 123; 8 int numsamples = MnistDataFetcher.NUM_EXAMPLES; 9 int batchsize = 1000; int iterations = 1; 10 int listenerfreq = iterations/5; 1 Disponível em 2 Disponível em 3
14 11 12 log.info("carregando os dados..."); 13 DataSetIterator iter = new MnistDataSetIterator( batchsize,numsamples,true); log.info("construindo o modelo..."); 16 MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder() 17.seed(seed) 18.iterations(iterations) 19.optimizationAlgo(OptimizationAlgorithm. LINE_GRADIENT_DESCENT) 20.list() 21.layer(0, new RBM.Builder().nIn(numRows * numcolumns).nout(1000).lossfunction( LossFunctions.LossFunction.KL_DIVERGENCE). build()) 22.layer(1, new RBM.Builder().nIn(1000).nOut(500). lossfunction(lossfunctions.lossfunction. KL_DIVERGENCE).build()) 23.layer(2, new RBM.Builder().nIn(500).nOut(250). lossfunction(lossfunctions.lossfunction. KL_DIVERGENCE).build()) 24.layer(3, new RBM.Builder().nIn(250).nOut(100). lossfunction(lossfunctions.lossfunction. KL_DIVERGENCE).build()) 25.layer(4, new RBM.Builder().nIn(100).nOut(30). lossfunction(lossfunctions.lossfunction. KL_DIVERGENCE).build()) // finaliza codificacao 26.layer(5, new RBM.Builder().nIn(30).nOut(100). lossfunction(lossfunctions.lossfunction. KL_DIVERGENCE).build()) // inicia decodificacao 27.layer(6, new RBM.Builder().nIn(100).nOut(250). lossfunction(lossfunctions.lossfunction. KL_DIVERGENCE).build()) 28.layer(7, new RBM.Builder().nIn(250).nOut(500). lossfunction(lossfunctions.lossfunction. KL_DIVERGENCE).build()) 29.layer(8, new RBM.Builder().nIn(500).nOut(1000). lossfunction(lossfunctions.lossfunction. KL_DIVERGENCE).build()) 30.layer(9, new OutputLayer.Builder(LossFunctions. LossFunction.MSE).activation(Activation. SIGMOID).nIn(1000).nOut(numRows*numColumns). build()) 31.pretrain(true).backprop(true) 32.build();
15 33 34 MultiLayerNetwork model = new MultiLayerNetwork(conf); 35 model.init(); model.setlisteners(new ScoreIterationListener( listenerfreq)); log.info("treino do modelo..."); 40 while(iter.hasnext()) { 41 DataSet next = iter.next(); 42 model.fit(new DataSet(next.getFeatureMatrix(),next. getfeaturematrix())); 43 } 44 } 45 } Listing Classe de Rede Autocodificadora O algoritmo LenetTeste.java apresentado na Listing 1.2 corresponde a uma implementação de uma rede neural convolucional também sobre a base de dados MNIST. As classes MnistDataSetInterator e MultiLayerConfiguration também são utilizadas aqui. Nas linhas 25 a 28 há um planejamento de redução de taxa de aprendizado em decorrência do aumento do número de iterações, com o objeto lrschedule. Os pesos são inicialmente ajustados pela metodologia XAVIER, conforme é detalhado em [Enigma 2016]. A rede dispõe de 5 camadas, sendo as de índice 0 e 2 (linhas 41 e 52, respectivamente) correspondentes às camadas de convolução, enquanto que as camadas de índice 1 e 3 (linhas 48 e 58, respectivamente) formam camadas de pooling que agregam os dados. No restante do algoritmo são criadas as camadas finais da rede para classificação dos dados e estabalecidas as definições do treinamento e teste da arquitetura proposta. 1 public class LenetTeste { 2 private static final Logger log = LoggerFactory.getLogger( LenetTeste.class); 3 4 public static void main(string[] args) throws Exception { 5 int nchannels = 1; // Numero de canais de entrada 6 int outputnum = 10; // Numero de possiveis resultados 7 int batchsize = 64; // Tamanho do lote de teste 8 int nepochs = 5; // Numero de epocas de treinamento 9 int iterations = 5; // Numero de iteracoes de treinamento 10 int seed = 123; /* 13 Cria um objeto iterator usando o tamanho de lote para uma iteracao 14 */ 15 log.info("carregando os dados..."); 16 DataSetIterator mnisttrain = new MnistDataSetIterator( batchsize,true,12345);
16 17 DataSetIterator mnisttest = new MnistDataSetIterator( batchsize,false,12345); /* 20 Construir a rede neural 21 */ 22 log.info("construir o modelo..."); // programacao da taxa de aprendizagem na forma de < Iteracao #, Taxa Aprendizagem> 25 Map<Integer, Double> lrschedule = new HashMap<>(); 26 lrschedule.put(0, 0.01); 27 lrschedule.put(1000, 0.005); 28 lrschedule.put(3000, 0.001); MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder() 31.seed(seed) 32.iterations(iterations) // Treinar iteracoes como acima 33.regularization(true).l2(0.0005) 34.learningRate(.01) 35.learningRateDecayPolicy(LearningRatePolicy. Schedule) 36.learningRateSchedule(lrSchedule) 37.weightInit(WeightInit.XAVIER) 38.optimizationAlgo(OptimizationAlgorithm. STOCHASTIC_GRADIENT_DESCENT) 39.updater(Updater.NESTEROVS).momentum(0.9) 40.list() 41.layer(0, new ConvolutionLayer.Builder(5, 5) 42 //nin e nout especificam profundidade. nin eh o numero de canais e nout eh o numero de filtros a serem aplicados 43.nIn(nChannels) 44.stride(1, 1) 45.nOut(20) 46.activation(Activation.IDENTITY) 47.build()) 48.layer(1, new SubsamplingLayer.Builder( SubsamplingLayer.PoolingType.MAX) 49.kernelSize(2,2) 50.stride(2,2) 51.build()) 52.layer(2, new ConvolutionLayer.Builder(5, 5) 53 //Nota-se que nin nao precisa ser especificados nas camadas posteriores 54.stride(1, 1) 55.nOut(50)
17 56.activation(Activation.IDENTITY) 57.build()) 58.layer(3, new SubsamplingLayer.Builder( SubsamplingLayer.PoolingType.MAX) 59.kernelSize(2,2) 60.stride(2,2) 61.build()) 62.layer(4, new DenseLayer.Builder().activation( Activation.RELU) 63.nOut(500).build()) 64.layer(5, new OutputLayer.Builder(LossFunctions. LossFunction.NEGATIVELOGLIKELIHOOD) 65.nOut(outputNum) 66.activation(Activation.SOFTMAX) 67.build()) 68.setInputType(InputType.convolutionalFlat (28,28,1)) 69.backprop(true).pretrain(false).build(); MultiLayerNetwork model = new MultiLayerNetwork(conf); 72 model.init(); log.info("treinar o modelo..."); 76 model.setlisteners(new ScoreIterationListener(1)); 77 for( int i=0; i<nepochs; i++ ) { 78 model.fit(mnisttrain); 79 log.info("*** Epoca completa {} ***", i); log.info("avaliar o modelo..."); 82 Evaluation eval = new Evaluation(outputNum); 83 while(mnisttest.hasnext()){ 84 DataSet ds = mnisttest.next(); 85 INDArray output = model.output(ds. getfeaturematrix(), false); 86 eval.eval(ds.getlabels(), output); } 89 log.info(eval.stats()); 90 mnisttest.reset(); 91 } 92 log.info("*****exemplo encerrado*****"); 93 } 94 } Listing Classe de Rede Convolucional (LeNet). O código-fonte disposto na Listing 1.2 permite alcançar o resultado apresentado na Tabela O bom desempenho da rede pode ser descrito por algumas medidas de
18 avaliação fundamentadas na literatura de aprendizagem de máquina. A acurácia indica a taxa de acerto global, ou seja, proporção de predições corretas em relação ao tamanho do conjunto de dados. A precisão envolve a porcentagem de padrões classificados como pertencentes à classe atual e que realmente pertencem à classe positiva. Por sua vez, a revocação apresenta a proporção de padrões da classe atual identificada corretamente. A revocação também indica quão bom o classificador é para identificar a classe positiva. Finalmente, a medida F1 Score (também conhecida por F-Measure) traz uma média harmônica entre precisão e revocação. Tabela Resultados alcançados pelo algoritmo da Listing 1.2. Acurácia Precisão Revocação F1 Score 0,9908 0,9908 0,9907 0, Considerações Finais Uma estratégia de explorar ainda mais as técnicas de aprendizagem profunda é abordar a eficiência computacional do processo de treinamento. Mesmo que a aplicação de técnicas de paralelismo para agilizar o processamento, tais como o uso de unidades gráficas de processamento (graphics processing units, GPU), não seja uma estratégia recente, o crescente tamanho dos conjuntos de treinamento e a grande quantidade de parâmetros envolvidos no treinamento de arquiteturas profundas trouxeram a necessidade do uso desse recurso. Nota-se como forte tendência o uso de bibliotecas especializadas que realizem, com eficiência e menor custo computacional, operações comuns em aprendizagem profunda e que tirem proveito de hardware para paralelismo. As APIs Deepleaning4j e ND4J permitem trabalhar tanto com CPU quanto com GPU, e podem integrar linguagens de programação distintas de Java. Outra abordagem que poderia ser adotada neste trabalho é a Aprendizagem Profunda por Reforço (Deep Reinforcement Learning). Essa linha de pesquisa permitiu avanços na navegação de robôs em decorrência de visão computacional [Duryea et al. 2017]. Também permite desenvolver agentes inteligentes que podem ser treinados para realizar diversas tarefas complexas, como aprender um jogo e vender um oponente humano, ou a resolução aprender e vencer em um jogo contra um humano ou resolução de jogos eletrônicos [Glatt et al. 2016]. Redes profundas como as convolucionais e as recorrentes existem há vários anos. Entretanto, apenas recentemente modelos construídos com essas arquiteturas de redes começaram a apresentar impacto na comunidade científica. Isso se deve a vários fatores. Inicialmente, é cada vez maior a disponibilidade de bases de dados suficientemente grandes para treinamento dessas redes. Outro fator importante é a disponibilidade de poder computacional para manipular essa grande quantidade de dados. Por fim, o avanço das pesquisas sobre técnicas eficientes para suavizar o problema do sobreajuste tem proporcionado aprimoramento dos métodos de treinamento de arquiteturas profundas. Para assegurar os avanços nessa linha de pesquisa, é importante aumentar a compreensão das representações que são aprendidas pelas camadas internas dessas arquiteturas profundas. Destaca-se a relevância que a comunidade deve assumir na pesquisa de
19 melhores técnicas para aliviar o sobreajuste, mas que também analisem as interdependências entres essas técnicas. Algumas das técnicas atualmente existentes eliminam a necessidade de usar outras, assim como há técnicas que fornecem resultados melhores quando aplicadas em conjunto. Ainda não há consenso no entendimento da interação entre os diversos procedimentos de treinamento. Também são necessárias mais investigações em que se avalia o comportamento de métodos de otimização em espaços de busca de grandes dimensionalidades. Um desafio ainda pertinente na pesquisa em aprendizagem profunda, assim como em aprendizagem de máquina, é projetar algoritmos que possam treinar sistemas com poucos dados e, principalmente, aproveitar de forma eficiente o uso de dados não supervisionados. A técnica de pré-treinamento não supervisionado define um caso de uso de dados não supervisionados. Essa mesma técnica permitiu que a pesquisa em aprendizagem profunda crescesse ainda mais a partir de meados de 2006 [Hinton et al. 2006, Hinton et al. 2012]. Mesmo com esse avanço, os problemas têm se concentrado em trabalhos com dados supervisionados, que apresentaram maior disponibilidade desde esse período. E ainda, as abordagens supervisionadas alcançam bom desempenho na presença de uma grande quantidade de dados dessa natureza. Referências [Bengio 2009] Bengio, Y. (2009). Learning Deep Architectures for AI. Foundations and Trends in Machine Learning, 2(1): [Bezerra 2016] Bezerra, E. (2016). Introdução à Aprendizagem Profunda, chapter 3, pages SBC, Salvador, BA, 1 edition. [Bottleson et al. 2016] Bottleson, J., Kim, S., Andrews, J., Bindu, P., Murthy, D. N., and Jin, J. (2016). clcaffe: OpenCL accelerated Caffe for convolutional neural networks. In Proceedings of the 2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), pages [Chung et al. 2015] Chung, J., Gulcehre, C., Cho, K., and Bengio, Y. (2015). Gated feedback recurrent neural networks. In Proceedings of the 32nd International Conference on International Conference on Machine Learning, volume 37 of ICML 15, pages [Dean et al. 2012] Dean, J., Corrado, G. S., Monga, R., Chen, K., Devin, M., Le, Q. V., Mao, M. Z., Ranzato, M., Senior, A., Tucker, P., Yang, K., and Ng, A. Y. (2012). Large scale distributed deep networks. In Proceedings of the 25th International Conference on Neural Information Processing Systems, NIPS 12, pages [Devarakonda and Tsou 2015] Devarakonda, M. and Tsou, C.-H. (2015). Automated problem list generation from electronic medical records in IBM Watson. In Proceedings of the Twenty-Ninth AAAI Conference on Artificial Intelligence, AAAI 15, pages AAAI Press. [DL4J 2017] DL4J, S. (2017). Deeplearning4j: Open-source distributed deep learning for the JVM. Disponível em: Acessado em 17/05/2017.
20 [Duryea et al. 2017] Duryea, E., Ganger, M., and Hu, W. (2017). Exploring deep reinforcement learning with multi Q-Learning. Intelligent Control and Automation, 7: [Enigma 2016] Enigma, P. (2016). Understanding Xavier initialization in Deep Neural Networks. Disponível em: understanding-xavier-initialization-in-deep-neural-networks/. Acessado em 18/05/2017. [Glatt et al. 2016] Glatt, R., Silva, F. L., and Costa, A. H. R. (2016). Towards knowledge transfer in deep reinforcement learning. In Proceedings of the th Brazilian Conference on Intelligent Systems (BRACIS), pages [Glorot et al. 2011] Glorot, X., Bordes, A., and Bengio, Y. (2011). Deep sparse rectifier neural networks. In Proceedings of the 14th International Conference on Artificial Intelligence and Statistics (AISTATS), volume 15, pages [Goodfellow et al. 2016] Goodfellow, I., Bengio, Y., and Courville, A. (2016). Learning. MIT Press. Deep [Hinton et al. 2012] Hinton, G., Deng, L., Yu, D., Dahl, G. E., Mohamed, A.-r., Jaitly, N., Senior, A., Vanhoucke, V., Nguyen, P., Sainath, T. N., and Kingsbury, B. (2012). Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups. IEEE Signal Processing Magazine, 29(6): [Hinton et al. 2006] Hinton, G. E., Osindero, S., and Teh, Y.-W. (2006). A fast learning algorithm for deep belief nets. Neural Computation, 18(7): [Hochreiter et al. 2001] Hochreiter, S., Bengio, Y., and Frasconi, P. (2001). Gradient flow in recurrent nets: the difficulty of learning long-term dependencies. In Kolen, J. and Kremer, S., editors, Field Guide to Dynamical Recurrent Networks. IEEE Press. [Ioffe and Szegedy 2015] Ioffe, S. and Szegedy, C. (2015). Batch Normalization: Accelerating deep network training by reducing internal covariate shift. In Bach, F. R. and Blei, D. M., editors, Proceedings of the 32nd International Conference on Machine Learning (ICML-15), volume 37, pages [Krizhevsky et al. 2012] Krizhevsky, A., Sutskever, I., and Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. In Proceedings of the 25th International Conference on Neural Information Processing Systems, pages , EUA. [Kussul et al. 2017] Kussul, N., Lavreniuk, M., Skakun, S., and Shelestov, A. (2017). Deep learning classification of land cover and crop types using remote sensing data. IEEE Geoscience and Remote Sensing Letters, 14(5): [Lange and Riedmiller 2010] Lange, S. and Riedmiller, M. (2010). Deep auto-encoder neural networks in reinforcement learning. In Proceedings of the 2010 International Joint Conference on Neural Networks (IJCNN), pages 1 8.
21 [LeCun et al. 2015] LeCun, Y., Bengio, Y., and Hinton, G. (2015). Deep learning. Nature, 521(7553): [Lecun et al. 1998] Lecun, Y., Bottou, L., Bengio, Y., and Haffner, P. (1998). Gradientbased learning applied to document recognition. Proceedings of the IEEE, 86(11): [LeCun et al. 2010] LeCun, Y., Kavukcuoglu, K., and Farabet, C. (2010). Convolutional networks and applications in vision. In Proceedings of 2010 IEEE International Symposium on Circuits and Systems, pages [Lin et al. 2014] Lin, M., Chen, Q., and Yan, S. (2014). Network in network. In Proceedings of the International Conference on Learning Representation 2014, volume 1, pages [Lipton et al. 2015] Lipton, Z. C., Berkowitz, J., and Elkan, C. (2015). A critical review of recurrent neural networks for sequence learning. CoRR, abs/ [Liu et al. 2017] Liu, C., Cao, Y., Luo, Y., Chen, G., Vokkarane, V., Ma, Y., Chen, S., and Hou, P. (2017). A new deep learning-based food recognition system for dietary assessment on an edge computing service infrastructure. IEEE Transactions on Services Computing, PP(99):1 13. [Mera-Moya et al. 2016] Mera-Moya, V., Lima, F. D. S., Paula Júnior, I. C., Fajardo, J. I., and Sá, Jr., J. J. M. (2016). Identificação metalográfica dos aços através de descritores de textura e elm. In Proceedings of the 2016 Symposium on Knowledge Discovery, Mining and Learning, pages [Mnih et al. 2015] Mnih, V., Kavukcuoglu, K., Silver, D., Rusu, A. A., Veness, J., Bellemare, M. G., Graves, A., Riedmiller, M., Fidjeland, A. K., Ostrovski, G., Petersen, S., Beattie, C., Sadik, A., Antonoglou, I., King, H., Kumaran, D., Wierstra, D., Legg, S., and Hassabis, D. (2015). Human-level control through deep reinforcement learning. Nature, 518(7540): [Mohamed et al. 2009] Mohamed, A.-r., Dahl, G., and Hinton, G. (2009). Deep belief networks for phone recognition. NIPS Workshop on Deep Learning for Speech Recognition and Related Applications. [Moujahid 2016] Moujahid, A. (2016). A practical introduction to deep learning with Caffe and Python. Disponível em: /06/introduction-deep-learning-python-caffe/. Acessado em 21/05/2017. [Nair and Hinton 2010] Nair, V. and Hinton, G. E. (2010). Rectified Linear Units improve Restricted Boltzmann Machines. In Proceedings of the 27th International Conference on Machine Learning (ICML-10), pages Omnipress. [Nanduri and Sherry 2016] Nanduri, A. and Sherry, L. (2016). Anomaly detection in aircraft data using Recurrent Neural Networks (RNN). In Proceedings of 2016 Integrated Communications Navigation and Surveillance (ICNS), pages 5C2 1 5C2 8.
22 [ND4J 2017] ND4J, S. (2017). ND4J: N-dimensional arrays and scientific computing for the JVM. Disponível em: Acessado em 16/05/2017. [Nielsen 2015] Nielsen, M. (2015). Neural Networks and Deep Learning. Determination Press. [Pang et al. 2017] Pang, Y., Sun, M., Jiang, X., and Li, X. (2017). Convolution in convolution for network in network. IEEE Transactions on Neural Networks and Learning Systems, PP(99):1 11. [Schmidhuber 2015] Schmidhuber, J. (2015). overview. Neural Networks, 61: Deep learning in neural networks: An [Silver et al. 2016] Silver, D., Huang, A., Maddison, C. J., Guez, A., Sifre, L., van den Driessche, G., Schrittwieser, J., Antonoglou, I., Panneershelvam, V., Lanctot, M., Dieleman, S., Grewe, D., Nham, J., Kalchbrenner, N., Sutskever, I., Lillicrap, T., Leach, M., Kavukcuoglu, K., Graepel, T., and Hassabis, D. (2016). Mastering the game of Go with deep neural networks and tree search. Nature, 529: [Souza et al. 2016] Souza, M. M. S., Medeiros, F. N. S., Ramalho, G. L. B., Paula, Jr., I. C., and Oliveira, I. N. S. (2016). Evolutionary optimization of a multiscale descriptor for leaf shape analysis. Expert Systems with Applications, 63: [Srivastava et al. 2014] Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., and Salakhutdinov, R. (2014). Dropout: A simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research, 15(1): [Szegedy et al. 2015] Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S., Anguelov, D., Erhan, D., Vanhoucke, V., and Rabinovich, A. (2015). Going deeper with convolutions. In Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 1 9. [Sá Júnior and Backes 2016] Sá Júnior, J. J. M. and Backes, A. R. (2016). ELM based signature for texture classification. Pattern Recognition, 51: [Vargas et al. 2016] Vargas, A. C. G., Paes, A., and Vasconcelos, C. N. (2016). Um estudo sobre redes neurais convolucionais e sua aplicação em detecção de pedestres. In Proceedings of the XXIX Conference on Graphics, Patterns and Images, pages 1 4. Sociedade Brasileira de Computação. [Wang and Cottrell 2015] Wang, Y. and Cottrell, G. W. (2015). Bikers are like tobacco shops, formal dressers are like suits: Recognizing urban tribes with Caffe. In Proceedings of the 2015 IEEE Winter Conference on Applications of Computer Vision, pages [Yang et al. 2015] Yang, S., Luo, P., Loy, C.-C., and Tang, X. (2015). From facial parts responses to face detection: A deep learning approach. In Proceedings of 2015 IEEE International Conference on Computer Vision (ICCV), pages
Redes Neurais Convolucionais
André Gustavo Hochuli Orientadores: Dr. Luiz E. S. Oliveira/Dr. Alceu Britto Programa de Pós-Graduação em Informática Departamento de Informática UFPR Neurônio Artificial Redes Neurais - Vetor de Caracteristícas
Redes Neurais Convolucionais
André Gustavo Hochuli Orientador: Prof. Dr. Luiz Eduardo Soares de Oliveira Programa de Pós-Graduação em Informática Departamento de Informática UFPR http://www.inf.ufpr.br/aghochuli/caffe/ Redes Neurais
2. Redes Neurais Artificiais
Computação Bioinspirada - 5955010-1 2. Redes Neurais Artificiais Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 2.6. Deep Learning 2.6.1. O Problema da Extração de Características
Redes Neurais Artificiais
Redes Neurais Artificiais Fabrício Olivetti de França Universidade Federal do ABC Tópicos 1. Redes Neurais Biológicas 2. Neurônio Artificial 3. Rede Neural Artificial 4. Keras 1 Redes Neurais Biológicas
Inteligência Artificial
Universidade Federal de Campina Grande Departamento de Sistemas e Computação Pós-Graduação em Ciência da Computação Inteligência Artificial Aprendizagem (Redes Neurais - Complementar) Prof. a Joseana Macêdo
GoogLeNet - Going Deeper with Convolutions
- Going Deeper with Convolutions Heyde Francielle do Carmo França Prof. Dr. Anderson Soares Instituto de Informática Universidade Federal de Goiás 02 de Dezembro de 2016 1 / 35 Sumário I 1 2 3 2 / 35 3
SEMINÁRIO DOS ARTIGOS:
SEMINÁRIO DOS ARTIGOS: Text Detection and Character Recognition in Scene Images with Unsupervised Feature Learning End-to-End Text Recognition with Convolutional Neural Networks Fernanda Maria Sirlene
3 Redes Neurais Artificiais
3 Redes Neurais Artificiais 3.1. Introdução A capacidade de implementar computacionalmente versões simplificadas de neurônios biológicos deu origem a uma subespecialidade da inteligência artificial, conhecida
JAI 6 - Deep Learning Teoria e Prática
JAI 6 - Deep Learning Teoria e Prática Esteban Clua e Cristina Nader Vasconcelos Universidade Federal Fluminense Fundamentos Computação baseada em modelos [email protected] 2 Computação baseada em aprendizado
Redes Neurais Artificial. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto
Redes Neurais Artificial Inteligência Artificial Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Definições 2. Histórico 3. Conceitos Básicos 4. Aprendizado em RNA 5. Exemplo de Aprendizado com
RECONHECIMENTO DE CARACTERES EM IMAGENS COM RUÍDO
RECONHECIMENTO DE CARACTERES EM IMAGENS COM RUÍDO Fernanda Maria Sirlene Pio SUMARIO Introdução Trabalhos Relacionados Metodologia Experimentos Conclusão Referências 2 INTRODUÇÃO Reconhecimento de Padrões
Uma Abordagem Genética Para Redes Neurais Convolucionais
Uma Abordagem Genética Para Redes Neurais Convolucionais Roberto M. Pinheiro Pereira 1, Lucas Bezerra Maia 1, Polyana Bezerra Da Costa 1, Jordan Boaz Rodrigues 1, Geraldo Braz Junior 1 João D. S. De Almeida,
READING DIGITS IN NATURAL IMAGES WITH UNSUPERVISED FEATURE LEARNING
READING DIGITS IN NATURAL IMAGES WITH UNSUPERVISED FEATURE LEARNING Fernanda Maria Sirlene READING DIGITS IN NATURAL IMAGES WITH UNSUPERVISED FEATURE LEARNING NIPS Workshop on Deep Learning and Unsupervised
Roberto Lotufo Big Data Brasil São Paulo, 23 de junho de 2018
Roberto Lotufo [email protected] Big Data Brasil São Paulo, 23 de junho de 2018 Classificação dedo falso/dedo vivo Desempenho atual: 200ms Intel I5 99% acurácia LivDet 2015 - Fingerprint Liveness Competition
Classificação de Padrões. Abordagem prática com Redes Neurais Artificiais
Classificação de Padrões Abordagem prática com Redes Neurais Artificiais Agenda Parte I - Introdução ao aprendizado de máquina Parte II - Teoria RNA Parte III - Prática RNA Parte IV - Lições aprendidas
Aprendizado de Máquinas. Multi-Layer Perceptron (MLP)
Universidade Federal do Paraná (UFPR) Departamento de Informática (DInf) Aprendizado de Máquinas Multi-Layer Perceptron (MLP) David Menotti, Ph.D. web.inf.ufpr.br/menotti Redes Neuronais Cérebro humano.
Aprendizagem de Máquina
Aprendizagem de Máquina Alessandro L. Koerich Programa de Pós-Graduação em Informática Pontifícia Universidade Católica do Paraná (PUCPR) Horários Aulas Sala 3 CCET [quinta-feira, 8:20 12:00] Atendimento
Tópicos Especiais: Inteligência Artificial REDES NEURAIS
Tópicos Especiais: Inteligência Artificial REDES NEURAIS Material baseado e adaptado do Cap. 20 do Livro Inteligência Artificial de Russell & Norvig Bibliografia Inteligência Artificial Russell & Norvig
IA - TensorFlow. Paulo Cotta
IA - TensorFlow Paulo Cotta Jabá Sou voluntário do GDG Trabalho na Stefanini como Engineer ML e DL Tenho à Startup Koffee More Gosto de repassar conhecimento Faço parte do Candangos do Cerrado IA Professor
Redes Neurais Artificial. Prática. Inteligência Artificial
Redes Neurais Artificial Prática Inteligência Artificial Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Introdução a MLP 2. Base de dados e Pré-Processamento 3. Prática MLP - Introdução Redes
Reconhecimento de Modelos de Veículos
Reconhecimento de Modelos de Veículos Fernando Benedito Veras Magalhães January 15, 2018 1 Introdução Em 2017, 2,1 milhões de automóveis, incluindo picapes e furgões, foram vendidos no Brasil. A variedade
Redes Neurais MLP: Exemplos e Características
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Redes Neurais MLP: Exemplos e Características DCA0121 Inteligência Artificial Aplicada Heitor Medeiros 1
TÓPICOS EM INTELIGÊNCIA ARTIFICIAL Redes Neurais Artificiais
TÓPICOS EM INTELIGÊNCIA ARTIFICIAL Redes Neurais Artificiais [email protected] http://professor.luzerna.ifc.edu.br/ricardo-kerschbaumer/ Introdução O Cérebro humano Mais fascinante processador
VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION - VGG
Exemplo de Implementação - 16 VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION - VGG Edjalma Queiroz da Silva Programa de pós-graduação em Ciências da Computação Mestrado e Doutorado
Redes Neurais Artificiais
Redes Neurais Artificiais Marcelo K. Albertini 24 de Julho de 2014 2/34 Conteúdo Perceptron Gradiente descendente Redes multicamadas Retropropagação de erros 3/34 Modelos conexionistas Humanos Tempo de
Previsão de Vazões utilizando Redes Neurais Artificiais MLP e NSRBN
Previsão de Vazões utilizando Redes Neurais Artificiais MLP e NSRBN Alan Caio Rodrigues MARQUES 1, Gelson da Cruz JUNIOR 2, Cassio Dener Noronha VINHAL 3 Escola de Engenharia Elétrica e de Computação 1
Tópicos Especiais: Inteligência Artificial. Deep Learning
Tópicos Especiais: Inteligência Artificial Deep Learning Bibliografia Inteligência Artificial Russell & Norvig Site: http://aima.cs.berkeley.edu Inteligência Artificial, Ben Coppin. Online Course: Zero
Reconhecimento de Faces Utilizando Redes Neurais MLP
Reconhecimento de Faces Utilizando Redes Neurais MLP Autor: Adilmar Coelho Dantas 1, Orientador: Márcia Aparecida Fernandes 1 1 Programa de Pós-Graduação em Ciência da Computação Universidade Federal do
Neural Networks. Neurônios: Elementos aritméticos simples. Redes Neuronais: conj de neurônios interligados.
Neural Networks Neural Networks Do ponto de vista computacional: métodos para representar funções usando redes de elementos aritméticos simples, e aprender tais representações através de exemplos. Do ponto
Inteligência Artificial Redes Neurais
Inteligência Artificial Jarley P. Nóbrega, Dr. Faculdade Nova Roma Bacharelado em Ciência da Computação [email protected] Semestre 2018.2 Jarley P. Nóbrega, Dr. (Nova Roma) Inteligência Artificial Semestre
Aprendizagem de Máquina
Aprendizagem de Máquina Apresentação da Disciplina Alessandro L. Koerich 2008 Mestrado e Doutorado em Informática Pontifícia Universidade Católica do Paraná (PUCPR) Mestrado/Doutorado em Informática Aprendizagem
Redes Neurais Artificiais - Introdução. Visão Computacional
Redes Neurais Artificiais - Introdução Visão Computacional Inspiração 2 Inspiração 3 Inspiração Atividade seletivanas conexões Soma os impulsos e passa a diante 4 Inspiração As conexões entre os dendritos
Multiple Layer Perceptron
Universidade Federal do Paraná (UFPR) Bacharelado em Informática Biomédica Multiple Layer Perceptron David Menotti www.inf.ufpr.br/menotti/ci171-182 Hoje Multiple Layer Perceptron (MLP) Backpropagation
Rede RBF (Radial Basis Function)
Rede RBF (Radial Basis Function) André Tavares da Silva [email protected] Roteiro Introdução à rede neural artificial RBF Teorema de Cover da separabilidade de padrões RBF x MLP RBF Função de ativação
RECONHECIMENTO DE GÊNERO ATRAVÉS DA VOZ
RECONHECIMENTO DE GÊNERO ATRAVÉS DA VOZ Marcela Ribeiro Carvalho [email protected] IFG/Câmpus Goiânia Hipólito Barbosa Machado Filho [email protected] IFG/Câmpus Goiânia Programa Institucional
INTRODUÇÃO À APRENDIZAGEM PROFUNDA. Eduardo Bezerra (CEFET/RJ)
INTRODUÇÃO À APRENDIZAGEM PROFUNDA Eduardo Bezerra (CEFET/RJ) [email protected] Sobre mim 2 Professor do CEFET/RJ (Rio de Janeiro) desde 2005. Docente permanente no recém-criado Programa de Pós-Graduação
INTELIGÊNCIA ARTIFICIAL
INTELIGÊNCIA ARTIFICIAL REDES NEURAIS Caracterização Intuitiva: Em termos intuitivos, Redes Neurais Artificiais (RNAs) são modelos matemáticos inspirados nos princípios de funcionamento dos neurônios biológicos
Deep Learning para Classificação de Imagens
Deep Learning para Classificação de Imagens Vinicius Eiji Martins 1, Sylvio Barbon Junior 1 1 Departamento de Computação Universidade Estadual de Londrina (UEL) Caixa Postal 10.011 CEP 86057-970 Londrina
UNIVERSIDADE DO ESTADO DE MATO GROSSO - UNEMAT. Faculdade de Ciências Exatas e Tecnológicas FACET / Sinop Curso de Bacharelado em Engenharia Elétrica
REDES DE FUNÇÃO DE BASE RADIAL - RBF Prof. Dr. André A. P. Biscaro 1º Semestre de 2017 Funções de Base Global Funções de Base Global são usadas pelas redes BP. Estas funções são definidas como funções
Minicurso: Inteligência Artificial Aplicada a Sistemas Elétricos
Minicurso: Inteligência Artificial Aplicada a Sistemas Elétricos Introdução a Machine Learning: Teoria, Aplicações e IA na Arquitetura Intel Vitor Hugo Ferreira, DSc - UFF Flávio Mello, DSc UFRJ e Ai2Biz
A evolução natural deu ao cérebro humano muitas características desejáveis que não estão presentes na máquina de von Neumann:
Faculdade de Engenharia de Computação Centro de Ciências Exatas, Ambientais e de Tecnologias PUC-Campinas João Luís Garcia Rosa 2004 2 A evolução natural deu ao cérebro humano muitas características desejáveis
Region Based CNNs. Francisco Calaça Xavier. Programa de pós-graduação em Ciências da Computação Mestrado e Doutorado. Instituto de Informática UFG
Region Based CNNs Francisco Calaça Xavier Programa de pós-graduação em Ciências da Computação Mestrado e Doutorado Instituto de Informática UFG Prof. Anderson Soares Agenda O problema Estado da arte R-CNN
Classificação Hierárquica Multirrótulo Utilizando Redes Neurais Artificiais
Classificação Hierárquica Multirrótulo Utilizando Redes Neurais Artificiais Ricardo Cerri Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo [email protected] Roteiro Introdução
IN Redes Neurais
IN0997 - Redes Neurais Aluizio Fausto Ribeiro Araújo Universidade Federal de Pernambuco Centro de Informática - CIn Departamento de Sistemas da Computação [email protected] Conteúdo Objetivos Quem usa
Introdução às Redes Neurais Artificiais
Introdução às Redes Neurais Artificiais Perceptrons de Múltiplas Camadas I Prof. João Marcos Meirelles da Silva www.professores.uff.br/jmarcos Departamento de Engenharia de Telecomunicações Escola de Engenharia
2. Redes Neurais Artificiais
Computação Bioinspirada - 5955010-1 2. Redes Neurais Artificiais Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 2.3. Perceptron Multicamadas - MLP 2.3.1. Introdução ao MLP 2.3.2. Treinamento
UNIVERSIDADE DO ESTADO DE MATO GROSSO - UNEMAT. Faculdade de Ciências Exatas e Tecnológicas FACET / Sinop Curso de Bacharelado em Engenharia Elétrica
REDES NEURAIS ARTIFICIAIS AULA 03 Prof. Dr. André A. P. Biscaro 1º Semestre de 2017 INTRODUÇÃO Aprendizagem é um processo pelo qual os parâmetros livres de uma rede neural são adaptados através de um processo
INF 1771 Inteligência Artificial
INF 1771 Inteligência Artificial Aula 14 Support Vector Machines (SVM) 2016.1 Prof. Augusto Baffa Formas de Aprendizado Aprendizado Supervisionado Árvores de Decisão. K-Nearest
Workshop de Inteligência Artificial e Redes Neurais
Workshop de Inteligência Artificial e Redes Neurais Matheus Facure Alves Sumário 1 Introdução 2 Aprendizado de Máquina Essencial 3 Deep Learning 4 Código 5 Considerações Finais Desmistificando Aprendizado
CUDA: Compute Unified Device Architecture. Marco Antonio Simões Teixeira
CUDA: Compute Unified Device Architecture Marco Antonio Simões Teixeira Sumário Introdução; CUDA: História; CUDA: programando; CUDA e deep learning; Links úteis; Considerações finais. 2 INTRODUÇÃO 3 O
3 Aprendizado por reforço
3 Aprendizado por reforço Aprendizado por reforço é um ramo estudado em estatística, psicologia, neurociência e ciência da computação. Atraiu o interesse de pesquisadores ligados a aprendizado de máquina
introdução ao deep learning
introdução ao deep learning Jeferson de Souza Santos SERFA 2016 IEAv / EGI-S introdução Introdução - Aplicações de Machine Learning - Redes Profundas Figure: Fontes: techli.com; wccftech.com; updateordie.net;
Introdução à Redes Neurais. Prof. Matheus Giovanni Pires EXA 868 Inteligência Artificial Não-Simbólica B Universidade Estadual de Feira de Santana
Introdução à Redes Neurais Artificiais Prof. Matheus Giovanni Pires EXA 868 Inteligência Artificial Não-Simbólica B Universidade Estadual de Feira de Santana 2 Introdução Redes Neurais Artificiais (RNAs)
Aprendizado de Máquina. Combinando Classificadores
Universidade Federal do Paraná (UFPR) Departamento de Informática (DInf) Aprendizado de Máquina Combinando Classificadores David Menotti, Ph.D. web.inf.ufpr.br/menotti Introdução O uso de vários classificadores
Classificação de espécies de peixe utilizando redes neurais convolucional
Classificação de espécies de peixe utilizando redes neurais convolucional Andre G. C. Pacheco a,1 a Programa de Pós-Graduação em Informática (PPGI), Universidade Federal do Espírito Santo (UFES), Vitória
Redes Neurais: MLP. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Redes Neurais: MLP DCA0121 Inteligência Artificial Aplicada Heitor Medeiros 1 Tópicos Redes diretas de múltiplas
Multi-Layer. Perceptrons. Algoritmos de Aprendizado. Perceptrons. Perceptrons
Algoritmos de Aprendizado Regra de Hebb Perceptron Delta Rule (Least Mean Square) Back Propagation Multi-Layer Perceptrons Redes de apenas uma camada só representam funções linearmente separáveis Redes
Diego Martin Mancini Orientador: Prof. Paulo A. V. de Miranda Instituto de Matemática e Estatística Universidade de São Paulo
Estudo de comparação do descritor de imagens coloridas BIC empregando diferentes abordagens de classificação de detecção de bordas: Canny e Operador Laplaciano Diego Martin Mancini Orientador: Prof. Paulo
Classificação Linear. André Tavares da Silva.
Classificação Linear André Tavares da Silva [email protected] Roteiro Introduzir os o conceito de classificação linear. LDA (Linear Discriminant Analysis) Funções Discriminantes Lineares Perceptron
Reconhecimento de Sinais de Trânsito Utilizando Deep Learning
Reconhecimento de Sinais de Trânsito Utilizando Deep Learning Marcos Vinícius Oliveira Sobrinho 1, Matheus Chaves Menezes 1, Chrystian Gustavo Martins Nascimento 1, Geraldo Braz Júnior 2 1 Curso de Ciência
JAI 6 - Deep Learning Teoria e Prática
JAI 6 - Deep Learning Teoria e Prática Cristina Nader Vasconcelos Universidade Federal Fluminense CNNs Câmeras estão por toda parte! [email protected] Aquisição de imagens digitais [email protected] 3 Representação
Unidade 08 MATLAB Neural Network Toolkit
Unidade 08 MATLAB Neural Network Toolkit 1. Introdução Uma rede neural artificial (NN daqui em diante) é um modelo matemático que consiste de neurônios interconectados que imitam, em uma escala menor,
Deep Learning. Taiane Ramos
Deep Learning Taiane Ramos - 6426955 São Paulo, 28 de junho de 2015 Sumário Sumário Introdução O que é Deep Learning? Por que usar HPC para Deep Learning? Qual abordagem de HPC utilizar? Aplicações de
REDES NEURAIS ARTIFICIAIS
REDES NEURAIS ARTIFICIAIS REDES NEURAIS ARTIFICIAIS O QUE É UMA REDE NEURAL NEURÔNIOS BIOLÓGICOS CÉREBRO HUMANO E CAPACIDADE DE GENERALIZAÇÃO. Modelo McCulloch e Pitts FUNÇÕES DE ATIVAÇÃO APRENDIZADO APRENDIZADO
Paradigmas de Aprendizagem
Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Paradigmas de Aprendizagem Redes Neurais Artificiais Site: http://jeiks.net E-mail: [email protected]
Introdução à Aprendizagem Profunda
Capítulo 3 Introdução à Aprendizagem Profunda Eduardo Bezerra (CEFET/RJ) Abstract Deep Learning is a subfield of Machine Learning investigating techniques to simulate the behavior of the human brain in
Previsão de consumos a curto prazo
Previsão de consumos a curto prazo Cláudio Monteiro Distribuição de Energia II 5º ano da LEEC - ramo de Energia (FEUP) O que são? são técnicas computacionais que apresentam um modelo matemático inspirado
UNIVERSIDADE DO ESTADO DE MATO GROSSO - UNEMAT. Faculdade de Ciências Exatas e Tecnológicas FACET / Sinop Curso de Bacharelado em Engenharia Elétrica
REDES NEURAIS ARTIFICIAIS MÁQUINA DE VETOR DE SUPORTE (SUPPORT VECTOR MACHINES) Prof. Dr. André A. P. Biscaro 1º Semestre de 2017 Introdução Poderosa metodologia para resolver problemas de aprendizagem
3 REDES CLÁSSICAS PERCEPTRON E ADALINE
w b Professor José Gomes de Carvalho Jr. 3 REDES CLÁSSICAS PERCEPTRON E ADALINE 3.-Redes com funções de ativação de limiar Uma rede simples de uma camada, consiste em um ou mais neurônios de saída j conectados
5 Estudo de Caso e Resultados
5 Estudo de Caso e Resultados 5.1. Introdução Finalizado o desenvolvimento da ferramenta, é indispensável testar suas funcionalidades e a eficácia da aplicação conjunta dos seus módulos de geração de experimentos
Descritores de Imagens
Descritores de Imagens André Tavares da Silva PPGCA/UDESC Outubro de 2017 André Tavares da Silva (PPGCA/UDESC) Descritores de Imagens Outubro de 2017 1 / 18 Descritores Locais e Frameworks SIFT SURF Viola-Jones
Aprendizado de Máquina Introdução às Redes Neurais Artificiais
Aprendizado de Máquina Introdução às Redes Neurais Artificiais Marcos Oliveira Prates (Agradecimento Marcelo Azevedo Costa) Departamento de Estatística Universidade Federal de Minas Gerais Inteligência
CEFET/RJ. Aprendizado de Máquina - Trabalho 01
CEFET/RJ Programa de Pós-graduação em Ciência da Computação Aprendizado de Máquina - Trabalho 01 Prof. Eduardo Bezerra ([email protected]) Setembro/2017 Conteúdo 1 Regressão Linear com uma Variável
Multi-Layer. Perceptrons. Algoritmos de Aprendizado. Perceptrons. Perceptrons
Algoritmos de Aprendizado Regra de Hebb Perceptron Delta Rule (Least Mean Square) Multi-Layer Perceptrons (Back Propagation) Radial Basis Functions (RBFs) Competitive Learning Hopfield Multi-Layer Perceptrons
Aprendizado de Máquina (Machine Learning)
Ciência da Computação (Machine Learning) Aula 01 Motivação, áreas de aplicação e fundamentos Max Pereira Nem todo conhecimento tem o mesmo valor. O que torna determinado conhecimento mais importante que
