Redes Neurais Profundas
Uma rede neural profunda (DNN) é uma RNA com várias camadas ocultas entre as camadas de entrada e saída. Semelhante a ANNs rasas, DNNs podem modelar relações não lineares complexas.
O principal objetivo de uma rede neural é receber um conjunto de entradas, realizar cálculos progressivamente complexos sobre elas e fornecer saídas para resolver problemas do mundo real, como classificação. Nós nos restringimos a alimentar redes neurais.
Temos uma entrada, uma saída e um fluxo de dados sequenciais em uma rede profunda.
As redes neurais são amplamente utilizadas em problemas de aprendizagem supervisionada e aprendizagem por reforço. Essas redes são baseadas em um conjunto de camadas conectadas entre si.
No aprendizado profundo, o número de camadas ocultas, principalmente não lineares, pode ser grande; digamos cerca de 1000 camadas.
Os modelos DL produzem resultados muito melhores do que as redes ML normais.
Usamos principalmente o método de gradiente descendente para otimizar a rede e minimizar a função de perda.
Podemos usar o Imagenet, um repositório de milhões de imagens digitais para classificar um conjunto de dados em categorias como cães e gatos. Redes DL são cada vez mais usadas para imagens dinâmicas, além das estáticas, e para séries temporais e análise de texto.
O treinamento dos conjuntos de dados é uma parte importante dos modelos de aprendizado profundo. Além disso, a retropropagação é o algoritmo principal no treinamento de modelos DL.
DL lida com o treinamento de grandes redes neurais com complexas transformações de entrada e saída.
Um exemplo de DL é o mapeamento de uma foto para o nome da (s) pessoa (s) na foto, como fazem nas redes sociais, e a descrição de uma imagem com uma frase é outra aplicação recente de DL.
Redes neurais são funções que têm entradas como x1, x2, x3 ... que são transformadas em saídas como z1, z2, z3 e assim por diante em duas (redes rasas) ou várias operações intermediárias também chamadas de camadas (redes profundas).
Os pesos e vieses mudam de camada para camada. 'w' e 'v' são os pesos ou sinapses das camadas das redes neurais.
O melhor caso de uso de aprendizado profundo é o problema de aprendizado supervisionado. Aqui, temos um grande conjunto de entradas de dados com um conjunto desejado de saídas.
Aqui, aplicamos o algoritmo de propagação de retorno para obter a previsão de saída correta.
O conjunto de dados mais básico de aprendizado profundo é o MNIST, um conjunto de dados de dígitos escritos à mão.
Podemos treinar uma rede neural convolucional profunda com Keras para classificar imagens de dígitos manuscritos desse conjunto de dados.
O disparo ou ativação de um classificador de rede neural produz uma pontuação. Por exemplo, para classificar os pacientes como doentes e saudáveis, consideramos parâmetros como altura, peso e temperatura corporal, pressão arterial etc.
Uma pontuação alta significa que o paciente está doente e uma pontuação baixa significa que ele está saudável.
Cada nó na saída e camadas ocultas tem seus próprios classificadores. A camada de entrada recebe entradas e passa suas pontuações para a próxima camada oculta para ativação posterior e isso continua até que a saída seja alcançada.
Este progresso da entrada para a saída da esquerda para a direita na direção para frente é chamado forward propagation.
Caminho de atribuição de crédito (CAP) em uma rede neural é a série de transformações começando da entrada para a saída. Os CAPs elaboram conexões causais prováveis entre a entrada e a saída.
A profundidade do CAP para uma determinada rede neural feedforward ou a profundidade do CAP é o número de camadas ocultas mais uma à medida que a camada de saída é incluída. Para redes neurais recorrentes, onde um sinal pode se propagar através de uma camada várias vezes, a profundidade CAP pode ser potencialmente ilimitada.
Redes Profundas e Redes Rasas
Não há um limite claro de profundidade que divida o aprendizado superficial do aprendizado profundo; mas é geralmente aceito que para o aprendizado profundo, que tem várias camadas não lineares, o CAP deve ser maior do que dois.
O nó básico em uma rede neural é uma percepção que imita um neurônio em uma rede neural biológica. Então, temos Perception multicamadas ou MLP. Cada conjunto de entradas é modificado por um conjunto de pesos e tendências; cada aresta tem um peso único e cada nó tem uma tendência única.
A predição accuracy de uma rede neural depende de sua weights and biases.
O processo de melhoria da precisão da rede neural é chamado training. A saída de uma rede de propulsão direta é comparada com aquele valor que é conhecido como correto.
o cost function or the loss function é a diferença entre a saída gerada e a saída real.
O objetivo do treinamento é fazer com que o custo do treinamento seja o menor possível em milhões de exemplos de treinamento. Para fazer isso, a rede ajusta os pesos e tendências até que a previsão corresponda à saída correta.
Uma vez bem treinada, uma rede neural tem o potencial de fazer previsões precisas todas as vezes.
Quando o padrão se torna complexo e você deseja que o seu computador os reconheça, você deve escolher as redes neurais. Em tais cenários de padrões complexos, a rede neural supera todos os outros algoritmos concorrentes.
Agora existem GPUs que podem treiná-los mais rápido do que nunca. Redes neurais profundas já estão revolucionando o campo da IA
Os computadores provaram ser bons em realizar cálculos repetitivos e seguir instruções detalhadas, mas não foram tão bons em reconhecer padrões complexos.
Se houver o problema de reconhecimento de padrões simples, uma máquina de vetores de suporte (svm) ou um classificador de regressão logística podem fazer o trabalho bem, mas à medida que a complexidade do padrão aumenta, não há outra maneira a não ser ir para redes neurais profundas.
Portanto, para padrões complexos como um rosto humano, as redes neurais rasas falham e não têm alternativa a não ser ir para redes neurais profundas com mais camadas. As redes profundas são capazes de fazer seu trabalho quebrando os padrões complexos em outros mais simples. Por exemplo, rosto humano; A rede adeep usaria bordas para detectar partes como lábios, nariz, olhos, orelhas e assim por diante e, em seguida, re-combiná-los para formar um rosto humano
A precisão da previsão correta tornou-se tão precisa que, recentemente, em um Desafio de reconhecimento de padrões do Google, uma rede profunda venceu um humano.
Essa ideia de uma teia de perceptrons em camadas já existe há algum tempo; nesta área, as redes profundas imitam o cérebro humano. Mas uma desvantagem disso é que eles levam muito tempo para treinar, uma restrição de hardware
No entanto, as GPUs de alto desempenho recentes foram capazes de treinar essas redes profundas em menos de uma semana; enquanto os cpus rápidos poderiam levar semanas ou talvez meses para fazer o mesmo.
Escolhendo uma rede profunda
Como escolher uma rede profunda? Temos que decidir se estamos construindo um classificador ou se estamos tentando encontrar padrões nos dados e se vamos usar o aprendizado não supervisionado. Para extrair padrões de um conjunto de dados não rotulados, usamos uma máquina Boltzman restrita ou um codificador automático.
Considere os seguintes pontos ao escolher uma rede profunda -
Para processamento de texto, análise de sentimento, análise e reconhecimento de entidade de nome, usamos uma rede recorrente ou rede de tensor neural recursiva ou RNTN;
Para qualquer modelo de linguagem que opere no nível do personagem, usamos a rede recorrente.
Para reconhecimento de imagem, usamos a rede de crença profunda DBN ou rede convolucional.
Para reconhecimento de objetos, usamos uma rede RNTN ou convolucional.
Para reconhecimento de fala, usamos rede recorrente.
Em geral, redes de crença profunda e perceptrons multicamadas com unidades lineares retificadas ou RELU são boas escolhas para classificação.
Para análise de séries temporais, é sempre recomendado usar rede recorrente.
As redes neurais existem há mais de 50 anos; mas só agora eles ganharam destaque. A razão é que eles são difíceis de treinar; quando tentamos treiná-los com um método chamado retropropagação, nos deparamos com um problema chamado gradientes que desaparecem ou explodem. Quando isso acontece, o treinamento leva mais tempo e a precisão fica para trás. Ao treinar um conjunto de dados, estamos constantemente calculando a função de custo, que é a diferença entre a saída prevista e a saída real de um conjunto de dados de treinamento rotulados. A função de custo é então minimizada ajustando os valores dos pesos e vieses até o valor mais baixo é obtido. O processo de treinamento usa um gradiente, que é a taxa na qual o custo mudará em relação à mudança nos valores de peso ou polarização.
Redes restritas de Boltzman ou codificadores automáticos - RBNs
Em 2006, um avanço foi alcançado ao lidar com a questão dos gradientes de desaparecimento. Geoff Hinton concebeu uma nova estratégia que levou ao desenvolvimento deRestricted Boltzman Machine - RBM, uma rede rasa de duas camadas.
A primeira camada é a visible camada e a segunda camada é a hiddencamada. Cada nó da camada visível é conectado a todos os nós da camada oculta. A rede é conhecida como restrita, pois duas camadas na mesma camada não têm permissão para compartilhar uma conexão.
Autoencoders são redes que codificam dados de entrada como vetores. Eles criam uma representação oculta ou compactada dos dados brutos. Os vetores são úteis na redução de dimensionalidade; o vetor compacta os dados brutos em um número menor de dimensões essenciais. Autoencoders são combinados com decodificadores, o que permite a reconstrução dos dados de entrada com base em sua representação oculta.
RBM é o equivalente matemático de um tradutor bidirecional. Uma passagem para frente pega as entradas e as traduz em um conjunto de números que codifica as entradas. Enquanto isso, uma passagem para trás pega esse conjunto de números e os converte de volta em entradas reconstruídas. Uma rede bem treinada executa a sustentação das costas com um alto grau de precisão.
Em qualquer uma das etapas, os pesos e os vieses têm um papel crítico; eles ajudam o RBM na decodificação das inter-relações entre as entradas e na decisão de quais entradas são essenciais na detecção de padrões. Por meio de passes para frente e para trás, o RBM é treinado para reconstruir a entrada com diferentes pesos e vieses até que a entrada e a construção sejam o mais próximo possível. Um aspecto interessante do RBM é que os dados não precisam ser rotulados. Isso é muito importante para conjuntos de dados do mundo real, como fotos, vídeos, vozes e dados do sensor, todos os quais tendem a não estar rotulados. Em vez de rotular manualmente os dados por humanos, o RBM classifica automaticamente os dados; ao ajustar adequadamente os pesos e vieses, um RBM é capaz de extrair características importantes e reconstruir a entrada. RBM é uma parte da família de redes neurais extratoras de recursos, que são projetadas para reconhecer padrões inerentes aos dados. Eles também são chamados de codificadores automáticos porque precisam codificar sua própria estrutura.
Deep Belief Networks - DBNs
Redes de crença profunda (DBNs) são formadas pela combinação de RBMs e pela introdução de um método de treinamento inteligente. Temos um novo modelo que finalmente resolve o problema do gradiente de desaparecimento. Geoff Hinton inventou os RBMs e também Deep Belief Nets como alternativa à propagação reversa.
Um DBN é semelhante em estrutura a um MLP (perceptron multicamadas), mas muito diferente quando se trata de treinamento. é o treinamento que permite que os DBNs superem seus equivalentes superficiais
Um DBN pode ser visualizado como uma pilha de RBMs onde a camada oculta de um RBM é a camada visível do RBM acima dele. O primeiro RBM é treinado para reconstruir sua entrada com a maior precisão possível.
A camada oculta do primeiro RBM é considerada a camada visível do segundo RBM e o segundo RBM é treinado usando as saídas do primeiro RBM. Esse processo é iterado até que todas as camadas da rede sejam treinadas.
Em um DBN, cada RBM aprende toda a entrada. Um DBN funciona globalmente por meio do ajuste fino de toda a entrada em sucessão conforme o modelo melhora lentamente, como a lente de uma câmera lentamente focando uma imagem. Uma pilha de RBMs supera um único RBM como um perceptron MLP multicamadas supera um único perceptron.
Nesse estágio, os RBMs detectaram padrões inerentes aos dados, mas sem nenhum nome ou rótulo. Para finalizar o treinamento do DBN, temos que introduzir rótulos nos padrões e ajustar a rede com o aprendizado supervisionado.
Precisamos de um conjunto muito pequeno de amostras rotuladas para que os recursos e padrões possam ser associados a um nome. Este pequeno conjunto de dados rotulado é usado para treinamento. Este conjunto de dados rotulados pode ser muito pequeno quando comparado ao conjunto de dados original.
Os pesos e vieses são ligeiramente alterados, resultando em uma pequena mudança na percepção da rede dos padrões e freqüentemente um pequeno aumento na precisão total.
O treinamento também pode ser concluído em um período de tempo razoável usando GPUs, dando resultados muito precisos em comparação com redes rasas e vemos uma solução para o problema do gradiente de desaparecimento também.
Redes Adversariais Generativas - GANs
Redes adversárias gerativas são redes neurais profundas que compreendem duas redes, colocadas uma contra a outra, daí o nome “adversário”.
Os GANs foram apresentados em um artigo publicado por pesquisadores da Universidade de Montreal em 2014. O especialista em IA do Facebook, Yann LeCun, referindo-se aos GANs, chamou o treinamento adversarial de "a ideia mais interessante dos últimos 10 anos em ML".
O potencial das GANs é enorme, pois a varredura de rede aprende a imitar qualquer distribuição de dados. Os GANs podem ser ensinados a criar mundos paralelos notavelmente semelhantes ao nosso em qualquer domínio: imagens, música, fala, prosa. Eles são artistas de robôs de certa forma, e sua produção é bastante impressionante.
Em um GAN, uma rede neural, conhecida como gerador, gera novas instâncias de dados, enquanto a outra, o discriminador, os avalia quanto à autenticidade.
Digamos que estejamos tentando gerar numerais escritos à mão, como aqueles encontrados no conjunto de dados MNIST, que são retirados do mundo real. O trabalho do discriminador, quando mostrado uma instância do verdadeiro conjunto de dados MNIST, é reconhecê-los como autênticos.
Agora considere as seguintes etapas do GAN -
The generator network takes input in the form of random numbers and returns an image.
This generated image is given as input to the discriminator network along with a stream of images taken from the actual dataset.
The discriminator takes in both real and fake images and returns probabilities, a number between 0 and 1, with 1 representing a prediction of authenticity and 0 representing fake.
So you have a double feedback loop −
The discriminator is in a feedback loop with the ground truth of the images, which we know.
The generator is in a feedback loop with the discriminator.
Recurrent Neural Networks - RNNs
RNNSare neural networks in which data can flow in any direction. These networks are used for applications such as language modelling or Natural Language Processing (NLP).
The basic concept underlying RNNs is to utilize sequential information. In a normal neural network it is assumed that all inputs and outputs are independent of each other. If we want to predict the next word in a sentence we have to know which words came before it.
RNNs are called recurrent as they repeat the same task for every element of a sequence, with the output being based on the previous computations. RNNs thus can be said to have a “memory” that captures information about what has been previously calculated. In theory, RNNs can use information in very long sequences, but in reality, they can look back only a few steps.
Long short-term memory networks (LSTMs) are most commonly used RNNs.
Together with convolutional Neural Networks, RNNs have been used as part of a model to generate descriptions for unlabelled images. It is quite amazing how well this seems to work.
Convolutional Deep Neural Networks - CNNs
If we increase the number of layers in a neural network to make it deeper, it increases the complexity of the network and allows us to model functions that are more complicated. However, the number of weights and biases will exponentially increase. As a matter of fact, learning such difficult problems can become impossible for normal neural networks. This leads to a solution, the convolutional neural networks.
CNNs are extensively used in computer vision; have been applied also in acoustic modelling for automatic speech recognition.
The idea behind convolutional neural networks is the idea of a “moving filter” which passes through the image. This moving filter, or convolution, applies to a certain neighbourhood of nodes which for example may be pixels, where the filter applied is 0.5 x the node value −
Noted researcher Yann LeCun pioneered convolutional neural networks. Facebook as facial recognition software uses these nets. CNN have been the go to solution for machine vision projects. There are many layers to a convolutional network. In Imagenet challenge, a machine was able to beat a human at object recognition in 2015.
In a nutshell, Convolutional Neural Networks (CNNs) are multi-layer neural networks. The layers are sometimes up to 17 or more and assume the input data to be images.
CNNs drastically reduce the number of parameters that need to be tuned. So, CNNs efficiently handle the high dimensionality of raw images.