跳轉到內容

感覺系統/計算機模型/神經模擬

來自華夏公益教科書,開放的書籍,為開放的世界

視覺系統模擬

模擬動作電位

[編輯 | 編輯原始碼]

動作電位

[編輯 | 編輯原始碼]

“動作電位”是神經系統中用於傳播訊號的典型電壓變化。

動作電位 - 時間依賴性

使用下面描述的機制,傳入的刺激(任何型別的)會導致神經細胞的電壓電位發生變化。在達到一定閾值之前,這就是全部內容(圖 4 中的“失敗啟動”。但當電壓門控離子通道的閾值達到時,它會引起幾乎立即完全開啟 Na+ 離子通道的反饋反應(“去極化”):這會達到 Na+ 滲透性(在靜息狀態下約為 K+ 滲透性的 1%)比 K+ 大 20 倍的點。因此,電壓從大約 -60mV 上升到大約 +50mV。在這一點上,內部反應開始關閉(並阻塞)Na+ 通道,並開啟 K+ 通道以恢復平衡狀態。在此“不應期”期間(約 1 毫秒),任何去極化都不能引起動作電位。只有當達到靜息狀態時,才能觸發新的動作電位。

為了模擬動作電位,我們首先必須定義細胞膜的不同元素,以及如何以分析方式描述它們。

細胞膜

[編輯 | 編輯原始碼]

細胞膜由一層疏水、幾乎不可滲透的蛋白質雙層組成,即細胞膜。訊號處理的真正力量不是來自細胞膜,而是來自嵌入該膜中的離子通道。離子通道是嵌入細胞膜中的蛋白質,它們可以選擇性地為某些型別的離子開啟。(這種選擇性是透過組成離子通道的氨基酸的幾何排列實現的。)除了上面提到的 Na+ 和 K+ 離子外,神經系統中通常發現的離子是陽離子 Ca2+、Mg2+ 和陰離子 Cl-。

離子通道狀態

[編輯 | 編輯原始碼]

離子通道可以處於三種狀態之一

  • 開啟(例如,開啟的 Na 通道可以讓 Na+ 離子透過,但會阻塞所有其他型別的離子)。
  • 關閉,但可以選擇開啟。
  • 關閉,無條件。

靜息狀態

[編輯 | 編輯原始碼]

典型預設情況 - 當沒有任何事情發生時 - 的特點是 K+ 是開啟的,而其他通道是關閉的。在這種情況下,兩種力量決定了細胞電壓

  • K+ 的細胞內和細胞外濃度之間的(化學)濃度差,這種濃度差是由上述離子泵的持續活動產生的。
  • 細胞內部和外部之間的(電)電壓差。

平衡由能斯特方程定義

R ... 氣體常數,T ... 溫度,z ... 離子價態,F ... 法拉第常數,[X]o/i … 離子濃度(外/內)。在 25° C 時,RT/F 為 25 mV,導致靜息電位為

在典型的 K+ 濃度下,神經元內外,這將產生 。如果同時考慮 K+、Na+ 和 Cl- 的離子通道,則平衡狀態可以用戈德曼方程來描述

其中 Pi 表示離子“i”的滲透性,I 表示濃度。使用典型的離子濃度,細胞在其靜息狀態下具有大約 -60 mV 的負極性。

離子通道的啟用

[edit | edit source]

離子通道的一個重要特點是,它們的滲透性可以透過以下方式改變:

  • 機械刺激(機械門控離子通道)
  • 化學刺激(配體門控離子通道)
  • 或外部電壓(電壓門控離子通道)
  • 有時離子通道直接連線兩個細胞,在這種情況下,它們被稱為間隙連線通道。

重要

  • 感覺系統本質上是基於離子通道的,這些離子通道被機械刺激(壓力、聲音、運動)、化學刺激(味覺、嗅覺)或電磁刺激(光)啟用,併產生“神經訊號”,即神經細胞中的電壓變化。
  • 動作電位利用電壓門控離子通道,快速可靠地改變神經元的“狀態”。
  • 神經細胞之間的交流主要使用由神經遞質啟用的離子通道,即前一個神經元在突觸處釋放的化學物質。這為神經訊號的處理提供了最大的靈活性。

模擬電壓依賴性離子通道

[edit | edit source]

歐姆定律將電阻器的電阻 R 與它透過的電流 I 和電阻器兩端的電壓降 V 聯絡起來

或者

其中 是電阻器的電導。如果你現在假設電導與通道處於開放構象的機率成正比,那麼這個方程就變成了

其中 是通道的最大電導率,而 是通道處於開放構象的機率。

示例:K通道

電壓門控鉀離子通道 (Kv) 只能處於開放或關閉狀態。設 α 為通道從關閉狀態到開放狀態的速率,β 為通道從開放狀態到關閉狀態的速率。

由於 n 是通道處於開放狀態的機率,通道處於關閉狀態的機率必須為 (1-n),因為所有通道都處於開放或關閉狀態。因此,可以使用以下公式來描述通道構象的變化

請注意,α 和 β 是電壓相關的!1952 年,霍奇金和赫胥黎使用一種名為“電壓鉗制”的技術來確定這些速率,並得出了類似於以下的公式

如果您只想對電壓門控鉀離子通道進行建模,則這些將是開始使用的方程式。(對於電壓門控鈉通道,方程式會更難,因為這些通道有三種可能的構象:開放、關閉和失活。)

霍奇金-赫胥黎方程式

[edit | edit source]

上述提到的電壓門控離子通道的反饋迴路使得很難確定它們的精確行為。在第一近似中,動作電位的形狀可以透過分析神經元單個軸突隔室的電路來解釋,該電路包含以下元件:1)Na 通道,2)K 通道,3)Cl 通道,4)洩漏電流,5)膜電容, 

Circuit diagram of neuronal membrane based on Hodgkin and Huxley model.

霍奇金-赫胥黎模型中原始的最終方程式,其中氯離子和其它洩漏電流合併,如下所示

霍奇金-赫胥黎模型的尖峰行為。

其中 是描述膜通透性的時間和電壓相關函式。例如,對於 K 通道,n 遵循上面描述的方程式,這些方程式是透過電壓鉗制實驗確定的。這些方程式可以高精度地描述動作電位的形狀和傳播!該模型可以使用開源工具輕鬆求解,例如 Python 動態系統工具箱 *PyDSTools*。一個簡單的求解檔案可在 [1] 下獲得,輸出如下所示。

[編輯 | 編輯原始碼]

動作電位產生的模型:菲茨休-納格莫模型

[編輯 | 編輯原始碼]
菲茨休-納格莫模型的相平面圖,其中 (a=0.7, b=0.8, c=3.0, I=-0.4)。圖中顯示了四個不同起始條件下的解。虛線表示零斜率曲線,“o”表示模型的固定點。I=-0.2 將是閾值以下的刺激,導致穩定狀態。而 I=-1.6 將使神經元超極化,也導致另一種不同的穩定狀態。

霍奇金-赫胥黎模型有四個動態變數:電壓 ,K 通道開啟的機率,,Na 通道在先前處於關閉狀態時開啟的機率,,以及 Na 通道在先前處於非活動狀態時開啟的機率,。神經元動作電位產生的簡化模型是菲茨休-納格莫 (FN) 模型。與霍奇金-赫胥黎模型不同,FN 模型只有兩個動態變數,將變數 合併成單個變數 ,並將變數 合併成單個變數

以下兩個例子來自 I 是注入神經元的外部電流。由於 FN 模型只有兩個動態變數,因此可以使用相平面方法探索其完整動力學(此處提供 Python 中的示例解決方案[2])。

模擬具有正反饋的單個神經元

[編輯 | 編輯原始碼]

以下兩個例子來自 [3] 。這本書對模擬簡單神經系統進行了極好的介紹,並對潛在的資訊處理提供了很好的理解。

Simple neural system with feedback.

首先,讓我們看一下單個神經元的響應,其輸入為 ,並且具有對其自身的反饋。輸入的權重為 ,反饋的權重為 。神經元的響應 由以下給出

這表明即使是非常簡單的模擬也能捕獲真實神經元的資訊處理特性。

系統對輸入脈衝的輸出:一個“洩漏積分器”
""" Simulation of the effect of feedback on a single neuron """

import numpy as np
import matplotlib.pylab as plt

# System configuration
is_impulse = True   # 'True' for impulse, 'False' for step
t_start = 11        # set a start time for the input     
n_steps = 100       
v = 1               # input weight
w = 0.95            # feedback weight

# Stimulus
x = np.zeros(n_steps)
if is_impulse:     
    x[t_start] = 1  # then set the input at only one time point
else:               
    x[t_start:] = 1 # step input
    
# Response
y = np.zeros(n_steps)           # allocate output vector 
for t in range(1, n_steps):     # at every time step (skipping first) 
    y[t] = w*y[t-1] + v*x[t-1]  # compute the output 

# Plot the results
time = np.arange(n_steps)
fig, axs = plt.subplots(2, 1, sharex=True)

axs[0].plot(time, x)
axs[0].set_ylabel('Input')
axs[0].margins(x=0)

axs[1].plot(time, y)
axs[1].set_xlabel('Time Step')
axs[1].set_ylabel('Output')

plt.show()

模擬一個簡單的神經系統

[edit | edit source]

即使是非常簡單的神經系統也能表現出令人驚訝的多功能行為。一個例子是 Wilson 對蝗蟲飛行中央模式發生器的模型。在這裡,系統由以下描述

W 是連線矩陣,描述了神經元的迴圈連線,並描述了系統的輸入。

輸入 x 以權重 vi 連線到單元 yi (i=1,2,3,4),單元 y_l (l = 1,2,3,4) 以權重 w_kl 連線到單元 y_k (k = 1,2,3,4)。為了清晰起見,沒有顯示 y2 和 y3 的自連線,並且沒有標記各個前向和迴圈權重。基於 Tom Anastasio 的優秀著作“神經系統建模教程”。
代表運動神經元的單元在 Wilson 的蝗蟲飛行中央模式發生器 (CPG) 模型的線性版本中的響應:一個簡單的輸入脈衝會在神經元 2 和 3 中引起持續的拮抗振盪。
""" 'Recurrent' feedback in simple network:
linear version of Wilson's locust flight central pattern generator (CPG) """

import numpy as np
import matplotlib.pylab as plt

# System configuration
v = np.zeros(4)                     # input weight matrix (vector)
v[1] = 1

w1 = [  0.9,  0.2,    0,     0]     # feedback weights to unit one
w2 = [-0.95,  0.4, -0.5,     0]     # ... to unit two
w3 = [    0, -0.5,  0.4, -0.95]     # ... to unit three
w4 = [    0,    0,  0.2,  0.9 ]     # ... to unit four
W = np.vstack( [w1, w2, w3, w4] )   

n_steps = 100              

# Initial kick, to start the system
x = np.zeros(n_steps)               # zero input vector
t_kick = 11                
x[t_kick] = 1              

# Simulation
y = np.zeros( (4,n_steps) )         # zero output vector
for t in range(1,n_steps):          # for each time step
    y[:,t] = W @ y[:,t-1] + v * x[t-1]  # compute output

# Show the result
time = np.arange(n_steps)     
plt.plot(time, x, '-', label='Input')
plt.plot(time, y[1,:], ls='dashed', label = 'Left Motorneuron')
plt.plot(time, y[2,:], ls='dotted', label='Right Motorneuron')

# Format the plot
plt.xlabel('Time Step')
plt.ylabel('Input and Unit Responses')
plt.gca().margins(x=0)
plt.tight_layout()
plt.legend()
plt.show()

神經形態電路的開發和理論

[edit | edit source]

介紹

[edit | edit source]

神經形態工程使用超大規模整合 (VLSI) 系統來構建模擬和數位電路,模擬神經生物結構和行為。大多數現代電路主要利用數位電路元件,因為它們速度快、精度高且對噪聲不敏感。與更具生物學意義的類比電路不同,數位電路需要更高的電源,並且不能進行平行計算。生物神經元的行為,例如膜洩漏和閾值約束,是材料基底引數的函式,需要模擬系統來建模和微調,超出了數字 0/1。本文將簡要概述此類神經形態電路及其類比電路元件背後的理論。

神經形態工程的最新事件

[edit | edit source]

在過去 10 年中,神經形態工程 領域經歷了快速上升,並受到媒體和科學界的廣泛關注。

在該主題引起歐盟委員會關注後,人類大腦專案於 2013 年啟動,在十年內獲得 6 億歐元的資金。該專案的目的是從分子和神經元水平到神經迴路模擬人腦。該專案計劃於 2023 年 9 月結束,儘管主要目標尚未實現,但它提供了至少 200 個大腦區域的詳細 3D 地圖和超級計算機來模擬記憶和意識等功能,以及其他事物 [4]。另一個主要成果是 EBRAINS 虛擬平臺,於 2019 年推出。它提供了一套工具和影像資料,全球科學家可以利用這些工具和資料進行模擬和數字實驗。

同樣在 2013 年,美國國立衛生研究院宣佈為旨在重建大量神經元活動的 BRAIN 專案提供資金。該專案正在進行,截至 2023 年已撥款 6.8 億美元。

近年來取得的其他重大成果列舉如下

1. TrueNorth 晶片 (IBM,2014):總共 2.68 億個可程式設計突觸

2. Loihi 晶片 (英特爾,2017):基於非同步神經尖峰網路 (SNN) 的自適應事件驅動平行計算。它在 2021 年被 Loihi2 取代。

3. 原型晶片 (IMEC,2017):首個基於 OxRAM 技術的自學習神經形態晶片

4. Akida AI 處理器開發套件 (Brainchip,2021):首個商用神經形態處理器

電晶體結構和物理

[edit | edit source]

金氧半導體場效應電晶體 (MOSFET) 是現代積體電路的常見元件。MOSFET 被歸類為單極型器件,因為每個電晶體只利用一種載流子型別;負型 MOFET (nFET) 的載流子為電子,正型 MOSFET (pFET) 的載流子為空穴。

n 型 MOSFET 的橫截面。電晶體顯示柵極 (G)、體 (B)、源極 (S) 和漏極 (D)。正電流從 n+ 漏極阱流向 n+ 源極阱。來源:維基百科

一般的 MOSFET 具有金屬柵極 (G) 和兩個稱為源極 (S) 和漏極 (D) 的 pn 結二極體,如圖 \ref{fig: transistor} 所示。有一個絕緣氧化物層將柵極與矽體 (B) 隔開。承載電荷的通道直接位於此氧化物層下方。電流是柵極尺寸的函式。

源極和漏極是對稱的,只有施加的偏置不同。在 nFET 器件中,形成源極和漏極的阱為 n 型,位於 p 型襯底中。襯底透過體 p 型阱觸點進行偏置。正電流在通道中從漏極流向源極,位於柵極下方。源極之所以被稱為源極,是因為它是電子的來源。相反,在 pFET 器件中,p 型源極和漏極位於 n 型襯底中的體 n 阱中;電流從源極流向漏極。

當載流子由於濃度梯度而移動時,這稱為擴散。如果載流子由於電場而被驅使,則稱為漂移。按照慣例,nFET 漏極的偏置電壓高於源極,而 pFET 的源極偏置電壓高於漏極。

在 nFET 中,當在柵極上施加正電壓時,正電荷會在金屬觸點上累積。這會從體矽中吸引電子到矽氧化物介面,在源極和漏極之間形成一個帶負電的通道。柵極電壓越大,通道越厚,內部電阻越小,電流呈對數增長。對於較小的柵極電壓,通常低於閾值電壓,,通道尚未完全導通,從漏極到源極的電流在對數刻度上呈線性增長。當 時,稱為亞閾值區。超過此閾值電壓,,通道在源極和漏極之間完全導通,電流處於超閾值區。

電晶體電流作為 的函式,固定 的值。

為了使電流從漏極流到源極,最初必須有一個電場來驅動載流子穿過通道。該電場強度是源極和漏極之間施加的電位差 () 的函式,因此控制著漏極-源極電流。對於較小的 值,電流會隨著 呈線性增長,前提是 值恆定。隨著 超過 ,電流會飽和。

pFET 的行為與 nFET 類似,只是載流子是空穴,觸點偏置是相反的。

在數字應用中,電晶體要麼在其飽和區(開啟)工作,要麼處於關閉狀態。這種導通和關閉模式之間的巨大電位差是數位電路具有如此高功耗的原因。相反,類比電路利用電晶體的線性區來產生具有較低功耗的連續訊號。然而,由於柵極或源極-漏極電壓的微小變化會導致電流發生較大變化,因此模擬系統容易受到噪聲的影響。

神經形態工程領域利用類比電路的噪聲特性來複制隨機神經元行為 [5] [6]。與時鐘驅動的數位電路不同,類比電路能夠產生具有類似生物時間尺度 (約 ) 的時間動態的動作電位。透過延長洩漏偏置和可變電阻電晶體的時間常數,電位被減慢,放電速率被控制。已經建立了能夠模擬具有不同時間動態的生物動作電位的類比電路,從而允許矽電路模仿神經元基於尖峰的學習行為 [7]。而數位電路只能包含二進位制突觸權重 [0,1],類比電路能夠在連續的值範圍內保持突觸權重,這使得類比電路對於神經形態電路特別有利。

基本靜態電路

[edit | edit source]

理解了電晶體的工作原理及其偏置方式後,就可以透過基本靜態類比電路來進行合理化。隨後,這些基本靜態電路將被組合起來建立神經形態電路。在以下電路示例中,源極、漏極和柵極電壓是固定的,電流是輸出。在實際應用中,偏置柵極電壓固定為亞閾值(),漏極保持在飽和狀態(),源極和體極接地()。所有非理想性都被忽略。

基本靜態電路。(A)二極體連線的電晶體。(B)電流鏡。(C)源極跟隨器。(D)反相器。(E)電流傳送器。(F)差分對。

二極體連線的電晶體

[edit | edit source]

二極體連線的nFET將柵極連線到漏極。由於浮動漏極控制柵極電壓,漏極-柵極電壓將自調節,因此器件將始終吸收輸入電流,。超過幾個微伏,電晶體將進入飽和狀態。類似地,二極體連線的pFET將柵極連線到源極。雖然這個簡單的器件似乎僅僅作為一個短路工作,但它通常用於類比電路中以複製和調節電流。特別是在神經形態電路中,它們被用來減緩電流匯,將電路時間常數增加到生物學上可信的時間範圍。

電流鏡

[edit | edit source]

電流鏡利用了二極體連線的電晶體吸收電流的能力。當輸入電流被強制透過二極體連線的電晶體,,浮動漏極和柵極被調節到允許輸入電流透過的適當電壓。由於兩個電晶體共享一個公共柵極節點,也將吸收相同的電流。這迫使輸出電晶體複製輸入電流。只要


  1. .

可以透過調整這兩個引數來控制電流鏡增益。當使用不同尺寸的電晶體時,即傾斜鏡,增益為

pFET電流鏡只是一個翻轉的nFET鏡,其中二極體連線的pFET反映輸入電流,並迫使另一個pFET源極輸出電流。

電流鏡通常用於複製電流而不消耗輸入電流。這對於反饋迴路尤其重要,例如用於加速動作電位的反饋迴路,以及在突觸處對輸入電流求和。

源極跟隨器

[edit | edit source]

源極跟隨器由一個輸入電晶體 ,疊加在一個偏置電晶體 上方組成。固定的亞閾值 () 偏置電壓控制柵極 ,迫使其以恆定電流 匯流。因此, 也被強制以相同的電流 () 匯流,無論輸入電壓 是什麼。

源極跟隨器之所以被稱為源極跟隨器,是因為輸出 將跟隨 ,並伴隨一個由以下公式描述的微小偏移:



其中 kappa 是亞閾值斜率因子,通常小於 1。

這個簡單的電路通常用作緩衝器。由於沒有電流可以流過柵極,因此該電路不會從輸入端汲取電流,這對於低功耗電路來說是一個重要的特性。源極跟隨器還可以隔離電路,保護電路免受電源浪湧或靜電的影響。pFET 源極跟隨器與 nFET 源極跟隨器唯一的區別在於偏置 pFET 的體端連線到

在神經形態電路中,源極跟隨器等被用作簡單的電流積分器,其行為類似於從多個突觸前神經元收集電流的突觸後神經元。


反相器

[edit | edit source]

反相器由一個 pFET ,疊加在一個 nFET 上方組成,它們的柵極連線到輸入 ,輸出連線到公共源極節點 。當輸入高電平時,pFET 關閉,但 nFET 開啟,有效地放電輸出節點 ,並反轉訊號。相反,當輸入訊號為低電平時,nFET 關閉,但 pFET 開啟,為 節點充電。

這個簡單的電路可以有效地用作快速開關。反相器也常被用作緩衝器,因為可以在不直接提供輸入電流的情況下產生輸出電流,因為不允許電流流過柵極。當兩個反相器串聯使用時,它們可以用作非反相放大器。這在 Mead 等人 1989 年的原始積分-觸發矽神經元中被用來產生類似於生物動作電位的快速去極化尖峰 [8]。然而,當輸入在高訊號和低訊號之間波動時,兩個電晶體都處於超閾值飽和狀態,消耗電流,這使得它成為一個非常耗電的電路。

電流傳送器

[編輯 | 編輯原始碼]

電流傳送器也常被稱為緩衝電流映象。電流傳送器由兩個電晶體組成,它們的柵極連線到對方的節點,其自調節方式使得輸出電流與輸入電流匹配,類似於電流映象。

電流傳送器通常用在需要大規模串聯重複陣列的場合,用來代替電流映象。這是因為電流映象的電流透過柵極來控制,柵極的氧化層電容會導致輸出延遲。雖然這種延遲對於單個輸出電流映象來說可以忽略不計,但是對於長的映象陣列,累積的輸出延遲會變得相當明顯。這種延遲會嚴重阻礙大型並行過程,例如那些試圖模擬生物神經網路計算策略的過程。

差分對

[編輯 | 編輯原始碼]

差分對是一個比較電路,由兩個共用偏置的源極跟隨器組成,該偏置強制較弱的輸入電流被抑制。偏置電晶體將強制 保持恆定,將公共節點 連線到固定電壓。兩個輸入電晶體都希望根據其輸入電壓 分別消耗電流。然而,由於公共節點必須保持固定,所以輸入電晶體的漏極必須根據柵極電壓升高。具有較低輸入電壓的電晶體將充當阻扼器,允許更少的電流透過其漏極。輸掉競爭的電晶體會看到其源極電壓升高,從而脫離飽和狀態。

在神經元電路的設定中,差分對可以作為離子通道的啟用閾值,低於該閾值,電壓門控離子通道不會開啟,從而阻止神經元產生尖峰 [9]

矽神經元

[編輯 | 編輯原始碼]

勝者全拿

[編輯 | 編輯原始碼]

勝者全拿 (WTA) 電路最初由 Lazzaro 等人設計 [10],它是一個連續時間類比電路。它比較了一組單元的輸出,只允許輸出電流最大的單元開啟,抑制所有其他競爭單元。

雙輸入 CMOS 勝者全拿電路

每個單元包含一個電流控制傳送器,接收輸入電流,並將電流輸出到控制偏置電晶體的公共線上。具有最大輸入電流的單元也將輸出最大電流,從而提高公共節點的電壓。這將迫使較弱的單元關閉。WTA 電路可以擴充套件到包含大量的競爭單元網路。軟 WTA 還將輸出電流映象回輸入,有效地增加了單元增益。這對於減少噪聲和隨機切換是必要的,特別是當單元陣列的動態範圍較小時。

WTA 網路通常用作計算神經網路中競爭學習的一種形式,這些網路涉及分散式決策。特別是,WTA 網路已被用於執行更接近視覺選擇任務期間皮層活動的下層識別和分類任務 [11]

積分發射神經元

[編輯 | 編輯原始碼]

積分發射神經元的最通用示意圖,也被稱為軸突丘神經元,是最常用的尖峰神經元模型 [8]。大多數軸突丘電路的共同元素包括:一個節點,它記憶著膜電位 ,一個放大器,一個正反饋迴路 ,以及一個將膜電位重置到靜息狀態的機制, .

輸入電流 充電,儲存在電容 C 中。該電容類似於脂質細胞膜,它阻止了自由離子擴散,從而在脂質膜兩側累積的電荷差產生膜電位。輸入被放大以輸出電壓尖峰。膜電位的變化透過 進行正反饋,產生更快的尖峰。這與生物軸突丘的運作方式非常相似,軸突丘密集地排列著電壓門控鈉通道,它放大了累積的電位以產生動作電位。當產生電壓尖峰時,復位偏壓 開始耗盡 節點。這類似於鈉鉀通道,它主動地將鈉離子和鉀離子泵到濃度梯度,以維持靜息膜電位。

尖峰神經元電路。放大器由兩個反相放大器組成,它們產生動作電位的典型快速向上擺動。輸出尖峰 由輸入電流 觸發,其寬度由 調製。來源:改編自 Mead 等人,1989 年


DPI 神經元電路。(A) 電路原理圖。輸入 DPI 低通濾波器(黃色,ML1 - ML3)模擬神經元的洩漏電導。尖峰事件生成放大器(紅色,MA1 - MA6)實現基於電流的正反饋(模擬鈉啟用和失活電導),並在極低功耗下產生地址事件。復位模組(藍色,MR1 - MR6)復位神經元,並將其保持在復位狀態,持續時間由 Vref 偏置電壓設定。另一個 DPI 濾波器積分尖峰,產生慢速後超極化電流 Ig,用於尖峰頻率適應(綠色,MG1 - MG6)。(B) DPI 神經元電路對恆定輸入電流的響應。測量資料擬合了包含刺激開始時指數 ∝e−t/τK 的函式,這是所有基於電導的模型的特徵,以及尖峰開始時額外的指數 ∝e+t/τNa(指數 I&F 計算模型的特徵;Brette 和 Gerstner,2005 年)。來源:Indiveri 等人,2010 年。


原始軸突丘矽神經元已被改造成包含一個啟用閾值,添加了一個差分對,將輸入與一個設定的閾值偏壓 [9] 進行比較。這種基於電導的矽神經元利用帶洩漏電晶體的差分對積分器(DPI)來比較輸入 和閾值 。洩漏偏壓 、不應期偏壓 、適應偏壓 和正反饋增益,都可以獨立地控制尖峰頻率。研究重點在於實現尖峰頻率適應,以設定不應期和調節閾值 [12]。適應允許神經元根據其輸入調節其輸出發射率。如果有恆定的高頻輸入,神經元會對輸入變得不敏感,隨著時間的推移,輸出會逐漸減弱。基於電導的神經元電路的自適應元件透過鈣通量建模,並透過自適應電容 儲存過去活動的記憶。尖峰頻率適應的出現使得可以在神經元層面上進行改變,以控制突觸層面的自適應學習機制。這種神經元學習模型是根據生物學 [13] 建模的,將在 Silicon Synapses 中進一步討論。

(A) 電流抑制機制。(B) 作為 (藍色)函式的自適應閾值機制。神經元的尖峰閾值(紅色)隨每個尖峰增加,從而增加尖峰時間常數。來源:Indiveri 等人,2010 年

矽突觸

[編輯 | 編輯原始碼]

最基本的矽突觸,最初由 Mead 等人於 1989 年使用 [8],它只是一個 pFET 源極跟隨器,接收低訊號脈衝輸入並輸出單向電流, [14]

(A) 基本突觸電路。 (B) 具有更長時間常數的突觸電路。 來源:分別改編自 Mead 等人,1989 年和 Lazzaro 等人,1993 年。

尖峰的幅度由權重偏置控制,,脈衝寬度與輸入脈衝寬度直接相關,輸入脈衝寬度由 $V_{\tau}$ 設定。Lazzaro 等人(1993 年)的突觸電路中的電容器被新增以將尖峰時間常數增加到生物學上合理的數值。這減緩了脈衝過極化和去極化的速率,並且是電容的函式。

基本突觸電路。 來源:改編自 Lazzaro 等人,1992 年

對於描繪競爭性興奮和抑制行為的多個輸入,對數域積分器使用 來調節輸出電流幅度,,作為輸入電流的函式,,根據

控制 為輸出電晶體柵極充電的速率。 控制輸出 被吸收的速率。這種競爭性是模仿神經遞質的生物學行為所必需的,神經遞質可以促進或抑制神經元的放電。

突觸模型也使用對數域濾波器開發了具有階次線性積分器,這些濾波器能夠模擬興奮性突觸後電流 (EPSC) 的指數衰減 [15]。這是為了獲得生物學上合理的尖峰輪廓和時間常數所必需的。增益也獨立於突觸時間常數控制,這對於尖峰速率和尖峰時間相關的學習機制是必需的。

A) 來自差分對積分器(對數域)突觸的 EPSC(“興奮性突觸後電流”)測量。 B) 所用電路的示意圖。(基於 Giacomo Indiveri 的影像)

上述突觸只是簡單地中繼來自突觸前來源的電流,在此過程中改變脈衝尖峰的形狀。但是,它們不包含任何關於先前尖峰的記憶,也不能夠根據時間動態來適應它們的行為。然而,這些能力對於神經形態電路像生物神經網路一樣學習是必需的。

一個人工神經網路。它包含 個突觸前神經元 (),以及 個突觸後神經元 ()。 是一個突觸前神經元,它與突觸後神經元 形成突觸,突觸權重為 ,導致突觸後神經元輸出 。來源:維基百科

根據 Hebb 假設,學習和記憶等行為被假設發生在突觸水平 [16]。它將學習過程歸因於長期神經元適應,其中突觸前和突觸後貢獻透過生化修飾得到增強或減弱。該理論通常總結為一句話:“一起發射的神經元,一起連線”。人工神經網路透過這些生化“連線”修飾來模擬學習,僅用一個引數來表示,即突觸權重 。突觸權重是一個引數狀態變數,它量化了突觸前神經元峰值如何影響突觸後神經元輸出。Hebb 突觸權重可塑性的兩種模型包括峰值率依賴可塑性 (SRDP) 和峰值時間依賴可塑性 (STDP)。自從該理論提出以來,生物神經元活動已被證明表現出與 Hebb 學習密切相關的行為。一個例子是導致鈣流入誘導適應的突觸 NMDA 和 AMPA 受體可塑性修飾 [17]

生物神經元中資訊的學習和長期記憶歸因於 NMDA 通道誘導的適應。這些 NMDA 受體是電壓依賴的,並控制細胞內鈣離子流。動物研究表明,當細胞外鈣減少時,神經元脫敏會減少 [17]

(A)包含 AMPA 和 NMDA 通道以及鈣的簡單突觸。(B)突觸單個元素的電路模型。(C)響應突觸前動作 (AP) 勢輸入 () 的電路輸出。來源:Rachmuth 等人,2011

由於鈣濃度呈指數衰減,這種行為很容易使用亞閾值電晶體在硬體上實現。Rachmuth 等人 (2011) [18] 展示了一個模擬鈣依賴性生物行為的電路模型。鈣訊號 透過 節點調節 AMPA 和 NMDA 通道活性,根據鈣依賴性 STDP 和 SRDP 學習規則進行調節。這些學習規則的輸出是突觸權重 ,它與活性 AMPA 和 NMDA 通道的數量成正比。SRDP 模型用兩個狀態變數來描述權重, 控制更新規則, 控制學習率。



其中 是突觸權重, 是更新規則, 是學習率,而 是一個常數,允許在沒有輸入的情況下,權重漂移出飽和狀態。

NMDA 通道控制鈣離子流入,。NMDA 受體電壓依賴性由 建模,通道機制由一個大的電容器控制,以增加鈣離子時間常數,。輸出 透過電流映象複製到 電路中,以執行下游學習功能。

電路將 與閾值偏置進行比較,),分別透過一系列差分對電路控制長時程增強或長時程抑制。差分對的輸出決定更新規則。此 電路已被證明能夠表現出海馬體中觀察到的各種 Hebbian 學習規則,以及小腦中使用的反 Hebbian 學習規則。

電路控制何時可以發生突觸學習,方法是僅在 高於差分對設定的閾值時才允許更新,。學習率 (LR) 按照以下模型進行:



其中 的函式,控制學習率, 電路的電容, 是比較器的閾值電壓。此函式表明 必須被偏置以維持較高的 以模擬 SRDT。一個漏電流,,被包含進來以在不活動期間將 排放到

NEURON 模擬環境

[edit | edit source]

介紹

[edit | edit source]

Neuron 是一個模擬環境,您可以使用它來模擬生物和人工神經元以及神經元網路中的離子傳播和動作電位 [19]。使用者可以透過定義和連線神經元細胞部分來指定模型幾何形狀,這些部分可以配備各種機制,例如離子通道、夾具和突觸。為了與 NEURON 互動,使用者可以使用圖形使用者介面 (GUI) 或其中一種程式語言 hoc(一種具有類似 C 語法的語言)或 Python 作為直譯器。GUI 包含了最常用功能的廣泛選擇,右側的圖片顯示了一個螢幕截圖示例。另一方面,程式語言可以被利用來為模型新增更具體的機制並用於自動化目的。此外,可以使用程式語言 NMODL 建立自定義機制,它是 MODL 的擴充套件,MODL 是由 NBSR(國家生物醫學模擬資源)開發的模型描述語言。然後可以編譯這些新機制,並透過 GUI 或直譯器新增到模型中。

A screenshot of the Graphical User Interface of NEURON. Source: Neuron tutorial - https://www.neuron.yale.edu/neuron/static/docs/cbtut/stylized/usemodel.html

Neuron 最初由杜克大學的 John W. Moore 與 Michael Hines 合作開發。它目前在許多研究所和大學中被用於教育和研究目的。有大量的資訊可用,包括包含文件的官方網站、NEURON 論壇以及各種教程和指南。此外,2006 年出版了 NEURON 的權威參考書,名為“NEURON 手冊” [20]。要閱讀以下章節並使用 NEURON,建議您瞭解一些關於神經元生理學的背景知識。關於神經元的一些資訊來源示例是 WikiBook 章節,或 Khan 學院 高階神經系統生理學 章節介紹中的影片。由於本文件不是教程,而只是對 NEURON 中的可能性和模型結構的概述,因此我們不會涵蓋有關如何使用 NEURON 執行此處提及的操作的具體命令或細節。有關使用 NEURON 進行實現的更多實用資訊,我建議您檢視下面連結的教程和官方網頁上的文件 [19]

模型建立

[edit | edit source]
神經元示意圖。

單細胞幾何

[edit | edit source]

首先我們將討論建立一個由單個生物神經元組成的模型幾何形狀。右側的圖片顯示了神經元的示意圖。在以下列表中,展示了一個示例程式碼片段,其中使用 hoc 指定了一個具有一個胞體和兩個樹突的多室細胞。

A schematic representation of a neuron with a soma and two dendrites.

load_file("nrngui.hoc")

// Create a soma object and an array containing 2 dendrite objects
ndend = 2
create soma, dend[ndend]
access soma

// Initialize the soma and the dendrites
soma {
  nseg = 1
  diam = 18.8
  L = 18.8
  Ra = 123.0
  insert hh
}

dend[0] {
    nseg = 5
    diam = 3.18
    L = 701.9
    Ra = 123
    insert pas
}

dend[1] {
    nseg = 5
    diam = 2.0
    L = 549.1
    Ra = 123
    insert pas
}

// Connect the dendrites to the soma
connect dend[0](0), soma(0)
connect dend[1](0), soma(1)

// Create an electrode in the soma
objectvar stim
stim = new IClamp(0.5)

// Set stimulation parameters delay, duration and amplitude
stim.del = 100
stim.dur = 100
stim.amp = 0.1

// Set the simulation end time
tstop = 300

部分

[edit | edit source]

NEURON 中的基本構建塊稱為“節段”。最初,一個節段只代表一個圓柱形管,具有長度和直徑等單獨屬性。透過為節段配備相應的機制,例如離子通道或與其他細胞或人工刺激的突觸連線,可以將其用於表示不同的神經元部分,例如胞體、樹突或軸突。然後,可以透過以您想要的方式連線節段的末端來建立神經元細胞,例如以樹狀結構,只要沒有迴圈即可。上面列表中指定的神經元在右側的圖中視覺化。

為了更準確地模擬動作電位在節段中的傳播,可以將節段細分為稱為“段”的更小的部分。將節段分成多個段的模型稱為“多室”模型。增加段的數量可以看作是增加空間離散化的粒度,這在例如膜特性沿節段不均勻時會導致更準確的結果。預設情況下,一個節段包含一個段。

膜機制

[編輯 | 編輯原始碼]

節段的預設設定不包含任何離子通道,但使用者可以新增它們 [21]。有兩種型別的內建離子通道膜機制可用,即被動離子通道膜模型和 霍奇金-赫克斯利模型 膜模型,它代表了被動和電壓門控離子通道的組合。如果這還不夠,使用者可以使用 NMODL 程式語言定義自己的膜機制。

點過程

[編輯 | 編輯原始碼]
突觸的示意圖

除了在膜區域定義的膜機制外,還有稱為“點過程”的區域性機制可以新增到節段。一些例子是突觸,如右側的圖所示,以及電壓和電流鉗位。同樣,使用者可以自由地使用 NMODL 程式語言實現自己的機制。點過程和膜機制之間的一個主要區別是,使用者可以指定應該將點過程新增到節段上的位置,因為它是一種區域性機制 [21]

輸出和視覺化

[編輯 | 編輯原始碼]

可以跟蹤計算量的變化並繪製它們,例如建立特定段內電壓隨時間的變化的圖形,如上面的 GUI 螢幕截圖所示。也可以製作動畫,例如顯示軸突內電壓分佈隨時間的變化。請注意,這些數量僅在每個段的中心和每個節段的邊界處計算。

建立細胞網路

[編輯 | 編輯原始碼]

除了模擬單個細胞內的離子濃度外,還可以連線細胞並模擬神經元網路。為此,使用者必須將突觸(它們是點過程)連線到突觸後神經元,然後建立“NetCon”物件,它們將充當突觸前神經元和突觸後神經元之間的連線。使用者可以將不同型別的突觸連線到神經元,例如AlphaSynapse,其中突觸電導根據 alpha 函式衰減,以及ExpSyn,其中突觸電導呈指數衰減。與其他機制一樣,也可以使用 NMODL 建立自定義突觸。對於 NetCon 物件,可以指定幾個引數,例如閾值和延遲,它們決定突觸前神經元引起突觸後電位的必要條件。

人工神經元

[編輯 | 編輯原始碼]

除了我們到目前為止討論過的生物神經元外,還有一種可以用 NEURON 模擬的神經元型別,稱為“人工”神經元。NEURON 中生物神經元和人工神經元之間的區別在於,人工神經元沒有空間範圍,並且它的動力學高度簡化。NEURON 中有幾種積分器可用於模擬人工細胞的行為,它們在生物神經元動力學的簡化程度上有所不同 [22]。為了減少人工尖峰神經元細胞和網路模型的計算時間,NEURON 的開發人員選擇支援事件驅動的模擬。這大大減少了模擬尖峰觸發的突觸傳遞的計算負擔。雖然對基於電導的神經元細胞進行建模需要連續系統模擬,但 NEURON 仍然可以透過完全支援混合模擬來利用事件驅動方法對包含生物和人工神經元的網路的益處。這樣,任何組合的人工和基於電導的神經元細胞都可以被模擬,同時仍然可以實現由人工細胞的事件驅動模擬帶來的減少的計算時間 [23]。使用者還可以使用 NMODL 新增其他人工神經元類。

Python 中的神經元

[編輯 | 編輯原始碼]
Python 徽標

自 1984 年以來,NEURON 為建立和執行模擬提供了 hoc 直譯器。hoc 語言已被擴充套件和維護,直到現在仍與 NEURON 一起使用,但由於這種維護需要大量時間,並且它已被證明是一種僅限於 NEURON 使用者的孤兒語言,NEURON 的開發人員希望採用更現代的程式語言作為 NEURON 的直譯器。由於 Python 在科學計算領域得到廣泛應用,許多使用者建立了包含可重用程式碼的包,因此現在它作為直譯器比 hoc 更具吸引力 [24]。有三種方法可以使用 Python 與 NEURON 一起使用。第一種方法是使用終端執行 NEURON,接受互動式 Python 命令。第二種方法是使用直譯器 hoc 執行 NEURON,並透過 hoc 中的特殊命令訪問 Python 命令。第三種方法是將 NEURON 作為 Python 的擴充套件模組使用,這樣就可以將 NEURON 模組匯入到 Python 或 IPython 指令碼中。

要使用第一種和第二種模式,即使用嵌入式 Python 與 NEURON 一起使用,完成簡單的安裝就足夠了。但是,要使用第三種模式,即將 NEURON 作為 Python 的擴充套件模組使用,則需要從原始碼構建 NEURON 並安裝 Python 的 NEURON 共享庫,這在 此安裝指南 中有解釋。

Python 中的 NEURON 命令

[編輯 | 編輯原始碼]

由於 NEURON 最初是使用 hoc 作為直譯器開發的,因此使用者仍然需要在 Python 中顯式呼叫 hoc 函式和類。所有存在於 hoc 中的函式和類都可以透過模組“neuron”在 Python 中訪問,無論是在使用嵌入在 NEURON 中的 Python 時,還是在使用 NEURON 作為擴充套件模組時。NEURON 在 hoc 和 Python 中的命令之間只有細微的差異,因此使用者從一種語言切換到另一種語言時不應該遇到很多問題 [24]。使用 NEURON 與 Python 而不是 hoc 有幾個優勢。主要優勢之一是 Python 提供了更多功能,因為它是一種完整的面嚮物件語言,並且有大量適用於科學和工程的分析工具。此外,從 NMODL 指令碼載入使用者定義的機制變得更容易,這使得 NEURON 更具吸引力,尤其是在模擬非常特定的機制時 [24]。有關 NEURON 與 Python 結合使用的更多詳細資訊,請點選 這裡

教程

[edit | edit source]
您將在第一個教程中學習建模的神經網路的示意圖。藍色點代表兩個神經元之間的突觸。

線上有多個教程可供您使用,以幫助您開始使用 NEURON,其中兩個列在下面。

第一個教程 中,您將從學習如何建立一個單隔室細胞開始,並最終建立如圖所示的神經元網路,其中包含自定義細胞機制。同時,您將透過 NEURON 的模板、自動化、計算時間最佳化和提取結果資料的特性進行指導。教程使用 hoc 命令,但程式在 Python 中幾乎相同。

第二個教程 中,它展示瞭如何建立一個具有被動細胞膜和突觸刺激的細胞,以及如何使用 Python 模組 matplotlib 視覺化結果。

進一步閱讀

[edit | edit source]

除了本 NEURON 簡介中提到的內容之外,還有許多其他選項可供使用,這些選項正在不斷得到開發人員的擴充套件和改進。在“NEURON 書籍” [20] 中可以找到對 NEURON 的廣泛解釋,它是官方參考書籍。此外,官方網站 包含大量資訊和指向其他資源的連結。

參考文獻

[edit | edit source]

另外兩個來源是 Chicca 等人的“一種自適應矽突觸” [25] 和 Liu 等人的“模擬 VLSI:電路與原理” [26]

  1. T. Haslwanter (2012). "Hodgkin-Huxley Simulations [Python]". private communications.
  2. T. Haslwanter (2012). "Fitzhugh-Nagumo Model [Python]". private communications.
  3. T. Anastasio (2010). "Tutorial on Neural systems Modeling".
  4. 歐洲花費了 6 億歐元來在計算機中重現人腦。結果如何?
  5. E Aydiner, AM Vural, B Ozcelik, K Kiymac, U Tan (2003), 一種簡單的混沌神經元模型:神經網路的隨機行為{{citation}}: CS1 maint: multiple names: authors list (link)
  6. WM Siebert (1965), 主要聽覺神經元的隨機行為的一些意義
  7. G Indiveri, F Stefanini, E Chicca (2010), 使用廣義積分和發射矽神經元進行基於尖峰的學習{{citation}}: CS1 maint: multiple names: authors list (link)
  8. a b c CA Mead (1989), 模擬 VLSI 和神經系統
  9. a b RJ Douglas, MA Mahowald (2003), 矽神經元
  10. J Lazzaro, S Ryckebusch, MA Mahowald, CA Mead (1989), 勝者為王:網路的 複雜度{{citation}}: CS1 maint: multiple names: authors list (link)
  11. M Riesenhuber,T Poggio(1999),皮層中物體識別的層次模型
  12. E Chicca,G Indiveri,R Douglas(2004),基於事件的整合-發射神經元 VLSI 網路{{citation}}:CS1 maint:作者列表有多個姓名 (link)
  13. G Indiveri,E Chicca,R Douglas(2004),具有基於尖峰學習突觸的 VLSI 可重構整合-發射神經元網路{{citation}}:CS1 maint:作者列表有多個姓名 (link)
  14. J Lazzaro,J Wawrzynek(1993),低功耗矽神經元、軸突和突觸
  15. S Mitra,G Indiveri,RE Cummings(2010),用於具有全域性引數控制的矽突觸的對數域積分器的合成{{citation}}:CS1 maint:作者列表有多個姓名 (link)
  16. DO Hebb(1949),行為的組織
  17. a b PA Koplas,RL Rosenberg,GS Oxford(1997),鈣在去敏化大鼠背根神經節神經元辣椒素反應中的作用{{citation}}:CS1 maint:作者列表有多個姓名 (link)
  18. G Rachmuth,HZ Shouval,MF Bear,CS Poon(2011),基於生物物理的尖峰速率-時間依賴性可塑性神經形態模型{{citation}}:CS1 maint:作者列表有多個姓名 (link)
  19. a b Neuron,用於神經元和神經元網路的基於經驗的模擬
  20. a b Nicholas T. Carnevale,Michael L. Hines(2009),NEURON 手冊
  21. a b NEURON 教程 1
  22. M.L. Hines 和 N.T. Carnevale(2002),NEURON 模擬環境
  23. Romain Brette,Michelle Rudolph,Ted Carnevale,Michael Hines,David Beeman,James M. Bower,Markus Diesmann,Abigail Morrison,Philip H. Goodman,Frederick C. Harris Jr.,Milind Zirpe,Thomas Natschläger,Dejan Pecevski,Bard Ermentrout,Mikael Djurfeldt,Anders Lansner,Olivier Rochel,Thierry Vieville,Eilif Muller,Andrew P. Davison,Sami El Boustani,Alain Destexhe(2002),尖峰神經元網路的模擬:工具和策略的綜述{{citation}}:CS1 maint:作者列表有多個姓名 (link)
  24. a b c Hines ML,Davison AP,Muller E. NEURON 和 Python。神經資訊學前沿。2009;3:1。doi:10.3389/neuro.11.001.2009。(2009),NEURON 和 Python{{citation}}:CS1 maint:作者列表有多個姓名 (link)
  25. E Chicca,G Indiveri,R Douglas(2003),自適應矽突觸{{citation}}:CS1 maint:作者列表有多個姓名 (link)
  26. SC Liu,J Kramer,T Delbrück,G Indiveri,R Douglas(2002),模擬 VLSI:電路和原理{{citation}}:CS1 maint:作者列表有多個姓名 (link)

介紹 · 神經感覺刺激

華夏公益教科書