<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Heloísa Ribeiro da Silva</title>
    <description>The latest articles on DEV Community by Heloísa Ribeiro da Silva (@heloisa_ribes).</description>
    <link>https://dev.to/heloisa_ribes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1682513%2F088c500e-20e1-4a23-9aeb-e105479ce465.jpg</url>
      <title>DEV Community: Heloísa Ribeiro da Silva</title>
      <link>https://dev.to/heloisa_ribes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/heloisa_ribes"/>
    <language>en</language>
    <item>
      <title>Perceptron | Função de ativação</title>
      <dc:creator>Heloísa Ribeiro da Silva</dc:creator>
      <pubDate>Wed, 24 Jul 2024 00:26:34 +0000</pubDate>
      <link>https://dev.to/heloisa_ribes/perceptron-funcao-de-ativacao-39ak</link>
      <guid>https://dev.to/heloisa_ribes/perceptron-funcao-de-ativacao-39ak</guid>
      <description>&lt;h2&gt;
  
  
  Perceptron
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6391cx87l37t3vm3uh0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6391cx87l37t3vm3uh0.png" alt="Image description" width="372" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Threshold: um número real que é um parâmetro do neurônio.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk79gukku02c7okk3banr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk79gukku02c7okk3banr.png" alt="Image description" width="493" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;O Perceptron não é um modelo completo de tomada de decisão humana, mas ilustra como ele pode pesar diferentes tipos de evidencias.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;h2&gt;
  
  
  Função de ativação
&lt;/h2&gt;

&lt;p&gt;O que queremos é que esta pequena mudança de peso cause apenas uma pequena alteração correspondente na saída da rede.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F901qhlbu70ttubaw1fts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F901qhlbu70ttubaw1fts.png" alt="Image description" width="419" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sendo necessário o ajuste dos pesos de uma camada com a formula:&lt;br&gt;
peso(n+1) = peso(n) + (TaxaAprendizagem * entrada * erro)&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mqt9b9ibshgem6a0mw5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mqt9b9ibshgem6a0mw5.png" alt="Image description" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;h2&gt;
  
  
  AS PRINCIPAIS FUNÇÕES DE ATIVAÇÃO
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;FUNÇÃO LINEAR&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;f(x) = ax&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;SIGMÓIDE&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ela é amplamente utilizada.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;f (x) = 1 / (1 + e ^ -x)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd38fk5dftwz19b7v34yn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd38fk5dftwz19b7v34yn.png" alt="Image description" width="453" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se X for alto o valor será aproximadamente 1&lt;/p&gt;

&lt;p&gt;Se X for pequeno o valor será aproximadamente 0&lt;/p&gt;

&lt;p&gt;Ele não retorna valores negativos&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;TANH&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ela é muito semelhante à função sigmóide. Sendo uma versão escalonada da função sigmóide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tanh (x) = 2sigmoides (2x) -1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Podendo ser escrito diretamente como:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tanh (x) = 2 / (1 + e ^ (- 2x)) -1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;ReLU&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ela é uma unidade linear retificada. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;f(x) = max (0, x)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;É 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;LEAKY ReLU&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ela não passa de uma versão melhorada da função ReLU, o gradiente é 0 para x &amp;lt; 0, o que fez os neurônios morrerem por ativações nessa região.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;f(x) = ax, x &amp;lt; 0&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;f(x) = x, x &amp;gt; = 0&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;SOFTMAX&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4v1wspm6f83pttzzkv3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4v1wspm6f83pttzzkv3.png" alt="Image description" width="274" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;




&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;‌CECCON, D. Funções de ativação: definição, características, e quando usar cada uma – IA Expert Academy. Disponível em: &lt;a href="https://iaexpert.academy/2020/05/25/funcoes-de-ativacao-definicao-caracteristicas-e-quando-usar-cada-uma/" rel="noopener noreferrer"&gt;https://iaexpert.academy/2020/05/25/funcoes-de-ativacao-definicao-caracteristicas-e-quando-usar-cada-uma/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;DSA, E. Capítulo 8 - Função de Ativação. Disponível em: &lt;a href="https://www.deeplearningbook.com.br/funcao-de-ativacao/" rel="noopener noreferrer"&gt;https://www.deeplearningbook.com.br/funcao-de-ativacao/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;‌Arquitetura de Redes Neurais Artificiais - Blog Ateliware. Disponível em: &lt;a href="https://blog.ateliware.com/redes-neurais-artificiais/" rel="noopener noreferrer"&gt;https://blog.ateliware.com/redes-neurais-artificiais/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;ARAUJO, R. Perceptrons - Ricardo Araujo - Medium. Disponível em: &lt;a href="https://ricardomatsumura.medium.com/perceptrons-f18935009a61#:%7E:text=O%20perceptron%20%C3%A9%20um%20modelo%20classificador%20bin%C3%A1rio%2C%20proposto%20por%20Frank" rel="noopener noreferrer"&gt;https://ricardomatsumura.medium.com/perceptrons-f18935009a61#:~:text=O%20perceptron%20%C3%A9%20um%20modelo%20classificador%20bin%C3%A1rio%2C%20proposto%20por%20Frank&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Maqueise de Medeiros Pinheiro Perceptron Multicamadas: uma ferramenta de Aprendizado Supervisionado. [s.l: s.n.]. Disponível em: &lt;a href="https://app.uff.br/riuff/bitstream/handle/1/26200/tcc_20211_MaqueiseDeMedeirosPinheiro_116054015.pdf?sequence=1&amp;amp;isAllowed=y" rel="noopener noreferrer"&gt;https://app.uff.br/riuff/bitstream/handle/1/26200/tcc_20211_MaqueiseDeMedeirosPinheiro_116054015.pdf?sequence=1&amp;amp;isAllowed=y&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;‌&lt;/p&gt;

&lt;p&gt;‌&lt;br&gt;
‌&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
