?? 100.txt
字號:
發信人: ccipt (北方的狼), 信區: DataMining
標 題: 智能軟件的編寫(轉貼)
發信站: 南京大學小百合站 (Mon Sep 10 13:46:38 2001)
發信人: chenghw (chenghw), 信區: AI
標 題: 智能軟件的編寫
發信站: 飲水思源站 (Sun Jul 22 10:03:41 2001) , 轉信
模糊記憶、回憶
——機理討論、軟件編寫、源代碼、使用說明
文章摘要:本文主要包括二部分,第一部分先討論了是記憶的基本功能單位—
—皮質垂直柱,然后通過對模糊記憶、回憶的討論說明了模糊記憶、回憶的一些
特點。第二部分敘述了我是如何模擬人腦來編寫具有最簡單的模糊記憶、回憶功
能的人工智能軟件的,給出了我用VB6編寫的人工智能軟件的源代碼,并具體論述
了如何使用這一軟件及為什么說它具有簡單的模糊記憶、回憶的功能,這一軟件
解決了如何用PC來模擬人腦的并行計算功能。
關鍵詞:模糊記憶、回憶 記憶柱 皮質垂直柱 人工智能軟件 展示框
本文大概包括二部分:1、模糊記憶、回憶機理的簡單討論。2、模擬人的模糊
記憶、回憶編寫具有模糊記憶、回憶功能的小軟件,包括源代碼、說明。
一、模糊記憶、回憶機理的簡單討論。
1、要討論模糊記憶、回憶的機理首先應討論記憶的基本功能單位。
本文把各種記憶的基本組成所分別對應興奮的神經結構稱為記憶的基本功能單
位,記憶的基本組成是指將任何記憶分割到一定程度后所形成的各種不同的最小
記憶單元,這些記憶單元不需進一步分割只需數量上的增減就能組成任何形式的
記憶。
那么記憶的基本功能單位對應的是大腦的什么結構呢?以視覺中樞為例,根據
定義我們能輕易的得出在視中樞,皮質垂直柱是記憶的基本功能單位,(可參看
人民衛生出版社出版的張培林主編的神經解剖學這篇文章的第二十二章的第四節
——枕葉的功能與臨床)比如:人所能觀察到的特定空間的最小線段長度和最小
角度都分別與特定的皮質垂直柱相對應,而圖形由是具有特定角度的線段組成的
。在其它皮質中樞雖無確實證據證明記憶的基本功能單位是皮質垂直柱,但可能
性是非常大的。
那么皮質垂直柱有那些特點哪?皮質垂直柱是特殊的神經網絡,人腦皮質共由
約2000000個皮質垂直柱組成,每個皮質垂直柱平均含有5000個神經細胞,其最小
直徑通常是200μm到300μm,它既可以是柱狀結構也可以是其它形狀的結構,但
以柱狀為主,每個皮質垂直柱都含有一定數目的傳入、傳出軸突,它即能被興奮
又能記憶興奮、遺忘興奮還能傳出興奮,它的功能建立在組成它的神經元的功能
之上。
2、 下面通過一模糊記憶、回憶的例子來說明模糊記憶、回憶的特點及皮質
垂直柱在其中扮演的角色。
例如,如果一個人知道電腦并能通過電腦的物體形象直接想起主板、CPU等,
而他不知道電腦也叫計算機,那么他就不能通過聽到“計算機”這一名詞的發音
直接回憶起主板、CPU等,而當他聽說電腦也叫計算機后,他就能通過聽到“計算
機”這一名詞的發音直接想起電腦這一物體的大概形象,而又能通過電腦的大概
形象直接回憶起主板、CPU等。考察這一過程,“計算機”這一名詞的發音刺激對
應聽覺中樞的一群皮質垂直柱,電腦的形象對應一群皮質垂直柱,主板、CPU的形
象又分別對應一群皮質垂直柱,當聽覺中樞對應于“計算機”這一名詞的發音的
皮質垂直柱群與對應電腦的形象的皮質垂直柱群同時興奮時,它們之間便建立了
相互興奮的記憶聯系,當“計算機”這一發音再刺激這人時,首先興奮與“計算
機”這一發音相對應的皮質垂直柱群,然后通過記憶的聯系,興奮與電腦形象相
對應的皮質垂直柱群,從而產生回憶,同時與電腦形象相對應的皮質垂直柱群又
能通過記憶的興奮興奮與CPU、主板相對應的皮質垂直柱群。
將這一過程抽象出來即:有A、B、C、D四群皮質垂直柱,A與B、C、D之間無
相互興奮的記憶聯系,而B、C、D之間能相互興奮,當A與B同時興奮時,A、B之間
便建立了相互興奮的記憶聯系,當A再單獨興奮時便能通過記憶興奮B并能通過B興
奮C、D。在A第一次興奮時組成A的皮質垂直柱之間便建立了相互興奮的記憶聯系
,它是人能從物體的一個特點回憶到物體的所有特點的基礎。
現在有一個問題,即A與B建立記憶聯系后A是首先興奮大部分B還是首先興奮
一部分B,如果A能直接興奮大部分B,C、D也應能直接興奮大部分B,與B有記憶聯
系的其它皮質垂直柱群也應能直接興奮大部分B,那么組成B的皮質垂直柱所需要
的傳入軸突便太龐大了,這是不可能的,唯一的可能便是A、D、C和其它能直接興
奮B的皮質垂直柱群都只能直接興奮一部分B。那么當A、B同時興奮時,組成A的皮
質垂直柱之間便建立了廣泛的興奮聯系,B亦然,同時A、B傳出的沖動易化或興奮
了大量的其它皮質垂直柱,A就以這些皮質垂直柱為中介興奮或直接興奮一部分B
,這部分B又能通過記憶的興奮通路使大部分B興奮。要使A具有以上推導出來的興
奮特點就需要組成它的皮質垂直柱的傳出軸突在A的局部和大腦的其它部位有一個
適當的分布密度。
什么是模糊興奮,具體到本文便是與A的興奮相似的興奮與A的興奮等效,即
與A的興奮相似的興奮能興奮A所能興奮的皮質垂直柱群,因而A、B、C、D之間的
興奮是模糊興奮。如果皮質垂直柱群A1與A的興奮相似,則A1與A相似也就是說A1
與A有大量共同的皮質垂直柱,那么A1興奮后便能通過與A共有的皮質垂直柱而興
奮部分B,被興奮的這部分B便可能通過記憶的興奮通路使大部分B興奮……。
當然以上的討論都是在理想狀態下的簡單討論,實際上一次有成效的興奮必
須包括海馬中樞和獎懲中樞的興奮。
二、具有模糊記憶、回憶功能的軟件的編寫
我是用VB6來編寫具有模糊記憶、回憶功能的軟件的,使用的文件為隨機文件
。它模擬了人腦的以下特點。
1、用記憶柱來模擬皮質垂直柱,記憶柱是一段可被復制的文件。每個記憶柱
由50個recordnumber(用RN來表示),每個RN是一條記錄,第16到第45條記錄共
同反應了15個不同的傳入聯系對記憶柱的興奮及記憶柱對興奮的記憶、遺忘的情
況,31到45條記錄記錄的是時間它們分別記錄了15個傳入聯系最后一次興奮的時
間,16到30條分別記錄的是15個傳入聯系最后一次興奮時的興奮值,1到15條分別
記錄的是記憶柱的15個傳出聯系所對應的記憶柱,第47條記錄的是記憶柱“興奮
”的時間,46條記錄的是記憶柱在一短時間內的興奮狀態。
2、我編寫的記憶柱只有興奮性的,記憶柱之間的抑制是通過專門的程序來完
成的,它模擬了人腦的以下功能,“所有的長的皮層——皮層(和已知的皮層—
皮層下及大多數皮層下—皮層)聯系是興奮性的。抑制性的聯系一般是局部的。
”“抑制在皮層各區內可能比較定型化,可以擴展到100000個鄰近的基本柱中”
(摘自神經科學百科全書的神經中樞的組件式筑構學這一篇文章)。
3、如何模擬大腦的興奮方式(即如何用PC模擬人腦的并行計算方式)
為了用PC機模擬人腦的興奮特點我引入了展示框的概念,展示框是由RN組成的,
它的作用是記錄某一刻(本文一刻與一個記憶柱被興奮后然后傳出興奮所用的時間
相對應,當然如果必要且計算機的速度足夠快我們也可將一個記憶柱興奮后再傳
出興奮所需的時間平分成十份,使一刻所需的時間與十份中的一份相對應)同時
被“興奮”的記憶柱,以使PC逐一讀寫完這一時刻被興奮的記憶柱后再逐一讀寫
下一時刻被興奮的記憶柱,通過這種轉換就可使一次只能進行一次讀寫的PC機也
能模擬人腦的興奮特點。
4、為了編寫的簡便我沒有完全模擬人腦的特點(部分模擬了獎懲中樞的功能
,而對海馬中樞的功能沒有模擬),這一軟件的模糊記憶、回憶的特點是:兩群
記憶柱E、G同時興奮后它們之間的一部分便通過直接或間接的聯系建立了興奮聯
系而且這種聯系即能被記憶、回憶又能不斷的被遺忘,這種聯系是模糊聯系而非
精確聯系,因為與E相似的記憶柱群的興奮帶來的效果與E的興奮效果相同或相似
。
5、下面是這一軟件的源代碼
Public m12 As Integer
Private Sub Command1_Click()
1
On Error Resume Next
Open "d:\智能軟件\1.txt" For Random As 1 Len = 10
k = 0
t12 = 1
Rem 讀取輸入的數
n = Text1.Text
If n >= 0 Then
For r = 1 To 3
t = Mid$(n, r, 1)
f = (r - 1) * 10 + t
For E = 1 To 20
k1 = 20 * f + E
Get 1, k1, q1
k = k + 1
Put 1, 230000 + k, q1 '寫入展示框
Put 1, q1, 18 * t12
Put 1, q1 + 1, Date + Time
Next E
Next r
End If
Rem 對單選框進行選擇
Select Case m12
Case 1
we = InputBox("請寫入要聯系的數字", "聯系")
Text1.Text = we
n = Text1.Text
For r = 1 To 3
t = Mid$(n, r, 1)
f = (r - 1) * 10 + t
For E = 1 To 20
k1 = 20 * f + E
Get 1, k1, q
k = k + 1
Put 1, 230000 + k, q
Put 1, q, 18 * t12
Put 1, q + 1, Date + Time
Next E
Next r
Case 2
MsgBox "準備好了嗎?", vbYesNo, "記憶"
n = Text2.Text
For r = 1 To 3
t = Mid$(n, r, 1)
f = (r - 1) * 10 + t
For h1 = 1 To 2
For E = 1 To 20
k1 = 20 * f + E
Get 1, k1 + 211800 + 600 * (h1 - 1), q
k = k + 1
Put 1, 230000 + k, q
Put 1, q, 18 * t12
Put 1, q + 1, Date + Time
Next E
Next h1
Next r
Case 3
End Select
Rem 從展示框中讀取,并興奮
Rem 獲得31——4230柱
Rem 600*50=30000,3000*50=150000,600*50=30000,30*20=600
Rem 600+30000=30600,30600+150000=180600,
Rem 180600+30000=210600,210600+60=210660,211800
2
For o = 2 To 30
If m12 = 2 And o > 2 Then
n = Text2.Text
For r = 1 To 3
t = Mid$(n, r, 1)
f = (r - 1) * 10 + t
For h1 = 1 To 2
For E = 1 To 20
k1 = 20 * f + E
Get 1, k1 + 211800 + (h1 - 1) * 600, q
k = k + 1
Put 1, 210000 + o * 10000 + k, q
Put 1, q, 18 * t12
Put 1, q + 1, Date + Time
Next E
Next h1
Next r
End If
Put 1, 300000 + 2 * (o - 1), k
Put 1, 300000 + 2 * (o - 1) - 1, Date + Time
x = k
Print k
k = 0
For g = 1 To x
Get 1, 210000 + o * 10000 + g, z
Get 1, z, l12
If l12 - x / 200 >= 15 Then
Get 1, z - 46 + 49, g5
If g5 > 45 Then
Get 1, g5 - 1, w
Get 1, g5, w1
t8 = Date + Time - w
If t8 * 86400 < 2 Then
g7 = w1 + 1
Else: g7 = 1
End If
Put 1, g5 - 1, Date + Time
Put 1, g5, g7
End If
For a = 1 To 15
Get 1, z - 46 + a, t1 '獲得傳出
Get 1, t1 + 15, g2 '獲得對應的時間
Get 1, t1, g3 '獲得對應的值
'對傳出的書寫12
t = Date + Time - g2
'興奮后記憶值的重寫
If t * 86400 <= 3600 Then
g4 = 1.5 * g3 / 5 + 3.5 * g3 / 5 * (1 - t / 3600)
Else: g4 = 1.5 * g3 / 5 - 0.1 * g3 * t / 360000
End If
t2 = ((t1 - 600) \ 50) * 50 + 46 + 600
Get 1, t2 + 1, m1
k2 = Date + Time - m1
Get 1, t2, m2
If k2 * 86400 <= 1 Then
m3 = m2 + g4
Else: m3 = g4
End If
Put 1, t1 + 15, Date + Time
Put 1, t2 + 1, Date + Time
Rem 興奮后重寫記憶,
Rem 柱沒興奮時重寫的記憶
Put 1, t2, m3
If m3 >= 15 Then
Get 1, t2 + 2, v2
If Date + Time - v2 > 2 / 86400 Then
k = k + 1
Put 1, 210000 + (o + 1) * 10000 + k, t2
End If
Put 1, t2 + 2, Date + Time
Rem 柱興奮后重寫記憶
Put 1, t1, g4 + 2.5
Else: Put 1, t1, g4 + 1 / 2
Rem 按地址傳遞數字,并在展示框中寫入
End If
Next a
Else: Put 1, 210000 + o * 10000 + g, 0
End If
Next g
Rem 讀取、比較、并輸出到文本框
3
i = 0
For b1 = 1 To 3
b7 = 0
For b = 1 To 10
Get 1, 210600 + 2 * (10 * (b1 - 1) + b) - 1, b4
If Date + Time - b4 < 2 / 86400 Then
Get 1, 210600 + 2 * (10 * (b1 - 1) + b), b3
End If
If b3 - b7 > 0 Then
b7 = b3
e1 = b
End If
b3 = 0
Next b
Select Case b1
Case 1
c71 = e1 - 1
Case 2
b71 = e1 - 1
Case 3
a71 = e1 - 1
End Select
Next b1
i = (c71) & (b71) & (a71)
Print i
Text3.Text = i
myexit = MsgBox("正確嗎?", vbYesNo, "請確定")
If myexit = vbYes Then
Close 1
Exit Sub
End If
Next o
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -