Nengo

nengo 5주차

건강검진진료 2022. 6. 14. 00:02

PES 논문 - 잡생각

기존 PES 논문은 좀 수학적으로 weight upadate 가 수렴하는지 증명이 주된 내용인거 같음.

PES 가 error 가 적어지는 방향으로 갈꺼는 자명한데, 3가지 의문이 생겼다.

  1. layer가 쌓이면 어떻게 되는지?
  1. biological plausible 한지? (backpropagation 과는 다르게 SNN에 적용되는 rule은 biological plausible 해야한다고 생각함.)
  1. rate coding 안쓰고 temporal coding으로도 가능한지?

1,3 답은 아직 모르겠지만,

2에 대하여 생각해보았다. (완벽답변x)

일단 어느정도 대응되는 개념인 backpropagation에 대하여 논하면, backpropagation 은 실제 뇌에도 일어나는지 의견이 분분하다. 내 느낌상 negative 쪽이 훨씬 더 많고 내 생각도 direct 하게는 일어나지 않을꺼라 생각한다. 일단 backpropagation이 일어나지 않을꺼라고 많이 이야기 하는 이유는, biologically plausible 하지 않기 때문이다. 대표적 이유로는

  1. global 하게 적용은 비실제적
  1. 실제 synpase는 단방향
  1. label 문제 → 누가 label을 어디서 정해주나
  1. 타이밍 및 스파이크 문제

(물론 실제 action potential 의 backpropagtion 현상도 있고 chemically feedback 등이 있어서 가능할 수도 있다.)

PES 는 backpropagation 과 다를까?

아래 링크에 어느정도 답변이 되어있다.

Why is PES biologically plausible?
begingroup$ For a learning rule to be biologically plausible, it has to only depend on knowledge/information local to the neuron (no global information about the neuron population) and has to match experimental neuroscience data.
https://psychology.stackexchange.com/questions/17386/why-is-pes-biologically-plausible

backpropagation 처럼 global 한 느낌이 아니라 local 느낌이라 좀더 biologically plausible 하다는 내용이다.

어느정도 맞긴하지만 어찌됐든 PES는 실험적 으로 관측되지 않은 내용이고, backpropagtion 보다는 좀 더 plausible 하지만 error vector 와, label 들이 plausible 하지 않은거 같아서 잘 모르겠다.

그래도 아래 논문을 보면

PES + BCM learning rule ⇒ homostatic PES (hPES) rule 로 정의해서

STDP 는 물론 triplet STDP 까지 이론적으로 동등함을 이야기 하고 있다.

이 논문을 읽고 실험으로도 관측된 learning 현상인 STDP 와 근접한 결과를 보고 조금 마음이 열리게 되었다.

PES code

🔥
nengo.Connection(pre, error, transform=-1)

transform = -1 대신 function lambda x: -x 사용해도 괜찮은지 check

→ 괜찮음.

(+PES 대신 RLS 와 비교하고자 하였으나 내 생각대로 안되어서 일단 나중에)

  • code
    model2 = nengo.Network()
    with model2:
        inp = nengo.Node(WhiteSignal(60, high=5), size_out=1) #input
        pre = nengo.Ensemble(60, dimensions=2)
    
        nengo.Connection(inp, pre[0])
        nengo.Connection(inp, pre[1])
    
        post = nengo.Ensemble(60, dimensions=2)
        
        conn = nengo.Connection(pre, post, function=lambda x: np.repeat(np.random.random(1),2))
        inp_p = nengo.Probe(inp)
        pre_p = nengo.Probe(pre, synapse=0.01)
        post_p = nengo.Probe(post, synapse=0.01)
    
    
        error = nengo.Ensemble(60, dimensions=2)
        error_p = nengo.Probe(error, synapse=0.03)
    
        nengo.Connection(post, error)
        nengo.Connection(pre[0], error[0], function=lambda x: -x)
        nengo.Connection(pre[1], error[1], transform=-1)
    
        conn.learning_rule_type = nengo.PES()
    
        nengo.Connection(error, conn.learning_rule)
    
    with nengo.Simulator(model2) as sim2:
        sim2.run(10.0)
    
    plt.figure(figsize=(16, 12))
    plt.subplot(2, 2, 1)
    plt.plot(sim2.trange(), sim2.data[inp_p].T[0], c='k', label='Input')
    plt.plot(sim2.trange(), sim2.data[pre_p].T[0], c='b', label='Pre')
    plt.plot(sim2.trange(), sim2.data[post_p].T[0], c='r', label='Post')
    plt.ylabel("function = lambda x: -x")
    plt.legend(loc='best')
    
    plt.subplot(2, 2, 2)
    plt.plot(sim2.trange(), sim2.data[error_p].T[0], c='b')
    plt.ylim(-1, 1)
    plt.legend(("Error[0]"), loc='best')
    
    plt.subplot(2, 2, 3)
    plt.plot(sim2.trange(), sim2.data[inp_p].T[0], c='k', label='Input')
    plt.plot(sim2.trange(), sim2.data[pre_p].T[1], c='b', label='Pre')
    plt.plot(sim2.trange(), sim2.data[post_p].T[1], c='r', label='Post')
    plt.ylabel("transform = -1")
    plt.legend(loc='best')
    
    plt.subplot(2, 2, 4)
    plt.plot(sim2.trange(), sim2.data[error_p].T[1], c='b')
    plt.ylim(-1, 1)
    plt.legend(("Error[1]"), loc='best')

nengo_dl

tensorflow keras에 LIF neuron만 추가된거같아 흠...

maxpooling 안했넹

  • LIF neuron 은 단지 activation function 같은 느낌으로 쓰는 느낌인데, input → frequency 로 바꾸는 rate coding 이겠죠...?

    → rate coding 확인.

  • LIF neuron은 미분이 안될텐데, 어떻게 gradient descent 기반 weight update 를 하는건지?

    → 현우님이 NEF를 정리해주시면서 LIF tuning curve가 activation function 처럼 사용되는것을 알게됌.

  • 기존 CNN 과 다르게 특별한 점이 있나...?


Uploaded by N2T