人工智能編程論文
很少有程序員不對這里或者那里所包含的人工智能編程所吸引,然而,許多對AI感興趣的程序員很快就因其中包含的算法的復雜性而退卻。以下是學習啦小編精心整理的人工智能編程論文的相關資料,希望對你有幫助!
人工智能編程論文篇一
用Java開源項目JOONE實現(xiàn)人工智能編程
很少有程序員不對這里或者那里所包含的人工智能編程所吸引,然而,許多對AI感興趣的程序員很快就因其中包含的算法的復雜性而退卻。在本文中,我們將討論一個能大大簡化這種復雜性的Java開源工程。
Java面向對象的神經網絡(JOONE)是一開源工程,它提供給Java程序員一個高適應性的神經網絡。該JOONE工程源代碼由LGPL所保護。簡言之,這意味著源代碼是可自由使用的而且你不需要支付版稅就可以使用JOONE。JOONE可以從http://joone.sourceforge.net/處下載。
JOONE能允許你輕易地從一個Java程序中創(chuàng)建神經網絡。JOONE支持許多特征,如多線程和分布式處理。這意味著JOONE能利用多處理機計算機和多臺計算機的優(yōu)勢來進行分布式處理。
神經網絡
JOONE用Java實現(xiàn)了一個人工神經網絡。一個人工神經網絡試圖仿效生物學神經網絡的功能--神經網絡組成今天在地球上幾乎所有高等生命的大腦形式。神經網絡由神經原組成。
從圖1中你可以看出,神經原由一個內核細胞和幾個長長的稱為觸角的連接器組成。神經原之間依靠這些觸角進行連接。無論是生物學的還是人工的神經網絡,都通過觸角把信號從一個神經原傳遞到另一個神經原來工作。
使用JOONE
在這篇文章中,你將看到一個簡單的怎樣使用JOONE的實例。神經網絡題目涉及廣泛并覆蓋許多不同的應用領域。在本文中,我們將展示給你怎樣使用JOONE來解決一個很簡單的模式識別問題。模式識別是神經網絡中的最普遍的應用之一。
模式識別提供給神經網絡一種模式,判斷是否該神經網絡能夠識別出該模式。這種模式應該能夠在某種程度上被扭曲而該神經網絡仍然能夠識別它。這很像人類識別東西(如一個交通標志)的能力。人類應該能夠識別在下雨天,晴天或者晚上的交通標志。即使這些圖像看上去可能相當不同,但人類的大腦仍能夠判斷出它們是一樣的圖像。
當進行JOONE編程時,你一般要使用兩種類型的對象。你要使用神經原層對象,用于描述一層的一個或多個的具有相似特征的神經原。神經網絡經常有一層或兩層神經元。這些神經元層通過觸角聯(lián)系在一起。這些觸角把這種待識別的模式,從一個神經元層傳輸到另一個神經元層。
觸角不僅把這種模式從一個神經元層傳輸到另一個神經元層。觸角還將生成一些指向這種模式的元素的斜線。這些斜線將導致這種模式的某些元素在被傳輸到下一個神經元層時不如通過其它方式傳遞更有效些。這些斜線通常稱為權重,它們形成神經網絡的存儲系統(tǒng)。通過調整存儲在觸角中的這些權重,可以更改神經網絡的行為。
觸角在JOONE中還承擔著另外一個角色。在JOONE中,可以把觸角看作是數據導管。正如觸角把模式從一個神經元層傳輸到另一個神經元層,指定版本的觸角用于把模式傳入和傳出神經網絡。下面將給你展示一個簡單的單層的神經網絡是怎樣被構建并進行模式識別的。
訓練神經網絡
為實現(xiàn)本文的目的,我們將指導JOONE去識別一個很簡單的模式。在這種模式中,我們將考察一個二進制的布爾操作,例如XOR。這個XOR操作的真值表列舉如下:
X Y X XOR Y
0 0 0
0 1 1
1 0 1
1 1 0
正如你從上表中看到的,XOR運算的結果是只有當X和Y具有不同值時,結果才為真(1)。其它情況下,XOR運算結果均為假(0)。默認地,JOONE從存儲在你的系統(tǒng)中的文本文件中取得輸入。這些文本文件通過使用一種稱為FileInputSynapse的特殊觸角來讀取。為了訓練XOR運算問題,你必須建立一個輸入文件-該文件包含上面顯示的數據。該文件顯示在列表1中。
列表1:為解決XOR問題的輸入文件的內容
0.0;0.0;0.0
0.0;1.0;1.0
1.0;0.0;1.0
1.0;1.0;0.0
我們現(xiàn)在分析一個簡單的程序,它指導JOONE來識別XOR運算并產生正確的結果。我們現(xiàn)在分析訓練該神經網絡必須被處理的過程。訓練過程包括把XOR問題提交給神經網絡,然后觀察結果。如果這個結果不是所預期的,該訓練算法將調整存儲在觸角中的重量。在神經網絡的實際輸出和預料的輸出之間的差距稱為誤差。訓練將繼續(xù)到誤差小于一個可接受值為止。這個級別通常是一個百分數,如10%。我們現(xiàn)在分析必須用于訓練一個神經網絡的代碼。
訓練過程通過建立神經網絡開始,同時也必須創(chuàng)建隱蔽的輸入層和輸出層。
// 首先,創(chuàng)造這三個層
input = new SigmoidLayer();
hidden = new SigmoidLayer();
output = new SigmoidLayer();
每個層被使用JOONE對象SigmoidLayer創(chuàng)建。Sigmoidlayer基于自然對數生成一個輸出。JOONE還包含另外的層,而不是你可能選擇使用的S形的層類型。
下一步,每一層被賦于一個名字。這些名字將有助于后面在調試期間識別該層。
input.setLayerName("input");
hidden.setLayerName("hidden");
output.setLayerName("output");
現(xiàn)在必須定義每個層。我們將指定在每一層中的"行"號。該"行"號對應于這一層中的神經原的數目。
input.setRows(2);
hidden.setRows(3);
output.setRows(1);
從上面的代碼看出,輸入層有兩個神經原,隱蔽層有三個隱蔽神經原,輸出層包含一個神經原。這對于神經網絡包含兩個輸入神經原和一個輸出神經原是具有重要意義的,因為XOR運算符接收兩個參數而產生一個結果。
為使用該神經原層,我們也必須創(chuàng)建觸角。在本例中,我們要使用多個觸角。這些觸角用下面的代碼實現(xiàn)。
// 輸入-> 隱蔽的連接。
FullSynapse synapse_IH = new FullSynapse();
// 隱蔽-> 輸出連接。
FullSynapse synapse_HO = new FullSynapse();
就象神經原層的情況一樣,觸角也可能命名以有助于程序的調試。下面的代碼命名新建的觸角。
synapse_IH.setName("IH");
synapse_HO.setName("HO");
最后,我們必須把觸角聯(lián)接到適當神經原層。下面的代碼實現(xiàn)這一點。
// 聯(lián)接輸入層到隱蔽層
input.addOutputSynapse(synapse_IH);
hidden.addInputSynapse(synapse_IH);
// 聯(lián)接隱蔽層到輸出層
hidden.addOutputSynapse(synapse_HO);
output.addInputSynapse(synapse_HO);
現(xiàn)在既然神經網絡已被創(chuàng)建,我們必須創(chuàng)建一個用于調節(jié)該神經網絡的監(jiān)視器對象。下面的代碼創(chuàng)建監(jiān)視器對象。
//創(chuàng)建監(jiān)視器對象并且設置學習參數
monitor = new Monitor();
monitor.setLearningRate(0.8);
monitor.setMomentum(0.3);
學習速度和動力作為參數以用于指定訓練的產生方式。JOONE利用backpropagation學習算法。要更多了解關于學習速度或者動力的信息,你應該參考backpropagation算法。
這個監(jiān)視器對象應該被賦值給每一個神經原層。下面的代碼實現(xiàn)這一點。
input.setMonitor(monitor);
hidden.setMonitor(monitor);
output.setMonitor(monitor);
就象許多Java對象本身一樣,JOONE監(jiān)視器允許聽者可以添加到它上面去。隨著訓練的進行,JOONE將通知聽者有關訓練進程的信息。在這個簡單的例子中,我們使用:
monitor.addNeuralNetListener(this);
我們現(xiàn)在必須建立輸入觸角。如前所述,我們將使用一個FileInputSynapse來讀取一個磁盤文件。磁盤文件不是JOONE唯一能夠接受的輸入種類。JOONE對于不同的輸入源具有很強的靈活性。為使JOONE能夠接收其它輸入類型,你只需創(chuàng)建一個新的觸角來接受輸入。在本例中,我們將簡單地使用FileInputSynapse。FileInputSynapse首先被實例化。
inputStream = new FileInputSynapse();
然后,必須通知FileInputSynapse要使用哪些列。列表1中顯示的文件使用了輸入數據的前兩列。下面代碼建立起前兩列用于輸入到神經網絡。
// 前兩列包含輸入值
inputStream.setFirstCol(1);
inputStream.setLastCol(2);
然后,我們必須提供輸入文件的名字,這個名字直接來源于用戶接口。然后,提供一個編輯控件用于收集輸入文件的名字。下面代碼為FileInputSynapse設置文件名。
// 這是包含輸入數據的文件名
inputStream.setFileName(inputFile.getText());
如前所述,一個觸角僅是一個神經原層之間的數據導管。FileInputSynapse正是這里的數據導管,通過它數據進入到神經網絡。為了更容易實現(xiàn)這點,我們必須要把FileInputSynapse加到神經網絡的輸入層。這由下面一行實現(xiàn)。
input.addInputSynapse(inputStream);
現(xiàn)在既然已經建立起神經網絡,我們必須創(chuàng)建一個訓練員和一個監(jiān)視器。訓練員用于訓練該神經網絡,因為該監(jiān)視器通過一個事先設置好的訓練重復數來運行這個神經網絡。對于每一次訓練重復,數據被提供到神經網絡,然后就可以觀察到結果。該神經網絡的權重(存儲在穿梭在神經原層之間的觸角連接中)將根據誤差作適當調整。隨著訓練的進行,誤差級將下降。下列代碼建立訓練員并把它依附到監(jiān)視器。
trainer = new TeachingSynapse();
trainer.setMonitor(monitor);
你會記得列表1中提供的輸入文件包含三個列。到目前為止,我們僅僅使用了第一、二列,它們指定了到神經網絡的輸入。第三列包含當提供給神經網絡第一列中的數字時的期盼的輸出值。我們必須使得訓練員能夠存取該列以便能確定誤差。該錯誤是神經網絡的實際輸出和期盼的輸出之間的差距。下列代碼創(chuàng)建另外一個FileInputSynapse并作好準備以讀取與前面相同的輸入文件。
// 設置包含期望的響應值的文件,這由FileInputSynapse來提供
samples = new FileInputSynapse();
samples.setFileName(inputFile.getText());
這時,我們想指向在第三列的FileInputSynapse。下列代碼實現(xiàn)了這一點,然后讓訓練員使用這個FileInputSynapse。
//輸出值在文件中的第三列上
samples.setFirstCol(3);
samples.setLastCol(3);
trainer.setDesired(samples);
最后,訓練員被連結到神經網絡輸出層,這將使訓練員接收神經網絡的輸出。
// 連接訓練員到網絡的最后一層
output.addOutputSynapse(trainer);
我們現(xiàn)在已為所有的層準備好后臺線程,包括訓練員。
input.start();
hidden.start();
output.start();
trainer.start();
最后,我們?yōu)橛柧氃O置一些參數。我們指定在輸入文件中共有四行,而且想訓練20,000個周期,而且還在不段學習。如果你設置學習參數為false,該神經網絡將簡單地處理輸入并不進行學習。我們將在下一節(jié)討論輸入處理。
monitor.setPatterns(4);
monitor.setTotCicles(20000);
monitor.setLearning(true);
現(xiàn)在我們已經為訓練過程作好準備。調用監(jiān)視器的Go方法將在后臺啟動訓練過程。
monitor.Go();
神經網絡現(xiàn)在將要被訓練20,000個周期。當神經網絡訓練完成,誤差層應該在一個合理的低級別上。一般低于10%的誤差級是可接受的。
訓練神經網絡
為實現(xiàn)本文的目的,我們將指導JOONE去識別一個很簡單的模式。在這種模式中,我們將考察一個二進制的布爾操作,例如XOR。這個XOR操作的真值表列舉如下:
X Y X XOR Y
0 0 0
0 1 1
1 0 1
1 1 0
正如你從上表中看到的,XOR運算的結果是只有當X和Y具有不同值時,結果才為真(1)。其它情況下,XOR運算結果均為假(0)。默認地,JOONE從存儲在你的系統(tǒng)中的文本文件中取得輸入。這些文本文件通過使用一種稱為FileInputSynapse的特殊觸角來讀取。為了訓練XOR運算問題,你必須建立一個輸入文件-該文件包含上面顯示的數據。該文件顯示在列表1中。
列表1:為解決XOR問題的輸入文件的內容
0.0;0.0;0.0
0.0;1.0;1.0
1.0;0.0;1.0
1.0;1.0;0.0
我們現(xiàn)在分析一個簡單的程序,它指導JOONE來識別XOR運算并產生正確的結果。我們現(xiàn)在分析訓練該神經網絡必須被處理的過程。訓練過程包括把XOR問題提交給神經網絡,然后觀察結果。如果這個結果不是所預期的,該訓練算法將調整存儲在觸角中的重量。在神經網絡的實際輸出和預料的輸出之間的差距稱為誤差。訓練將繼續(xù)到誤差小于一個可接受值為止。這個級別通常是一個百分數,如10%。我們現(xiàn)在分析必須用于訓練一個神經網絡的代碼。
訓練過程通過建立神經網絡開始,同時也必須創(chuàng)建隱蔽的輸入層和輸出層。
// 首先,創(chuàng)造這三個層
input = new SigmoidLayer();
hidden = new SigmoidLayer();
output = new SigmoidLayer();
每個層被使用JOONE對象SigmoidLayer創(chuàng)建。Sigmoidlayer基于自然對數生成一個輸出。JOONE還包含另外的層,而不是你可能選擇使用的S形的層類型。
下一步,每一層被賦于一個名字。這些名字將有助于后面在調試期間識別該層。
input.setLayerName("input");
hidden.setLayerName("hidden");
output.setLayerName("output");
現(xiàn)在必須定義每個層。我們將指定在每一層中的"行"號。該"行"號對應于這一層中的神經原的數目。
input.setRows(2);
hidden.setRows(3);
output.setRows(1);
從上面的代碼看出,輸入層有兩個神經原,隱蔽層有三個隱蔽神經原,輸出層包含一個神經原。這對于神經網絡包含兩個輸入神經原和一個輸出神經原是具有重要意義的,因為XOR運算符接收兩個參數而產生一個結果。
為使用該神經原層,我們也必須創(chuàng)建觸角。在本例中,我們要使用多個觸角。這些觸角用下面的代碼實現(xiàn)。
// 輸入-> 隱蔽的連接。
FullSynapse synapse_IH = new FullSynapse();
// 隱蔽-> 輸出連接。
FullSynapse synapse_HO = new FullSynapse();
就象神經原層的情況一樣,觸角也可能命名以有助于程序的調試。下面的代碼命名新建的觸角。
synapse_IH.setName("IH");
synapse_HO.setName("HO");
最后,我們必須把觸角聯(lián)接到適當神經原層。下面的代碼實現(xiàn)這一點。
// 聯(lián)接輸入層到隱蔽層
input.addOutputSynapse(synapse_IH);
hidden.addInputSynapse(synapse_IH);
// 聯(lián)接隱蔽層到輸出層
hidden.addOutputSynapse(synapse_HO);
output.addInputSynapse(synapse_HO);
現(xiàn)在既然神經網絡已被創(chuàng)建,我們必須創(chuàng)建一個用于調節(jié)該神經網絡的監(jiān)視器對象。下面的代碼創(chuàng)建監(jiān)視器對象。
//創(chuàng)建監(jiān)視器對象并且設置學習參數
monitor = new Monitor();
monitor.setLearningRate(0.8);
monitor.setMomentum(0.3);
學習速度和動力作為參數以用于指定訓練的產生方式。JOONE利用backpropagation學習算法。要更多了解關于學習速度或者動力的信息,你應該參考backpropagation算法。
這個監(jiān)視器對象應該被賦值給每一個神經原層。下面的代碼實現(xiàn)這一點。
input.setMonitor(monitor);
hidden.setMonitor(monitor);
output.setMonitor(monitor);
就象許多Java對象本身一樣,JOONE監(jiān)視器允許聽者可以添加到它上面去。隨著訓練的進行,JOONE將通知聽者有關訓練進程的信息。在這個簡單的例子中,我們使用:
monitor.addNeuralNetListener(this);
我們現(xiàn)在必須建立輸入觸角。如前所述,我們將使用一個FileInputSynapse來讀取一個磁盤文件。磁盤文件不是JOONE唯一能夠接受的輸入種類。JOONE對于不同的輸入源具有很強的靈活性。為使JOONE能夠接收其它輸入類型,你只需創(chuàng)建一個新的觸角來接受輸入。在本例中,我們將簡單地使用FileInputSynapse。FileInputSynapse首先被實例化。
inputStream = new FileInputSynapse();
然后,必須通知FileInputSynapse要使用哪些列。列表1中顯示的文件使用了輸入數據的前兩列。下面代碼建立起前兩列用于輸入到神經網絡。
// 前兩列包含輸入值
inputStream.setFirstCol(1);
inputStream.setLastCol(2);
然后,我們必須提供輸入文件的名字,這個名字直接來源于用戶接口。然后,提供一個編輯控件用于收集輸入文件的名字。下面代碼為FileInputSynapse設置文件名。
// 這是包含輸入數據的文件名
inputStream.setFileName(inputFile.getText());
如前所述,一個觸角僅是一個神經原層之間的數據導管。FileInputSynapse正是這里的數據導管,通過它數據進入到神經網絡。為了更容易實現(xiàn)這點,我們必須要把FileInputSynapse加到神經網絡的輸入層。這由下面一行實現(xiàn)。
input.addInputSynapse(inputStream);
現(xiàn)在既然已經建立起神經網絡,我們必須創(chuàng)建一個訓練員和一個監(jiān)視器。訓練員用于訓練該神經網絡,因為該監(jiān)視器通過一個事先設置好的訓練重復數來運行這個神經網絡。對于每一次訓練重復,數據被提供到神經網絡,然后就可以觀察到結果。該神經網絡的權重(存儲在穿梭在神經原層之間的觸角連接中)將根據誤差作適當調整。隨著訓練的進行,誤差級將下降。下列代碼建立訓練員并把它依附到監(jiān)視器。
trainer = new TeachingSynapse();
trainer.setMonitor(monitor);
你會記得列表1中提供的輸入文件包含三個列。到目前為止,我們僅僅使用了第一、二列,它們指定了到神經網絡的輸入。第三列包含當提供給神經網絡第一列中的數字時的期盼的輸出值。我們必須使得訓練員能夠存取該列以便能確定誤差。該錯誤是神經網絡的實際輸出和期盼的輸出之間的差距。下列代碼創(chuàng)建另外一個FileInputSynapse并作好準備以讀取與前面相同的輸入文件。
// 設置包含期望的響應值的文件,這由FileInputSynapse來提供
samples = new FileInputSynapse();
samples.setFileName(inputFile.getText());
這時,我們想指向在第三列的FileInputSynapse。下列代碼實現(xiàn)了這一點,然后讓訓練員使用這個FileInputSynapse。
//輸出值在文件中的第三列上
samples.setFirstCol(3);
samples.setLastCol(3);
trainer.setDesired(samples);
最后,訓練員被連結到神經網絡輸出層,這將使訓練員接收神經網絡的輸出。
// 連接訓練員到網絡的最后一層
output.addOutputSynapse(trainer);
我們現(xiàn)在已為所有的層準備好后臺線程,包括訓練員。
input.start();
hidden.start();
output.start();
trainer.start();
最后,我們?yōu)橛柧氃O置一些參數。我們指定在輸入文件中共有四行,而且想訓練20,000個周期,而且還在不段學習。如果你設置學習參數為false,該神經網絡將簡單地處理輸入并不進行學習。我們將在下一節(jié)討論輸入處理。
monitor.setPatterns(4);
monitor.setTotCicles(20000);
monitor.setLearning(true);
現(xiàn)在我們已經為訓練過程作好準備。調用監(jiān)視器的Go方法將在后臺啟動訓練過程。
monitor.Go();
神經網絡現(xiàn)在將要被訓練20,000個周期。當神經網絡訓練完成,誤差層應該在一個合理的低級別上。一般低于10%的誤差級是可接受的
人工智能編程論文篇二
人工智能的應用與發(fā)展研究
摘 要:人工智能是用人工的方法和技術模仿、延伸和擴展人的智能,實現(xiàn)某些“機器思維”。本文在闡述人工智能定義的基礎上,詳細分析了人工智能的應用領域和當前的發(fā)展狀況,深入探討了人工智能未來的發(fā)展。
關鍵詞:人工智能;應用;問題;發(fā)展
當前,人工智能這個術語已被用作“研究如何在機器上實現(xiàn)人類智能”這門學科的名稱。從這個意義上說,可把它定義為:是一門研究如何構造智能機器或智能系統(tǒng),使它能模擬、延伸、擴展人類智能的學科。具體來說,人工智能就是研究如何使機器具有能聽、會說、能看、會寫、能思維、會學習、能適應環(huán)境變化、能解決各種實際問題的一門學科。
一、人工智能的應用現(xiàn)狀
大部分學科都有各自的研究領域,每個領域都有其獨有的研究課題和研究技術。在人工智能中,這樣的分支包含自動定理證明、問題求解、自然語言處理、人工智能方法、程序語言和智能數據檢索系統(tǒng)及自動程序設計等等。在過去的30年中,已經建立了一些具有人工智能的微機軟件系統(tǒng)。
目前,人工智能的應用領域主要有以下幾個方面:一是問題求解。到目前為止,人工智能程序能知道如何思考他們解決的問題;二是邏輯推理與定理證明。邏輯推理是人工智能研究中最持久的領域之一。定理尋找一個證明或反證,不僅需要有根據假設進行演繹的能力,而且許多非形式的工作,在人工智能方法的研究中定理證明是一個極其重要的論題。三是自然語言處理。自然語言的處理是人工智能技術應用與實際領域的典范,目前該領域的主要課題是:計算機系統(tǒng)如何以主題和對話情景為基礎,注重大量的嘗試一一世界知識和期望作用,生成和理解自然語言。四是智能信息檢索技術。信息獲取和凈精華技術已成為當代計算機科學與技術研究中迫切需要研究的課題,將人工智能技術應用于這一領域是人工智能走向廣泛實際應用的契機與突破口。五是專家系統(tǒng)。專家系統(tǒng)是目前人工智能中最活躍、最有成效的研究領域,它是一種具有特定領域內大量知識與經驗的程序系統(tǒng)。
二、人工智能的發(fā)展瓶頸
人工智能(AI)學科自1956年誕生至今已走過50多個年頭,就研究解釋和模擬人類智能、智能行為及其規(guī)律這一總目標來說,已經邁出了可喜的一步,某些領域已取得了相當的進展。但從整個發(fā)展的過程來看,人工智能發(fā)展曲折,而且還面臨不少難題,主要有以下幾個方面:
(一)研究方法不足
人工智能發(fā)展到今天,已經取得了長足進步,但人類對人腦結構和工作模式的認識還不全面、不深入,這也就決定了現(xiàn)階段神經網絡模型無法真正實現(xiàn)對人腦的模擬;硅基元素組成的電子器件與碳基元素組成的神經元組織在物理及化學屬性上有很大的不同,適合于人腦的工作模式,但并不適應神經網絡計算機;根據馬克思主義實踐論觀點,人腦是人類長期勞動實踐的產物,僅靠在實驗室里電子器件以及線路的排列組合是不可就能實現(xiàn)模擬的。
(二)機器翻譯存在困難
目前機器翻譯所面臨的主要問題仍然是構成句子的單詞和歧義性問題。歧義性問題一直是自然語言理解中的一大難關,要消除歧義性就要對原文的每一個句子及其上下文進行分析理解,尋找導致歧義的詞和詞組在上下文中的準確意義。然而,計算機卻往往孤立地將句子作為理解單位。另外,即使對原文有了一定的理解,理解的意義如何有效地在計算機里表示出來也存在問題。目前的NLU系統(tǒng)幾乎不能隨著時間的增長而增強理解力,系統(tǒng)的理解大都局限于表層上,沒有深層的推敲,沒有學習,沒有記憶,更沒有歸納。導致這種結果的原因是計算機本身結構和研究方法的問題。現(xiàn)在NLU的研究方法很不成熟,大多數研究局限在語言這一單獨的領域,而沒有對人們是如何理解語言這個問題做深入有效的探討。
(三)模式識別存在困惑
雖然使用計算機進行模式識別的研究與開發(fā)已取得大量成果,有的已成為產品投入實際應用,但是它的理論和方法與人的感官識別機制是全然不同的。人的識別手段、形象思維能力,是任何最先進的計算
機識別系統(tǒng)望塵莫及的,另一方面,在現(xiàn)實世界中,生活并不是一項結構嚴密的任務,一般家畜都能輕而易舉地對付,但機器不會,這并不是說它們永遠不會,而是說目前不會。
三、人工智能發(fā)展的思考
人工智能具有十分巨大的發(fā)展?jié)摿?,當前人工智能雖然經過多年研究已取得了一定成績,但這也僅僅是剛剛開始而已,繼續(xù)研究下去在很多方面都會有重大的突破。尤其是在科學技術日新月異的今天,各種新科技的出現(xiàn)層出不窮,人工智能將來的發(fā)展將不可限量:一是構建智能計算機,代替人類從事腦力勞動。將人類從繁雜的腦力勞動中解放出來,從而極大的提高運算速度和效率;二是機器學習??茖W家一直在致力于研究計算機怎樣模擬或實現(xiàn)人類的學習行為,以獲取新的知識或技能。雖然在過去的很長的一段時間內都沒有取得十分顯著的成果,但許多新的學習方法相繼問世,并且已經有了實際的應用,這充分說明在這方面的研究已經有了很大的進步。二是自然語言處理。它是計算機科學領域與人工智能領域中的一個重要方向。在經過人工智能研究人員的艱苦努力之后,在該領域中已取得了大量令人矚目的理論與實際應用成果,許多產品已經進入了眾多領域。智能信息檢索技術在Internet技術的影響下,近年來發(fā)展勢頭十分迅猛,而且已經成為了人工智能的一個獨立研究分支。
人工智能始終處于計算機這門學科的前沿,其研究的理論和成果在很大程度上將控制科學與技術,決定計算機技術的發(fā)展方向?,F(xiàn)如今,已經有許多人工智能的研究成果進入到人們的日常生活中。將來,人工智能技術的發(fā)展也必將會給人們的工作、生活和教育等帶來長遠深刻的影響。
看了“人工智能編程論文”的人還看了:
5.人工智能研究論文