Pages

Funções de ativação para redes Neurais

Tuesday, December 30, 2008

Nos posts anteriores, discutiu-se sobre as redes neurais diretas (feedFoward) Perceptron e Adaline e suas limitações em relação à solução de problemas não linearmente separáveis. Se é necessário resolver este tipo de problema, então precisa-se de uma rede neural mais sofisticada, isto é, precisa-se de uma rede neural com mais camadas de neurônios. Entretanto, se realmente for utilizar desse artifício, como treinamos este tipo de rede multi-camadas ?

Até agora, foram utilizados apenas erros observados pelas saídas dos neurônios através do ajustes sucessivos dos pesos entre a camada de entrada e a de saída (2 camadas apenas). Mas, se for adicionada mais uma camada intermediaria entre elas, uma camada escondida ?

Bom, de toda maneira ainda é necessário ter o processo de retro-alimentação do erro de volta à rede neural, de forma que possam ser ajustados os pesos. E aí está o problema.


Multi Layer Perceptron


Atualmente, o neurônio ou está "ligado" ou "desligado", o que significa que a sua função de ativação é controlada por um limiar que determina a mudança dos estados do neurônio.

Threshold Function

def function(output):
if output >= 0:
return 1
else:
return -1

Plotando o gráfico representando a função acima, pode-se ver as linhas vermelha (representando a sua derivada) e a linha azul (representando a função).


Threshold Graph


Quaisquer ajustes feitos nos pesos que alimentam a camada escondida com uso desta função terão efeitos não tão eficientes e limitados, devido a sua descontinuidade acentuada . É necessário trocar a função de limiar (threeshold function) por algo melhor, que tenha uma transição mais suave. Pode-se utilizar então, a função sigmóide representada pela equação abaixo:


Sigmoid Function


def sigmoid(output):
return 2/ (1 + math.exp(-2 * output))

E sua derivada:

f'(x) = 1 - f(x)2


def sigmoidDerivative(output):

x = sigmoid(output)

return 1 - (math.pow(x,2))



Plotando os gráficos das funções acima representadas, temos:

Sigmoid Graph

Pode-se observar que a transição agora entre os valores 1 e -1 é mais suave e contínua e sua derivada tende ao infinito. Esta função é muito popular entre diversos desenvolvedores de redes neurais, porém alguns utilizam uma versão modificada deste. Variando os limites da função de 0 até 1 (em vez de -1 a 1) tem o benefício de ser computacionalmente menos custoso e interessante quando aplicado em redes neurais de grande dimensão.


Para isso, utiliza-se a função:


Sigmoid Function

def sigmoid(output):
return 2/ (1 + math.exp(-output))

E sua derivada:

f'(x) = f(x)(1 - f(x))


def sigmoidDerivative(output):

x = sigmoid(output)

return x * ( 1 - x)



Plotando-se o gráfico, obtemos:


Sigmoid Graph

No próximo post, será utilizada esta função sigmóide como função de ativação no desenvolvimento e aplicação de uma rede neural Perceptron de múltiplas camadas (Multi Layer Perceptron - MLP) treinada com o algoritmo Back Propagation.

6 comments:

  1. Embedded system training: Wiztech Automation Provides Excellent training in embedded system training in Chennai - IEEE Projects - Mechanical projects in Chennai Wiztech provide 100% practical training, Individual focus, Free Accommodation, Placement for top companies. The study also includes standard microcontrollers such as Intel 8051, PIC, AVR, ARM, ARMCotex, Arduino etc.

    Embedded system training in chennai
    Embedded Course training in chennai
    Matlab training in chennai
    Android training in chennai
    LabVIEW training in chennai
    Arduino training in chennai
    Robotics training in chennai
    Oracle training in chennai
    Final year projects in chennai
    Mechanical projects in chennai
    ece projects in chennai

    ReplyDelete
  2. WIZTECH Automation, Anna Nagar, Chennai, has earned reputation offering the best automation training in Chennai in the field of industrial automation. Flexible timings, hands-on-experience, 100% practical. The candidates are given enhanced job oriented practical training in all major brands of PLCs (AB, Keyence, ABB, GE-FANUC, OMRON, DELTA, SIEMENS, MITSUBISHI, SCHNEIDER, and MESSUNG)

    PLC training in chennai
    Automation training in chennai
    Best plc training in chennai
    PLC SCADA training in chennai
    Process automation training in chennai
    Final year eee projects in chennai
    VLSI training in chennai

    ReplyDelete

  3. for preparing bank exam and group exam , we are providing an online test model questions papers

    Bank Exam Questions and Answers

    Group Exam Questions and Answers

    ReplyDelete
  4. Quando se usa a derivada da sigmoid?

    ReplyDelete
  5. Acho que é no backpropagation...quando faz o caminho inverso para corrigir os pesos.

    ReplyDelete