Pesquisa de site

Rede Neural Profunda (DNN) explicada


Uma rede neural profunda (DNN) permite que as máquinas aprendam padrões e representações complexas a partir de dados com uma precisão sem precedentes. Quando adequadamente treinados, os DNNs permitem que modelos de aprendizado de máquina (ML) interpretem imagens de maneira confiável, imitem fala realista semelhante à humana e até gerem obras de arte.

Este artigo fornece um guia detalhado sobre redes neurais profundas. Aprenda como funcionam as DNNs e veja por que essa tecnologia está impulsionando avanços em visão computacional, processamento de linguagem natural (PNL) e síntese de fala.

Nossa introdução ao aprendizado profundo fornece um excelente ponto de partida se você for novo em redes neurais.

O que é uma rede neural profunda?

Uma rede neural profunda é um tipo de rede neural artificial (ANN) com múltiplas camadas entre suas camadas de entrada e saída. Cada camada consiste em vários nós que realizam cálculos nos dados de entrada. Outro nome comum para uma DNN é rede profunda.

O “profundo” nas redes profundas refere-se à presença de múltiplas camadas ocultas que permitem à rede aprender representações complexas a partir dos dados de entrada. Essas camadas ocultas permitem que DNNs resolvam tarefas complexas de ML que redes artificiais mais "superficiais" não conseguem lidar.

As camadas ocultas em uma DNN são camadas densas (totalmente conectadas). Cada neurônio em uma camada densa está conectado a todos os neurônios da camada anterior e subsequente, o que torna as DNNs altamente adequadas para aprender relacionamentos complexos em dados.

As camadas ocultas em uma rede neural profunda não são simples cópias umas das outras. Em vez disso, uma DNN possui uma estrutura de camadas complexa com uma variedade de tipos de camadas diferentes, como:

  • Camadas convolucionais que aplicam uma série de filtros que podem ser aprendidos aos dados de entrada.
  • Camadas de memória de longo prazo (LSTM) que capturam dependências em dados sequenciais.
  • Camadas de unidade recorrente controlada (GRU) que usam portas para controlar o fluxo de informações da rede.
  • Camadas de atenção que se concentram em partes específicas da sequência de entrada ao fazer previsões.
  • Camadas de normalização que estabilizam e aceleram o treinamento da rede neural profunda.

Quanto mais camadas ocultas uma rede profunda tiver, melhor será o aprendizado e o processamento dos dados de entrada. Embora uma rede exija apenas duas camadas para ser considerada “profunda”, as DNNs geralmente têm mais de 100 camadas ocultas entre seus nós de entrada e saída.

Redes Neurais: Uma Visão Geral Histórica

Como conceito, as redes neurais têm mais de 70 anos. Os pesquisadores Warren McCulloch e Walter Pitts lançaram as bases conceituais para essas redes no final da década de 1940.

McCulloch e Pitts propuseram que unidades computacionais simples, imitando o comportamento dos neurônios no cérebro humano, poderiam ser conectadas para formar redes complexas capazes de computação. A falta de hardware suficiente impediu os pesquisadores de se afastarem do trabalho teórico, mas essas ideias iniciais lançaram as bases para as redes neurais atuais.

Durante as décadas de 1960 e 1970, o interesse em redes neurais continuou com o desenvolvimento do Perceptron. O Perceptron era uma RNA com uma única camada oculta que classificava os dados de entrada em duas categorias. Esta invenção foi um dos primeiros exemplos de uma rede treinável e demonstrou o potencial das redes neurais para tarefas de reconhecimento de padrões.

Outros avanços ocorreram nas décadas de 1980 e 1990, quando Paul Werbos e David Rumelhart desenvolveram a retropropagação (abreviação de "propagação retroativa de erros"). A retropropagação forneceu uma maneira eficiente de treinar redes multicamadas, ajustando as conexões dos neurônios com base nos erros de saída.

Durante a década de 2000, os pesquisadores continuaram a fazer experiências com redes neurais, mas outras técnicas de ML ofuscaram esses projetos. Os recursos computacionais ainda eram insuficientes para o uso eficaz de redes profundas e não tínhamos os conjuntos de dados em grande escala necessários para o treinamento de modelos.

A década de 2010 marcou uma virada para o aprendizado profundo e as redes neurais. Os avanços no hardware, especialmente a disponibilidade de unidades de processamento gráfico (GPUs) poderosas, permitiram um treinamento mais eficiente de redes profundas. A explosão do big data também forneceu os conjuntos de dados necessários para o treinamento de redes neurais profundas.

Aprenda sobre a computação GPU e veja como as GPUs podem atuar como "coprocessadores" para CPUs para acelerar drasticamente as cargas de trabalho.

Como funcionam as redes neurais profundas

As redes profundas são compostas por múltiplas camadas de nós interconectados chamados neurônios ou unidades. Existem três tipos de camadas em uma DNN:

  • Camada de entrada. A camada de entrada recebe dados brutos. Cada nó nesta camada representa um recurso ou atributo dos dados de entrada. Por exemplo, para interpretar imagens de 28x28 pixels, a camada de entrada requer 784 nós, cada um representando a intensidade dos pixels (variando de 0 a 255).
  • Camadas ocultas. DNNs têm duas ou mais camadas ocultas imprensadas entre as camadas de entrada e de saída. Cada camada oculta compreende vários neurônios, que estão conectados a neurônios em ambas as camadas adjacentes. No entanto, os neurônios dentro da mesma camada não estão conectados entre si.
  • Camada de saída. A camada de saída produz as previsões finais da rede. O número de neurônios na camada de saída depende das tarefas que a rede está executando.

Depois de fornecer os dados brutos, os dados de entrada são transmitidos pela rede, camada por camada. Em cada camada, os neurônios aplicam funções de ativação atribuídas e passam a saída processada para a próxima camada.

Aqui estão algumas funções de ativação comuns:

  • Sigmóide. Esta função comprime os valores de entrada entre 0 e 1, tornando-a adequada para problemas de classificação binária.
  • Tanh (tangente hiperbólica). Tanh comprime os valores de entrada entre -1 e 1, tornando-o adequado para tarefas de classificação e regressão.
  • ReLU (Unidade Linear Retificada). ReLU define os valores de entrada negativos como zero e deixa os valores de entrada positivos inalterados.
  • Softmax. Esta função converte pontuações brutas em probabilidades, garantindo que a soma dos valores de saída seja 1.

Depois que a deep net produz um resultado, ela compara suas previsões com as metas definidas fornecidas pelo administrador da DNN. Uma função objetivo ou de perda quantifica a diferença entre a produção esperada e a real. Então, os erros se propagam para trás pela rede, ajustando as conexões dos neurônios para minimizar os erros.

Redes Neurais e Peso

Em uma rede neural profunda, cada conexão entre neurônios em camadas adjacentes está associada a um peso. Os pesos são valores numéricos que representam a força da conexão do neurônio e determinam quanta influência a saída de um neurônio tem na entrada de outro.

Os pesos são positivos ou negativos, dependendo da força da influência que os neurônios exercem uns sobre os outros:

  • Pesos positivos. Quando uma conexão tem peso positivo, um aumento na saída do neurônio emissor leva a um aumento na ativação do neurônio receptor. Nesse caso, a atividade do neurônio emissor estimula a ativação do neurônio receptor.
  • Pesos negativos. Um peso negativo significa que um aumento na saída do neurônio emissor leva a uma diminuição na ativação do neurônio receptor. Nesse caso, a atividade do neurônio emissor inibe a ativação do neurônio receptor.

Quando uma DNN ainda não está treinada, os pesos recebem valores aleatórios. Durante o treinamento, a rede neural profunda ajusta os pesos iterativamente em resposta à diferença entre a saída esperada e a real.

>

Os pesos desempenham um papel crucial tanto na propagação (ou seja, no envio de dados para a próxima camada da DNN) quanto na retropropagação (ou seja, no envio de dados para a camada anterior da rede profunda):

  • Durante a propagação, cada neurônio calcula a soma ponderada das entradas dos neurônios conectados na camada anterior. O neurônio então aplica uma função de ativação a essa soma ponderada para produzir uma saída.
  • Durante a retropropagação, o sinal de erro se propaga para trás através da rede e a rede ajusta os pesos para minimizar esse sinal de erro.

A otimização de pesos é crucial para treinar uma rede neural, pois os pesos determinam quão bem a rede aprende com os dados de treinamento. Pesos bem otimizados permitem que a rede aprenda padrões significativos a partir dos dados de entrada e faça previsões precisas.

Para que serve uma rede neural profunda?

As DNNs tornaram-se uma ferramenta poderosa em vários domínios devido à sua capacidade de aprender padrões complexos a partir de grandes quantidades de dados. Aqui estão alguns casos de uso que normalmente envolvem o uso de uma rede neural profunda:

  • Reconhecimento de imagem. Deep nets são excelentes na detecção de objetos e classificação de imagens. As organizações treinam DNNs para identificar e classificar com precisão objetos em imagens, tornando essas redes inestimáveis em sistemas de vigilância e controle de qualidade industrial.
  • Processamento de linguagem natural. DNNs são amplamente usados para análise de sentimentos, tradução automática e resumo de texto. Uma rede neural profunda pode compreender e gerar texto semelhante ao humano, tornando esta tecnologia ideal para chatbots, assistentes virtuais, serviços de tradução de idiomas e monitoramento de mídias sociais.
  • Síntese de fala. DNNs são excelentes para gerar fala semelhante à humana a partir de entradas de texto.
  • Sistemas de recomendação. Muitas organizações usam redes profundas para criar sistemas de recomendação que analisam as preferências do usuário e fornecem recomendações de produtos e conteúdo. Esses sistemas são amplamente utilizados por plataformas de comércio eletrônico, serviços de streaming e plataformas de mídia social.
  • Casos de uso na área da saúde. As DNNs auxiliam os radiologistas na detecção de anormalidades em imagens médicas, ajudam a identificar padrões em dados genômicos e a analisar dados de pacientes para detecção precoce de doenças.
  • Casos de uso de finanças e negociação. As DNNs podem analisar grandes volumes de dados financeiros para identificar transações fraudulentas, avaliar riscos, prever tendências de mercado e otimizar estratégias de negociação.
  • Casos de uso de varejo. Os varejistas costumam usar uma rede profunda para gerenciamento de estoque, monitoramento de prateleiras e análise do comportamento do cliente por meio de câmeras de vigilância.
  • Veículos autônomos. As DNNs desempenham um papel crucial nos veículos autônomos, pois as redes profundas melhoram a identificação de objetos, a detecção de faixas e o reconhecimento de pedestres.
  • Monitoramento ambiental. As DNNs podem analisar imagens de satélite e dados de sensores para monitorar o desmatamento, os padrões climáticos e os esforços de conservação da vida selvagem.

Quer começar a usar uma rede neural profunda na sua empresa? Você pode usar uma dessas estruturas de aprendizado profundo para acelerar significativamente o treinamento de sua nova DNN.

Desafios das redes neurais profundas

As redes profundas oferecem recursos significativos, mas essa tecnologia também apresenta vários desafios que você deve conhecer antes de começar a treinar uma DNN. Vejamos os problemas mais comuns que as organizações enfrentam ao usar uma rede neural profunda.

Qualidade e quantidade de dados de treinamento

Os adotantes exigem grandes quantidades de dados rotulados de alta qualidade para treinar uma DNN e permitir que ela generalize bem para novas entradas e exemplos inéditos. A obtenção de dados de qualidade é cara e demorada, especialmente em domínios onde é difícil adquirir dados rotulados.

Os dados que você injeta na camada de entrada de uma rede profunda devem ter altos níveis de:

  • Precisão. Erros de rotulagem ou imprecisões gerais nos dados de treinamento geralmente levam o modelo a aprender padrões incorretos e a fazer previsões erradas.
  • Representatividade. Os dados de treinamento devem cobrir toda a gama de variações e cenários que o modelo deverá encontrar durante seu uso. Lacunas nos dados de treinamento levam a previsões tendenciosas, incompletas ou erradas.
  • Limpeza. Pontos de dados barulhentos ou discrepantes introduzem confusão durante o treinamento e degradam os recursos do modelo.

Melhorar a qualidade e a quantidade dos dados de treinamento envolve coleta, anotação, pré-processamento e validação cuidadosos dos dados. O aumento de dados também é útil porque aumenta o tamanho dos dados de treinamento, gerando exemplos extras por meio de transformações como rotação, dimensionamento, corte e adição de ruído.

Requisitos de computação e memória

A maioria dos adotantes deve investir em GPUs e unidades de processamento de tensores (TPUs) caras para criar uma infraestrutura suficientemente poderosa para treinamento de DNN. Esses aceleradores fornecem computação paralela essencial para realizar inúmeras passagens para frente e para trás através da rede para atualizar pesos.

As DNNs também requerem quantidades significativas de memória para armazenar parâmetros do modelo durante o treinamento. O consumo de memória é dimensionado com os seguintes fatores:

  • Tamanho da arquitetura de rede.
  • O tamanho do lote (ou seja, quantas amostras de entrada são processadas simultaneamente durante cada iteração).
  • O tamanho dos dados de entrada.

As altas demandas de treinamento de DNNs também levam a um consumo considerável de energia, especialmente quando você usa aceleradores de hardware que consomem muita energia. Algoritmos de treinamento com eficiência energética, projetos de hardware e otimizações de modelos são essenciais para mitigar o impacto ambiental das DNNs.

Uma das maneiras mais eficazes de resolver as altas demandas computacionais das redes profundas é usar servidores HPC. Esses servidores aceleram bastante o treinamento de DNN com paralelismo, computação distribuída, amplos recursos de memória e aceleradores de hardware especializados.

Problemas de treinamento DNN

Os dois desafios mais comuns no treinamento de uma rede neural profunda são overfitting e underfitting. Esses problemas afetam a capacidade do modelo de generalizar bem para dados nunca antes vistos.

O overfitting ocorre quando um modelo aprende a memorizar o ruído e os padrões específicos dos dados de treinamento, em vez de capturar relacionamentos subjacentes entre os recursos. Como resultado, o modelo tem um bom desempenho nos arquivos de treinamento, mas um desempenho ruim em dados não vistos.

O overfitting geralmente surge quando o modelo é muito complexo em relação à quantidade de dados de treinamento disponíveis. Os sinais usuais de overfitting são alta precisão de treinamento, mas baixa validação e curvas de aprendizado erráticas ou oscilantes. Aqui estão as maneiras mais eficazes de evitar overfitting em uma rede neural profunda:

  • Use métodos de regularização, abandono e parada antecipada para evitar dependência excessiva de recursos específicos.
  • Aumente os dados para aumentar artificialmente o tamanho e a diversidade do conjunto de dados de treinamento.
  • Reduza a profundidade ou largura da rede profunda para corresponder à complexidade do problema e aos dados de treinamento disponíveis.

O underfittingocorre quando um modelo é muito simples para capturar a estrutura subjacente dos dados. Esse problema leva a um desempenho insatisfatório nos conjuntos de dados de treinamento e validação/teste. Aqui estão algumas maneiras eficazes de prevenir esse problema:

  • Aumente a complexidade do modelo adicionando mais camadas, neurônios ou parâmetros.
  • Forneça ao modelo recursos de entrada mais informativos.
  • Aumente o tamanho ou a diversidade do conjunto de dados de treinamento.

Outro problema comum ao treinar uma DNN é quando os gradientes desaparecem à medida que se propagam pela rede. Este problema dificulta a convergência dos algoritmos de otimização, tornando o treinamento difícil ou lento.

Ajuste de hiperparâmetros

Os hiperparâmetros DNN governam o comportamento e o desempenho da deep net. Você define esses parâmetros antes do início do processo de treinamento para alinhar a rede neural profunda com o que você está tentando alcançar. Estes são os hiperparâmetros DNN essenciais:

  • Taxa de aprendizagem.
  • Tamanho do lote.
  • Número de camadas.
  • Número de neurônios por camada.
  • Força de regularização.
  • Taxa de abandono.
  • Funções de ativação.
  • Algoritmos de otimização.

A escolha dos hiperparâmetros influencia significativamente as capacidades do modelo. Configurações abaixo do ideal levam a uma convergência lenta, baixo desempenho nos conjuntos de dados de treinamento e validação e dificuldade de generalização para dados não vistos.

Diferentes hiperparâmetros interagem entre si de maneiras complexas, o que complica ainda mais a busca por uma configuração ideal. A maioria dos adotantes decide testar iterativamente diferentes combinações de hiperparâmetros para avaliar seu impacto no desempenho do modelo. Este processo é demorado e requer uma análise cuidadosa das métricas de treinamento.

Ataques adversários

Ataques adversários são tentativas maliciosas de enganar ou manipular uma rede profunda treinada com alterações sutis nos dados de entrada. Atores maliciosos aplicam essas pequenas alterações (geralmente chamadas de perturbações) aos dados de entrada com o objetivo de causar classificações incorretas no modelo.

Existem dois tipos de ataques adversários:

  • Ataques não direcionados nos quais perturbações causam erros de classificação sem atingir nenhuma classe específica.
  • Ataques direcionados nos quais perturbações fazem com que o modelo classifique erroneamente a amostra de entrada como uma classe alvo específica.

Os ataques adversários representam graves preocupações de segurança para DNNs, especialmente em domínios críticos para a segurança. Por exemplo, estes ataques podem fazer com que veículos autónomos classifiquem mal os sinais de trânsito ou que os sistemas de análise de imagens médicas forneçam diagnósticos incorretos.

Aqui estão algumas maneiras eficazes de prevenir ataques adversários:

  • Aumente o conjunto de dados de treinamento com exemplos ou perturbações adversárias.
  • Treine o modelo em logits suavizados para tornar o DNN mais resistente a perturbações.
  • Oculte ou ofusque os gradientes do modelo para evitar que invasores coletem informações sobre a deep net.
  • Combine previsões de vários modelos ou modelos treinados contraditoriamente para melhorar a robustez.

Expandir sua TI de qualquer forma introduz novos vetores de ataque por meio dos quais um agente mal-intencionado pode violar seus sistemas. Aprenda como gerenciar sua superfície de ataque e garantir que a adição de novas tecnologias não exponha você a riscos desnecessários.

Um mundo totalmente novo de oportunidades de negócios

As redes neurais profundas são um recurso fantástico que nos permite executar tarefas avançadas de ML com precisão recorde. Agora que você sabe como funcionam as DNNs e o que envolve seu uso, você tem todas as informações necessárias para avaliar se sua organização se beneficiaria com a configuração e o treinamento de uma rede neural profunda.

Artigos relacionados