Perceptron
Ele é um modelo matemático na qual recebe várias entradas, representadas por x1, x2, … sendo que ele produz uma única saída binária.
Para fazer o calculo da saída se introduz pesos, w1, w2, …, números reais que representam a importância da entrada. A saída desse neurônio, 0 ou 1, é determinada pela soma ponderada, Σ jwjxj, menor ou maior que um valor limiar (threshold).
Threshold: um número real que é um parâmetro do neurônio.
Esse é o modelo matemático básico, Em resumo o Perceptron é um dispositivo que toma decisões ao comprovar evidências. Na qual variando os pesos e limiar, pode-se obter diferentes modelos de tomada de decisão.
O Perceptron não é um modelo completo de tomada de decisão humana, mas ilustra como ele pode pesar diferentes tipos de evidencias.
Então vemos que a entrada 00 produziria a saída 1, uma vez que (-2) * 0 + (- 2) * 0 + 3 = 3, é positivo (resultado positivo, gera saída 1 do Perceptron, lembra do capítulo anterior?). Aqui, incluímos o símbolo * para tornar as multiplicações explícitas. Cálculos similares mostram que as entradas 01 e 10 produzem a saída 1. Mas a entrada 11 produz a saída 0, uma vez que (-2) * 1 + (- 2) * 1 + 3 = -1, é negativo.
Função de ativação
O que queremos é que esta pequena mudança de peso cause apenas uma pequena alteração correspondente na saída da rede.
Sendo necessário o ajuste dos pesos de uma camada com a formula:
peso(n+1) = peso(n) + (TaxaAprendizagem * entrada * erro)
Suponhamos que tenhamos uma rede de Perceptrons que gostaríamos de usar para aprender a resolver algum problema. Por exemplo, as entradas para a rede poderiam ser os dados de pixel de uma imagem digitalizada, escrita à mão, de um dígito. Gostaríamos que a rede aprendesse pesos e bias para que a saída da rede classifique corretamente o dígito.
Sendo que ainda queremos as pequenas mudanças de pesos cause uma minima alteração na saída da rede, o problema é que isso não é o que acontece quando nossa rede contém apenas Perceptrons. De fato, uma pequena alteração nos pesos de um único Perceptron na rede pode, por vezes, fazer com que a saída desse Perceptron mude completamente, digamos de 0 a 1. Essa mudança pode então causar o comportamento do resto da rede mudar completamente de uma maneira muito complicada. Há uma maneira de resolver esse problema e é conhecida como função de ativação
Para torná-las capazes de modelar também relações não-lineares, os resultados de saída de cada camada deverá passar pelo processamento da função de ativação.
O principal motivo de sua utilização é conferir a capacidade não-linear ao processamento realizado pelas redes neurais, isso é especialmente importante nas camadas escondidas. Nas camadas de saída essa função tem finalidades específicas, dependendo do problema que ela esta tentando resolver.
Elas são um elemento muito importante das inteligências artificiais, na qual basicamente decidem se um neurônio deve ser ativado ou não, sendo que, ela define se a informação é relevante ou se deve ser ignorada.
AS PRINCIPAIS FUNÇÕES DE ATIVAÇÃO
FUNÇÃO LINEAR
Vendo o problema com a função anterior, o gradiente sendo 0 é impossível fazer a atualização do gradiente durante a backpropagation, em vez disso podemos usar uma função linear
f(x) = ax
A derivada de uma função linear é constante, isto é, não depende do valor de entrada x. Isso significa que toda vez que fazemos backpropagation, o gradiente seria o mesmo. Ou seja, não esta realmente melhorando o erro, levando em consideração que o gradiente é praticamente o mesmo.
SIGMÓIDE
Ela é amplamente utilizada.
f (x) = 1 / (1 + e ^ -x)
Se X for alto o valor será aproximadamente 1
Se X for pequeno o valor será aproximadamente 0
Ele não retorna valores negativos
A maior vantagem sobre a função de etapa e a função linear é que não é linear, isto significa essencialmente que quando eu tenho vários neurônios com função sigmóide como função de ativação – a saída também não é linear. A função varia de 0 a 1 tendo um formato S.
Com a sigmóide temos problemas quando os gradientes se tornam muito pequenos. Isso significa que o gradiente está se aproximando de zero e a rede não está realmente aprendendo. Nem sempre desejamos que os valores enviados ao próximo neurônio sejam todos do mesmo sinal.
TANH
Ela é muito semelhante à função sigmóide. Sendo uma versão escalonada da função sigmóide.
Tanh (x) = 2sigmoides (2x) -1
Podendo ser escrito diretamente como:
tanh (x) = 2 / (1 + e ^ (- 2x)) -1
Funciona de forma semelhante a função sigmóide, porém simétrico em relação a origem, variando de -1 a 1. Assim, soluciona o problema dos valores com eles não sendo do mesmo sinal. A função não é linear, então podemos fazer o backpropagation facilmente nos erros.
ReLU
Ela é uma unidade linear retificada.
f(x) = max (0, x)
É uma função de ativação mais amplamente utilizada ao projetar redes neurais atualmente, ela é não linear, podendo copiar os erros para trás e ter várias camadas de neurônios ativados por essa função.
A vantagem é que ela ativa todos os neurônios ao mesmo tempo, significando que se a entrada for negativa, ela será convertida em zero e o neurônio não será ativado. Isso significa que, ao mesmo tempo, apenas alguns neurônios são ativados, tornando a rede esparsa e eficiente e fácil para a computação.
também pode ter problemas com os gradientes que se deslocam em direção a zero. Mas quando temos um problema, sempre podemos pensar em uma solução.
LEAKY ReLU
Ela não passa de uma versão melhorada da função ReLU, o gradiente é 0 para x < 0, o que fez os neurônios morrerem por ativações nessa região.
f(x) = ax, x < 0
f(x) = x, x > = 0
SOFTMAX
Também é um tipo de função sigmóide, mas é útil quando tentamos lidar com problemas de classificação, essa função transforma as saídas para cada classe par valores entre 0 e 1 e também divide pela soma das saídas.
Digamos, por exemplo, que temos as saídas como [1.2, 0.9, 0.75], quando aplicamos a função softmax, obteríamos [0.42, 0.31, 0.27]. Então, agora podemos usá-los como probabilidades de que o valor seja de cada classe.
Referências
CECCON, D. Funções de ativação: definição, características, e quando usar cada uma – IA Expert Academy. Disponível em: https://iaexpert.academy/2020/05/25/funcoes-de-ativacao-definicao-caracteristicas-e-quando-usar-cada-uma/.
DSA, E. Capítulo 8 – Função de Ativação. Disponível em: https://www.deeplearningbook.com.br/funcao-de-ativacao/.
Arquitetura de Redes Neurais Artificiais – Blog Ateliware. Disponível em: https://blog.ateliware.com/redes-neurais-artificiais/.
ARAUJO, R. Perceptrons – Ricardo Araujo – Medium. Disponível em: https://ricardomatsumura.medium.com/perceptrons-f18935009a61#:~:text=O%20perceptron%20%C3%A9%20um%20modelo%20classificador%20bin%C3%A1rio%2C%20proposto%20por%20Frank.
Maqueise de Medeiros Pinheiro Perceptron Multicamadas: uma ferramenta de Aprendizado Supervisionado. [s.l: s.n.]. Disponível em: https://app.uff.br/riuff/bitstream/handle/1/26200/tcc_20211_MaqueiseDeMedeirosPinheiro_116054015.pdf?sequence=1&isAllowed=y.