Aprendizado Profundo

O campo do aprendizado de máquina tem evoluído rapidamente nos últimos anos, impulsionado em grande parte pelo desenvolvimento e aplicação de aprendizado profundo por meio de redes neurais. Estas são sistemas computacionais vagamente inspirados na estrutura neural do cérebro humano, projetados para reconhecer padrões e resolver problemas complexos de forma semelhante a como os humanos fazem. Este texto explora os conceitos fundamentais, tipos e aplicações das redes neurais no contexto do aprendizado de máquina.

Regressão Linear

A regressão linear é um modelo estatístico que examina a relação linear entre duas variáveis. É uma das formas mais simples de aprendizado de máquina e é frequentemente usada para prever o valor de uma variável dependente com base no valor de uma variável independente.

graph LR;
    x1(x1) -->|ω1| B((∑)) --> D(y);
    x2(x2) -->|ω2| B;

Regressão Logística

A regressão logística é um modelo estatístico usado para modelar a probabilidade de uma variável dependente categórica. Ela é uma extensão da regressão linear e é usada para prever a probabilidade de uma observação pertencer a uma classe específica.

graph LR;
    x1(x1) -->|ω1| B((∑)) --> C[σ] --> D(y);
    x2(x2) -->|ω2| B;

Redes Neurais Tradicionais

A regressão linear e a regressão logística são importantes modelos de aprendizado de máquina que podem lidar com uma diversidade lineares. No entanto, a maioria dos problemas do mundo real não é linear e, portanto, requer modelos mais complexos. Uma forma de resolver este problema é agregar multiplas regressões logísticas em um único modelo de forma a aprender diferentes padrões dentro de um mesmo conjunto de dados.

graph LR;

    x1(x1);
    x2(x2);
    x1 --> |ω11| s1;
    x2 --> |ω12| s1;
    x1 --> |ω21| s2;
    x2 --> |ω22| s2;

    subgraph Regressão Logística 2
        direction LR
        s2((∑)) --> sig2[σ] --> y2(y2);
    end

    subgraph Regressão Logística 1
        direction LR
        s1((∑)) --> sig1[σ] --> y1(y1);
    end
    

Aqui, ao utilizar duas regressões logísticas, acabamos tendo dois outputs y1 e y2. Como podemos resumir esses dois outputs em apenas um? Colocamos mais uma regressão logística:

graph LR;
    x1(x1);
    x2(x2);

    subgraph Regressão Logística 1
        direction LR
        s1((∑)) --> sig1[σ] --> h1(h1);
    end

    subgraph Regressão Logística 2
        direction LR
        s2((∑)) --> sig2[σ] --> h2(h2);
    end

    subgraph Regressão Logística 3
        direction LR
        s3((∑)) --> sig3[σ] --> y(ŷ);
    end
    
    x1 --> |ω11| s1;
    x2 --> |ω12| s1;
    x1 --> |ω21| s2;
    x2 --> |ω22| s2;
    h1 --> |ω31| s3;
    h2 --> |ω32| s3;

Este é o princípio das redes neurais tradicionais.

Aprendizado e Treinamento

O processo de treinamento de uma rede neural envolve a ajustagem dos pesos das conexões entre os neurônios. Isso é feito através de um processo iterativo chamado backpropagation, onde o erro entre a saída prevista e a real é calculado e usado para atualizar os pesos, a fim de minimizar esse erro ao longo do tempo.

graph LR;
    entradas("Entradas (x1, x2, ..., xn)");
    rede["Rede (ω11, ω12, ..., ωmn)"];
    saidas("Saídas (ŷ1, ŷ2, ..., ŷn)");
    erro("Erro");
    
    entradas --> rede --> saidas --> erro --> rede;

    subgraph rede["Rede (ω11, ω12, ..., ωmn)"]
        direction LR
        n1((" "));
        n2((" "));
        n3((" "));
        n4((" "));
        n5((" "));
        n6((" "));
        n7((" "));

        n1 --> n3;
        n1 --> n4;
        n1 --> n5;
        
        n2 --> n3;
        n2 --> n4;
        n2 --> n5;

        n3 --> n6;
        n4 --> n6;
        n5 --> n6;

        n3 --> n7;
        n4 --> n7;
        n5 --> n7;
    end


Desafios em Redes Neurais

As redes neurais tradicionais são capaz de trabalhar com varios tipos de relações não lineares em tarefas mais simples envolvendo imagens e textos. No entanto para tarefas mais complexas, as redes tradicionais enfrentam várias limitações devido à sua estrutura simples e à forma como processam as informações. Listamos abaixo algumas destas limitações

  • Flexibilidade no Tamanho da Entrada: Lidar com entradas de tamanho variável é problemático, pois as redes neurais tradicionais requerem um tamanho de entrada fixo.

  • Dependência Temporal e Sequencial: Dificuldade em processar sequências de dados ou dados temporais, como séries temporais ou linguagem natural, devido à sua incapacidade de manter estados ou informações de entradas anteriores.

  • Memória de Longo Prazo em Sequências Longas: Dificuldade em capturar dependências de longo prazo em sequências longas devido ao problema de dissipação do gradiente, que afeta a capacidade de aprendizado da rede.

  • Processamento de Dados Espaciais: Incapacidade de eficientemente processar dados com uma forte componente espacial, como imagens, devido à falta de consideração da localização espacial e da estrutura dos dados.

  • Eficiência Computacional com Dados de Alta Dimensão: Tratar eficientemente dados de alta dimensão, como imagens, pode ser computacionalmente custoso e ineficaz devido ao grande número de parâmetros necessários

  • Reconhecimento de Padrões Complexos: Identificar padrões complexos ou hierárquicos em dados, especialmente em grandes volumes de dados ou dados altamente dimensionais

Devido a estes e outros problemas foi necessário o desenvolvimento de novas arquiteturas de redes neurais, como as redes neurais convolucionais e as redes neurais recorrentes. Enquanto as redes convolucionais são capazes de lidar com problemas relacionados a dados espaciais, como imagens, as redes recorrentes são capazes de lidar com problemas relacionados a sequências temporais, como textos.