Neural Networks

As redes neurais reflectem o comportamento do cérebro humano, permitindo aos programas de computador reconhecer padrões e resolver problemas comuns nos campos da IA, aprendizagem mecânica, e aprendizagem profunda.

O que são redes neurais?

Redes neurais, também conhecidas como redes neurais artificiais (ANNs) ou redes neurais simuladas (SNNs), são um subconjunto da aprendizagem mecânica e estão no centro de algoritmos de aprendizagem profunda. O seu nome e estrutura são inspirados pelo cérebro humano, imitando a forma como os neurónios biológicos sinalizam uns aos outros.

Redes neurais artificiais (ANNs) são constituídas por uma camada de nós, contendo uma camada de entrada, uma ou mais camadas ocultas, e uma camada de saída. Cada nó, ou neurónio artificial, liga-se a outro e tem um peso e limiar associados. Se a saída de qualquer nó individual estiver acima do valor limiar especificado, esse nó é activado, enviando dados para a camada seguinte da rede. Caso contrário, nenhum dado é transmitido para a camada seguinte da rede.

Diagrama visual de uma camada de entrada, camadas ocultas, e uma camada de saída de uma rede neural de alimentação

Redes neurais dependem de dados de treino para aprender e melhorar a sua precisão ao longo do tempo. Contudo, uma vez que estes algoritmos de aprendizagem são aperfeiçoados em termos de precisão, são ferramentas poderosas nas ciências informáticas e inteligência artificial, permitindo-nos classificar e agrupar dados a alta velocidade. As tarefas de reconhecimento de fala ou de imagem podem demorar minutos versus horas, quando comparadas com a identificação manual por peritos humanos. Uma das redes neurais mais conhecidas é o algoritmo de pesquisa do Google.

Como funcionam as redes neurais?

Pense em cada nó individual como o seu próprio modelo de regressão linear, composto de dados de entrada, pesos, um enviesamento (ou limiar), e uma saída. A fórmula seria algo parecido com isto:

Fórmula matemática usada para determinar a soma
Fórmula matemática utilizada para determinar a saída

É determinada uma camada de entrada, são atribuídos pesos. Estes pesos ajudam a determinar a importância de qualquer dada variável, sendo que os maiores contribuem mais significativamente para a produção em comparação com outras entradas. Todas as entradas são então multiplicadas pelos seus respectivos pesos e depois somadas. Depois, a saída é passada através de uma função de activação, que determina a saída. Se essa saída exceder um determinado limiar, “dispara” (ou activa) o nó, passando os dados para a camada seguinte na rede. Isto faz com que a saída de um nó se torne na entrada do nó seguinte. Este processo de passar dados de uma camada para a camada seguinte define esta rede neural como uma rede feedforward.

Dividamos o que um único nó pode parecer utilizando valores binários. Podemos aplicar este conceito a um exemplo mais tangível, como por exemplo se se deve ir navegar (Sim: 1, Não: 0). A decisão de ir ou não ir é o nosso resultado previsto, ou y-hat. Vamos supor que existem três factores que influenciam a sua decisão:

  1. As ondas são boas? (Sim: 1, Não: 0)
  2. A fila está vazia? (Sim: 1, Não: 0)
  3. Terá havido um ataque recente de tubarões? (Sim: 0, Não: 1)

Então, vamos assumir o seguinte, dando-nos os seguintes inputs:

  • X1 = 1, visto que as ondas estão a bombear
  • X2 = 0, visto que as multidões estão fora
  • X3 = 1, visto que não houve um ataque recente de tubarões

Agora, precisamos de atribuir alguns pesos para determinar a importância. Pesos maiores significam que determinadas variáveis são de maior importância para a decisão ou resultado.

  • W1 = 5, uma vez que grandes ondas não aparecem frequentemente
  • W2 = 2, uma vez que está habituado às multidões
  • W3 = 4, uma vez que tem medo de tubarões

Finalmente, assumiremos também um valor limiar de 3, o que se traduziria num valor enviesado de -3. Com todos os vários inputs, podemos começar a ligar valores à fórmula para obter o output desejado.

Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6

Se utilizarmos a função de activação desde o início desta secção, podemos determinar que o output deste nó seria 1, uma vez que 6 é maior do que 0. Neste caso, iríamos surfar; mas se ajustarmos os pesos ou o limiar, podemos obter resultados diferentes do modelo. Quando observamos uma decisão, como no exemplo acima, podemos ver como uma rede neural poderia tomar decisões cada vez mais complexas dependendo do resultado de decisões ou camadas anteriores.

No exemplo acima, utilizámos perceptrons para ilustrar algumas das matemáticas em jogo aqui, mas as redes neurais alavancam os neurónios sigmóides, que se distinguem por terem valores entre 0 e 1. Uma vez que as redes neurais se comportam de forma semelhante às árvores de decisão, os dados em cascata de um nó para outro, tendo x valores entre 0 e 1 reduzirá o impacto de qualquer alteração de uma única variável na saída de qualquer dado nó, e subsequentemente, a saída da rede neural.

Quando começarmos a pensar em casos de uso mais prático das redes neurais, como o reconhecimento ou classificação de imagens, aproveitaremos a aprendizagem supervisionada, ou conjuntos de dados etiquetados, para treinar o algoritmo. À medida que treinamos o modelo, vamos querer avaliar a sua precisão usando uma função de custo (ou perda). Isto também é geralmente referido como o erro quadrático médio (MSE). Na equação abaixo,

  • i representa o índice da amostra,
  • li>y-hat é o resultado previsto,

  • y é o valor real, e
  • m é o número de amostras.
Fórmula matemática utilizada para determinar a função de custo

Ultimamente, o objectivo é minimizar a nossa função de custo para assegurar a correcção da adequação a qualquer observação. À medida que o modelo ajusta os seus pesos e enviesamento, utiliza a função de custo e a aprendizagem de reforço para atingir o ponto de convergência, ou o mínimo local. O processo em que o algoritmo ajusta os seus pesos é através da descida por gradiente, permitindo ao modelo determinar a direcção a tomar para reduzir os erros (ou minimizar a função de custo). Com cada exemplo de treino, os parâmetros do modelo ajustam-se para convergir gradualmente ao mínimo.

Gráfico de linha ilustrando o ponto de convergência

Ver este artigo da IBM Developer para uma explicação mais profunda dos conceitos quantitativos envolvidos nas redes neurais.

As redes neurais mais profundas são alimentadas, o que significa que fluem numa só direcção, desde a entrada até à saída. Contudo, também se pode treinar o modelo através da retropropagação; ou seja, mover-se na direcção oposta da saída para a entrada. A retropropagação permite-nos calcular e atribuir o erro associado a cada neurónio, permitindo-nos ajustar e ajustar adequadamente os parâmetros do(s) modelo(s).

Tipos de redes neurais

Redes neurais podem ser classificadas em diferentes tipos, que são utilizados para diferentes fins. Embora esta não seja uma lista exaustiva de tipos, a lista abaixo seria representativa dos tipos mais comuns de redes neurais com que se deparará pelos seus casos de uso comum:

O perceptron é a rede neural mais antiga, criada por Frank Rosenblatt em 1958. Tem um único neurónio e é a forma mais simples de uma rede neural:

Diagrama simples de um perceptron usando linhas e um círculo azul

Redes neuronais de alimentação, ou perceptrons multicamadas (MLPs), são aquilo em que nos temos concentrado principalmente neste artigo. São constituídos por uma camada de entrada, uma camada ou camadas escondidas, e uma camada de saída. Embora estas redes neurais sejam também comummente referidas como MLPs, é importante notar que são na realidade constituídas por neurónios sigmóides, não perceptrões, uma vez que a maioria dos problemas do mundo real são não lineares. Os dados são normalmente introduzidos nestes modelos para os treinar, e são a base para a visão por computador, processamento de linguagem natural, e outras redes neurais.

As redes neurais volucionais (CNNs) são semelhantes às redes feedforward, mas são normalmente utilizadas para o reconhecimento de imagens, reconhecimento de padrões, e/ou visão por computador. Estas redes utilizam princípios de álgebra linear, particularmente a multiplicação matricial, para identificar padrões dentro de uma imagem.

Rede neural recorrente (RNNs) são identificadas pelos seus loops de feedback. Estes algoritmos de aprendizagem são principalmente aproveitados quando se usam dados de séries temporais para fazer previsões sobre resultados futuros, tais como previsões do mercado de acções ou previsões de vendas.

Redes neurais vs. aprendizagem profunda

Aprendizagem profunda e as redes neurais tendem a ser usadas intercambiavelmente na conversação, o que pode ser confuso. Como resultado, vale a pena notar que o “profundo” na aprendizagem profunda se refere apenas à profundidade das camadas de uma rede neural. Uma rede neural que consiste em mais de três camadas – que incluiria as entradas e as saídas – pode ser considerada um algoritmo de aprendizagem profunda. Uma rede neural que tenha apenas duas ou três camadas é apenas uma rede neural básica.

Para aprender mais sobre as diferenças entre as redes neurais e outras formas de inteligência artificial, como a aprendizagem de máquinas, leia o post do blogue “AI vs. Aprendizagem de Máquinas vs. Aprendizagem Profunda vs. Redes Neurais”: Qual é a diferença?”

História das redes neurais

A história das redes neurais é mais longa do que a maioria das pessoas pensa. Embora a ideia de “uma máquina que pensa” possa ser rastreada até aos Antigos Gregos, centrar-nos-emos nos acontecimentos-chave que levaram à evolução do pensamento em torno das redes neurais, que tem refluído e fluido em popularidade ao longo dos anos:

1943: Warren S. McCulloch e Walter Pitts publicaram “A logical calculus of the ideas immanent in nervous activity (PDF, 1K KB) (a ligação reside fora da IBM)” Esta investigação procurou compreender como o cérebro humano podia produzir padrões complexos através de células cerebrais ligadas, ou neurónios. Uma das ideias principais que resultou deste trabalho foi a comparação de neurónios com um limiar binário à lógica booleana (ou seja, 0/1 ou declarações verdadeiro/falso).

1958: Frank Rosenblatt é creditado com o desenvolvimento do perceptron, documentado na sua pesquisa, “The Perceptron”: A Probabilistic Model for Information Storage and Organization in the Brain” (PDF, 1.6K KB) (a ligação reside fora da IBM). Ele leva o trabalho de McCulloch e Pitt um passo à frente, introduzindo pesos na equação. Aproveitando um IBM 704, Rosenblatt conseguiu que um computador aprendesse a distinguir cartões marcados à esquerda dos cartões marcados à direita.

1974: Enquanto numerosos investigadores contribuíram para a ideia de retropropagação, Paul Werbos foi a primeira pessoa nos EUA a notar a sua aplicação dentro de redes neurais dentro da sua tese de doutoramento (PDF, 7.8 MB) (link reside fora da IBM).

1989: Yann LeCun publicou um artigo (PDF, 5.5K KB) (link reside fora da IBM) ilustrando como o uso de restrições na retropropagação e a sua integração na arquitectura de redes neurais pode ser usada para treinar algoritmos. Esta investigação aproveitou com sucesso uma rede neural para reconhecer dígitos de código postal manuscritos fornecidos pelo Serviço Postal dos EUA.

Rede neural e IBM Cloud

Há décadas que a IBM tem sido pioneira no desenvolvimento de tecnologias de IA e redes neuronais, destacando-se pelo desenvolvimento e evolução da IBM Watson. Watson é agora uma solução de confiança para empresas que procuram aplicar técnicas avançadas de processamento de linguagem natural e aprendizagem profunda aos seus sistemas, utilizando uma abordagem por níveis comprovada à adopção e implementação de IA.

Watson utiliza a estrutura Apache Unstructured Information Management Architecture (UIMA) e o software DeepQA da IBM para disponibilizar capacidades poderosas de aprendizagem profunda a aplicações. Utilizando ferramentas como o IBM Watson Studio e o Watson Machine Learning, a sua empresa pode trazer os seus projectos de IA de código aberto para a produção enquanto implementa e executa os seus modelos em qualquer nuvem.

Para mais informações sobre como começar com a tecnologia de aprendizagem profunda, explore o IBM Watson Studio.

Conecte-se com um IBMid e crie a sua conta IBM Cloud.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *