Keras - Visão geral do aprendizado profundo

O aprendizado profundo é um subcampo em evolução do aprendizado de máquina. O aprendizado profundo envolve a análise da entrada camada por camada, onde cada camada extrai progressivamente informações de nível superior sobre a entrada.

Tomemos um cenário simples de análise de uma imagem. Vamos supor que sua imagem de entrada seja dividida em uma grade retangular de pixels. Agora, a primeira camada abstrai os pixels. A segunda camada entende as bordas da imagem. A próxima camada constrói nós a partir das bordas. Então, o próximo encontraria ramificações dos nós. Finalmente, a camada de saída detectará o objeto completo. Aqui, o processo de extração de recursos vai da saída de uma camada para a entrada da próxima camada subsequente.

Usando essa abordagem, podemos processar uma grande quantidade de recursos, o que torna o aprendizado profundo uma ferramenta muito poderosa. Algoritmos de aprendizado profundo também são úteis para a análise de dados não estruturados. Vamos examinar os fundamentos do aprendizado profundo neste capítulo.

Redes neurais artificiais

A abordagem mais popular e primária de aprendizado profundo é o uso de “Rede neural artificial” (RNA). Eles são inspirados no modelo do cérebro humano, que é o órgão mais complexo do nosso corpo. O cérebro humano é composto por mais de 90 bilhões de células minúsculas chamadas “neurônios”. Os neurônios estão interconectados por meio de fibras nervosas chamadas de “axônios” e “dendritos”. O principal papel do axônio é transmitir informações de um neurônio para outro ao qual está conectado.

Da mesma forma, o principal papel dos dendritos é receber a informação que está sendo transmitida pelos axônios de outro neurônio ao qual está conectado. Cada neurônio processa uma pequena informação e então passa o resultado para outro neurônio e este processo continua. Este é o método básico usado pelo nosso cérebro humano para processar muitas informações como fala, visual, etc., e extrair informações úteis delas.

Com base neste modelo, a primeira Rede Neural Artificial (RNA) foi inventada por psicólogo Frank Rosenblatt, no ano de 1958. As RNAs são constituídas por vários nós, semelhantes aos neurônios. Os nós são fortemente interconectados e organizados em diferentes camadas ocultas. A camada de entrada recebe os dados de entrada e os dados passam por uma ou mais camadas ocultas sequencialmente e, por fim, a camada de saída prevê algo útil sobre os dados de entrada. Por exemplo, a entrada pode ser uma imagem e a saída pode ser a coisa identificada na imagem, digamos um “Gato”.

Um único neurônio (chamado de perceptron na RNA) pode ser representado como abaixo -

Aqui,

  • A entrada múltipla junto com o peso representa dendritos.

  • A soma da entrada junto com a função de ativação representa os neurônios. Sum na verdade, significa o valor calculado de todas as entradas e a função de ativação representa uma função, que modifica o Sum valor em 0, 1 ou 0 a 1.

  • A saída real representa o axônio e a saída será recebida pelo neurônio na próxima camada.

Vamos entender os diferentes tipos de redes neurais artificiais nesta seção.

Perceptron Multi-Camada

Perceptron multicamadas é a forma mais simples de RNA. Consiste em uma única camada de entrada, uma ou mais camadas ocultas e, finalmente, uma camada de saída. Uma camada consiste em uma coleção de perceptron. A camada de entrada é basicamente um ou mais recursos dos dados de entrada. Cada camada oculta consiste em um ou mais neurônios e processa certos aspectos do recurso e envia as informações processadas para a próxima camada oculta. O processo da camada de saída recebe os dados da última camada oculta e finalmente produz o resultado.

Rede Neural Convolucional (CNN)

A rede neural convolucional é uma das RNA mais populares. É amplamente utilizado nas áreas de reconhecimento de imagem e vídeo. É baseado no conceito de convolução, um conceito matemático. É quase semelhante ao perceptron multicamadas, exceto que contém uma série de camada de convolução e camada de pooling antes da camada de neurônio oculta totalmente conectada. Tem três camadas importantes -

  • Convolution layer - É o bloco de construção primário e executa tarefas computacionais com base na função de convolução.

  • Pooling layer - É organizado próximo à camada de convolução e é usado para reduzir o tamanho das entradas, removendo informações desnecessárias para que a computação possa ser executada mais rapidamente.

  • Fully connected layer - É organizado ao lado de uma série de convolução e camada de agrupamento e classifica a entrada em várias categorias.

Um simples CNN pode ser representado como abaixo -

Aqui,

  • 2 séries de camada de convolução e pooling são usadas e recebem e processam a entrada (por exemplo, imagem).

  • Uma única camada totalmente conectada é usada e é usada para produzir os dados (por exemplo, classificação de imagem)

Rede Neural Recorrente (RNN)

Redes Neurais Recorrentes (RNN) são úteis para resolver a falha em outros modelos de RNA. Bem, a maior parte da RNA não se lembra das etapas de situações anteriores e aprendeu a tomar decisões com base no contexto do treinamento. Enquanto isso, a RNN armazena as informações anteriores e todas as suas decisões são tomadas com base no que aprendeu no passado.

Essa abordagem é útil principalmente na classificação de imagens. Às vezes, podemos precisar olhar para o futuro para consertar o passado. Nesse caso, o RNN bidirecional é útil para aprender com o passado e prever o futuro. Por exemplo, temos amostras manuscritas em várias entradas. Suponha que haja confusão em uma entrada, então precisamos verificar novamente outras entradas para reconhecer o contexto correto que toma a decisão do passado.

Fluxo de trabalho da RNA

Vamos primeiro entender as diferentes fases do aprendizado profundo e, em seguida, aprender como Keras ajuda no processo de aprendizado profundo.

Colete os dados necessários

O aprendizado profundo requer muitos dados de entrada para aprender e prever o resultado com sucesso. Portanto, primeiro colete o máximo de dados possível.

Analisar dados

Analise os dados e adquira uma boa compreensão dos dados. O melhor entendimento dos dados é necessário para selecionar o algoritmo ANN correto.

Escolha um algoritmo (modelo)

Escolha um algoritmo que melhor se adapte ao tipo de processo de aprendizagem (por exemplo, classificação de imagem, processamento de texto, etc.) e aos dados de entrada disponíveis. Algoritmo é representado porModelem Keras. O algoritmo inclui uma ou mais camadas. Cada camada em ANN pode ser representada porKeras Layer em Keras.

  • Prepare data - Processe, filtre e selecione apenas as informações necessárias dos dados.

  • Split data- Divida os dados em conjunto de dados de treinamento e teste. Os dados de teste serão usados ​​para avaliar a previsão do algoritmo / modelo (uma vez que a máquina aprenda) e para cruzar a verificação da eficiência do processo de aprendizagem.

  • Compile the model- Compilar o algoritmo / modelo, de forma que possa ser usado posteriormente para aprender treinando e finalmente fazer a previsão. Esta etapa exige que escolhamos a função de perda e o Otimizador. A função de perda e o Otimizador são usados ​​na fase de aprendizagem para encontrar o erro (desvio da saída real) e fazer a otimização para que o erro seja minimizado.

  • Fit the model - O processo de aprendizagem real será feito nesta fase usando o conjunto de dados de treinamento.

  • Predict result for unknown value - Prever a saída para os dados de entrada desconhecidos (além dos dados de treinamento e teste existentes)

  • Evaluate model - Avalie o modelo prevendo a saída para dados de teste e comparando a previsão com o resultado real dos dados de teste.

  • Freeze, Modify or choose new algorithm- Verifique se a avaliação do modelo foi bem-sucedida. Se sim, salve o algoritmo para fins de previsão futura. Caso contrário, modifique ou escolha um novo algoritmo / modelo e, finalmente, treine, preveja e avalie o modelo novamente. Repita o processo até que o melhor algoritmo (modelo) seja encontrado.

As etapas acima podem ser representadas usando o fluxograma abaixo -