Nengo

LIF neuron

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

Nengo 코드와 맞출 때 (Special thanks to 배용희 님 👑)

I(t)=IC+IR=Cdudt+uurestR\begin{align} I(t) &= I_{C} + I_{R} \\&= C {du \over dt} + {u-u_{rest} \over R} \end{align}
RCdudt=[uurest]+RI(t)RC {du \over dt} = -[u - u_{rest}]+RI(t)

인데 τ=RC,V=uurest\tau = RC, V = u - u_{rest}로 정리하면 τdVdt=V+RI(t)(1)\tau {dV \over dt} = -V + RI(t) \quad … (1)

퍼실 주: (non)homogeneous 나 ODE에 익숙하지 않다면 📈1-3-math. Ordinary Differential Equation 를 참고해주세요

여기서

i. homogeneous solution

I(t)=0I(t) = 0, homogeneous solution 을 구해보면(1) 식이 τdV dt= V\tau {dV  \over dt} =  -V 가 되어서, Vp=AetτV_p = Ae^{t \over \tau}

ii. nonhomogeneous solution

I(t)0I(t) \neq 0, nonhomogeneous solution 을 구해보면 τdV dt= V+RI(t)\tau {dV  \over dt} =  -V + RI(t)에서 τdV+(VRI(t))dt=0\tau dV + (V-RI(t))dt = 0 로 쓸 수 있는데 exact 하지 않으므로 integrating factor F(t)F(t) 를 곱하여 exact 하게 만들어보면

F(t)τdV+F(t)(VRI(t))dt=0F(t) \tau dV + F(t) (V-RI(t))dt = 0
  • 퍼실 주: Exact 란?
    [미분방정식] 3. 완전 미분방정식 - Exact Differential Equation
    미적분학 시간에 함수 $u(x,y)$ 가 연속인 편도함수를 가진다면, $u$의 미분은 다음과 같음을 배웠습니다. 이 때, $u(x,y) = const.$라면 $du = 0$ 이므로 다음과 같이 정리할 수 있습니다. 위 식을 치환을 통해 최종적으로 아래와 같이 간단하게 정리할 수 있습니다. 만약 식(*)이 다음과 같은 조건을 만족한다면, (*)은 완전 미분방정식, 혹은 exact differential equation이 됩니다.
    https://min-97.tistory.com/13
    du(x,y)=uxdx+uydydu(x, y) = {\partial u \over \partial x}dx + {\partial u \over \partial y}dy

    위가 total differential 이고,

    M(x,y)dx+N(x,y)dy=0whereM(x,y)=ux,N(x,y)=uyM(x, y) dx + N(x, y)dy = 0 \\ \text{where} \quad M(x, y) = {\partial u \over \partial x}, \quad N(x, y) = {\partial u \over \partial y}

    이때,

    M(x,y)y=uyx,N(x,y)x=uxy,M(x,y)y=N(x,y)x(1){\partial M(x, y) \over \partial y}= {\partial u \over \partial y\partial x}, \\ {\partial N(x, y) \over \partial x}= {\partial u \over \partial x\partial y}, \\ {\partial M(x, y) \over \partial y}={\partial N(x, y) \over \partial x} \quad \cdots (1)

    (1) 이 성립하면 exact differential equation 이라고 판단할 수 있다.

    그리고

    M(x,y)dx+N(x,y)dy=du=uxdx+uydyM(x, y) dx + N(x, y)dy = du = u_xdx + u_ydy

    를 만족하면 exact 하다고 한다.

    이때, 적분을 수행하면 미분 방정식을 풀어낼 수 있다

    M(x,y)=ux=>u=Mdx+k(y)M(x,y) = {\partial u \over \partial x} \\ => u = \int M dx + k(y)

    e. g. cos(x+y)dx+(3y2+2y+cos(x+y))dy=0cos(x+y)dx + (3y^2+2y+cos(x+y))dy=0의 해를 구하시오

    M=cos(x+y),N=3y2+2y+cos(x+y)My=sin(x+y)=Nx=sin(x+y)exact!M = cos(x+y), \quad N = 3y^2+2y+cos(x+y) \\ {\partial M \over \partial y} = -sin(x+y) = {\partial N \over \partial x} = -sin(x+y) \Rightarrow \text{exact!}
    u=Mdx+k(y)=cos(x+y)dx+k(y)=sin(x+y)+k(y)\begin {split} u & = \int Mdx + k(y) \\ & = \int cos(x+y)dx + k(y) \\ & = sin(x+y) +k(y) \end {split}
    uy=cos(x+y)+k(y)=N=3y2+2y+cos(x+y)k(y)=3y2+2yk(y)=y3+y2+cu=sin(x+y)+y3+y2+c{\partial u \over \partial y} = cos(x+y) +k'(y) = N = 3y^2+2y+cos(x+y) \\ \Rightarrow k'(y) = 3y^2 + 2y \\ k(y) = y^3 + y^2 + c \\ \Rightarrow u = sin(x+y) + y^3 + y^2 + c

Exact 한다면

t(F(t)τ)=V(F(t)(VRI(t)) {\partial \over \partial t} ( F(t) \tau) = {\partial \over \partial V} (F(t) (V-RI(t)) 

이 식을 만족해야하므로 τF(t) =F(t)\tau F’(t)  = F(t) 을 만족하는 F(t)중에 F(t)=etτF(t) = e^{t \over \tau} 를 고를 수 있다.

다시 (1) 식으로 돌아와서 F(t)F(t)를 곱하면

τetτdVdt+etτV=etτRI(t)ddt(τetτV)=etτRI(t)(a)tddt(τetτV)dt=tetτRI(t)dt(b)τetτV=tetτRI(t)dt(c)\tau e^{t \over \tau} {dV \over dt} + e^{t \over \tau} V = e^{t \over \tau} R I(t) \\ {d \over dt} (\tau e^{t \over \tau} V) = e^{t \over \tau} R I(t) \quad \cdots (a) \\ \int_{-\infty}^t {d \over dt'} (\tau e^{t' \over \tau} V) dt'= \int_{-\infty}^t e^{{t’ \over \tau}} R I(t’) dt’ \quad \cdots (b) \\ \tau e^{t \over \tau} V = \int_{-\infty}^t e^{{t’ \over \tau}} R I(t’) dt’ \quad \cdots (c)

위에서 (a) → (c)로 점프가 어떻게 된거지? ⇒ (b) 과정을 추가해서 편집 완료

  1. 적분 상수로 생각하라?
  1. Conductor 이다 보니 이전 state 도 모두 고려해야 한다?
  1. (b) 의 RHS 는 어떻게 보면 exe^x 에 대한 식이다. 얘의 그래프를 생각해보면 어차피 맨 왼쪽에서부터는 0이다.

따라서 nonhomogeneous solution VhV_{h}

Vh=1Ct e(tt)τ I(t)dtV_{h} = {1 \over C} \int_{-\infty}^t  e^{-{(t-t’) \over \tau}}  I(t’) dt’

i) ,ii) 에서 구한 solution 합이 식 (1) 의 최종 solution이 되므로

V=Vp+Vh=Aetτ+1Cte(tt)τI(t)dt(2)\begin{align} V &= V_{p} + V_{h} \\ &= Ae^{t \over \tau} + {1 \over C} \int_{-\infty}^t e^{-{(t-t’) \over \tau}} I(t’) dt’ \quad …(2) \end{align}

이제 I(t)I(t) 의 상황을 가정해보자.

I(t)={0 ift0 I0 ift>0I(t) = \begin{cases} 0 \quad\quad  if\,\, t \le 0 \\  I_{0} \quad\quad  if \,\, t>0 \end{cases}

(2)식에 I(t)I(t) 를 대입하면,

V=Aetτ+1C0te(tt)τI0dt=Aetτ+I0C[τe(tt)τ]t=0t=t=Aetτ+I0τC(1etτ)=Aetτ+I0R(1etτ)\begin{align} V &= Ae^{t \over \tau} + {1 \over C} \int_{0}^t e^{-{(t-t’) \over \tau}} I_{0} dt’ \\ &= Ae^{t \over \tau} + {I_{0} \over C} [ \tau e^{-{(t-t’) \over \tau}} ]^{t’=t}_{t’=0} \\ & = Ae^{t \over \tau} + {I_{0} \tau \over C}(1- e^{-{t \over \tau}}) \\ &= Ae^{t \over \tau} + {I_{0} R}(1- e^{-{t \over \tau}}) \end{align}

여기서 boundary condition 으로 V(0)=V0V(0) = V_{0} 를 넣으면 A=V0A = V_{0} 이 된다.

최종식은

V=V0etτ+I0R(1etτ)= V0+(I0RV0)(1etτ) (3)\begin{align} V & = V_{0}e^{t \over \tau} + {I_{0} R}(1- e^{-{t \over \tau}}) \\ &=  V_{0} + {(I_{0} R- V_{0})}(1- e^{-{t \over \tau}})  \quad …(3) \end{align}

따라서 최종식 (3) 식과 nengo 코드가 같음을 알 수 있습니다.

# update voltage using discretized lowpass filter
# since v(t) = v(0) + (J - v(0))*(1 - exp(-t/tau)) assuming
# J is constant over the interval [t, t + dt)
voltage -= (J - voltage) * np.expm1(-delta_t / self.tau_rc)


Uploaded by N2T