人工智慧程式設計論文

  很少有程式設計師不對這裡或者那裡所包含的人工智慧程式設計所吸引,然而,許多對AI感興趣的程式設計師很快就因其中包含的演算法的複雜性而退卻。以下是小編精心整理的的相關資料,希望對你有幫助!

  篇一

  用Java開源專案JOONE實現人工智慧程式設計

  很少有程式設計師不對這裡或者那裡所包含的人工智慧程式設計所吸引,然而,許多對AI感興趣的程式設計師很快就因其中包含的演算法的複雜性而退卻。在本文中,我們將討論一個能大大簡化這種複雜性的Java開源工程。

  Java面向物件的神經網路JOONE是一開源工程,它提供給Java程式設計師一個高適應性的神經網路。該JOONE工程原始碼由LGPL所保護。簡言之,這意味著原始碼是可自由使用的而且你不需要支付版稅就可以使用JOONE。JOONE可以從

  JOONE能允許你輕易地從一個Java程式中建立神經網路。JOONE支援許多特徵,如多執行緒和分散式處理。這意味著JOONE能利用多處理機計算機和多臺計算機的優勢來進行分散式處理。

  神經網路

  JOONE用Java實現了一個人工神經網路。一個人工神經網路試圖仿效生物學神經網路的功能--神經網路組成今天在地球上幾乎所有高等生命的大腦形式。神經網路由神經原組成。

  從圖1中你可以看出,神經原由一個核心細胞和幾個長長的稱為觸角的聯結器組成。神經原之間依靠這些觸角進行連線。無論是生物學的還是人工的神經網路,都通過觸角把訊號從一個神經原傳遞到另一個神經原來工作。

  使用JOONE

  在這篇文章中,你將看到一個簡單的怎樣使用JOONE的例項。神經網路題目涉及廣泛並覆蓋許多不同的應用領域。在本文中,我們將展示給你怎樣使用JOONE來解決一個很簡單的模式識別問題。模式識別是神經網路中的最普遍的應用之一。

  模式識別提供給神經網路一種模式,判斷是否該神經網路能夠識別出該模式。這種模式應該能夠在某種程度上被扭曲而該神經網路仍然能夠識別它。這很像人類識別東西如一個交通標誌的能力。人類應該能夠識別在下雨天,晴天或者晚上的交通標誌。即使這些影象看上去可能相當不同,但人類的大腦仍能夠判斷出它們是一樣的影象。

  當進行JOONE程式設計時,你一般要使用兩種型別的物件。你要使用神經原層物件,用於描述一層的一個或多個的具有相似特徵的神經原。神經網路經常有一層或兩層神經元。這些神經元層通過觸角聯絡在一起。這些觸角把這種待識別的模式,從一個神經元層傳輸到另一個神經元層。

  觸角不僅把這種模式從一個神經元層傳輸到另一個神經元層。觸角還將生成一些指向這種模式的元素的斜線。這些斜線將導致這種模式的某些元素在被傳輸到下一個神經元層時不如通過其它方式傳遞更有效些。這些斜線通常稱為權重,它們形成神經網路的儲存系統。通過調整儲存在觸角中的這些權重,可以更改神經網路的行為。

  觸角在JOONE中還承擔著另外一個角色。在JOONE中,可以把觸角看作是資料導管。正如觸角把模式從一個神經元層傳輸到另一個神經元層,指定版本的觸角用於把模式傳入和傳出神經網路。下面將給你展示一個簡單的單層的神經網路是怎樣被構建並進行模式識別的。

  訓練神經網路

  為實現本文的目的,我們將指導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從儲存在你的系統中的文字檔案中取得輸入。這些文字檔案通過使用一種稱為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

  我們現在分析一個簡單的程式,它指導JOONE來識別XOR運算併產生正確的結果。我們現在分析訓練該神經網路必須被處理的過程。訓練過程包括把XOR問題提交給神經網路,然後觀察結果。如果這個結果不是所預期的,該訓練演算法將調整儲存在觸角中的重量。在神經網路的實際輸出和預料的輸出之間的差距稱為誤差。訓練將繼續到誤差小於一個可接受值為止。這個級別通常是一個百分數,如10%。我們現在分析必須用於訓練一個神經網路的程式碼。

  訓練過程通過建立神經網路開始,同時也必須建立隱蔽的輸入層和輸出層。

  // 首先,創造這三個層

  input = new SigmoidLayer;

  hidden = new SigmoidLayer;

  output = new SigmoidLayer;

  每個層被使用JOONE物件SigmoidLayer建立。Sigmoidlayer基於自然對數生成一個輸出。JOONE還包含另外的層,而不是你可能選擇使用的S形的層型別。

  下一步,每一層被賦於一個名字。這些名字將有助於後面在除錯期間識別該層。

  input.setLayerName"input";

  hidden.setLayerName"hidden";

  output.setLayerName"output";

  現在必須定義每個層。我們將指定在每一層中的"行"號。該"行"號對應於這一層中的神經原的數目。

  input.setRows2;

  hidden.setRows3;

  output.setRows1;

  從上面的程式碼看出,輸入層有兩個神經原,隱蔽層有三個隱蔽神經原,輸出層包含一個神經原。這對於神經網路包含兩個輸入神經原和一個輸出神經原是具有重要意義的,因為XOR運算子接收兩個引數而產生一個結果。

  為使用該神經原層,我們也必須建立觸角。在本例中,我們要使用多個觸角。這些觸角用下面的程式碼實現。

  // 輸入-> 隱蔽的連線。

  FullSynapse synapse_IH = new FullSynapse;

  // 隱蔽-> 輸出連線。

  FullSynapse synapse_HO = new FullSynapse;

  就象神經原層的情況一樣,觸角也可能命名以有助於程式的除錯。下面的程式碼命名新建的觸角。

  synapse_IH.setName"IH";

  synapse_HO.setName"HO";

  最後,我們必須把觸角聯接到適當神經原層。下面的程式碼實現這一點。

  // 聯接輸入層到隱蔽層

  input.addOutputSynapsesynapse_IH;

  hidden.addInputSynapsesynapse_IH;

  // 聯接隱蔽層到輸出層

  hidden.addOutputSynapsesynapse_HO;

  output.addInputSynapsesynapse_HO;

  現在既然神經網路已被建立,我們必須建立一個用於調節該神經網路的監視器物件。下面的程式碼建立監視器物件。

  //建立監視器物件並且設定學習引數

  monitor = new Monitor;

  monitor.setLearningRate0.8;

  monitor.setMomentum0.3;

  學習速度和動力作為引數以用於指定訓練的產生方式。JOONE利用backpropagation學習演算法。要更多瞭解關於學習速度或者動力的資訊,你應該參考backpropagation演算法。

  這個監視器物件應該被賦值給每一個神經原層。下面的程式碼實現這一點。

  input.setMonitormonitor;

  hidden.setMonitormonitor;

  output.setMonitormonitor;

  就象許多Java物件本身一樣,JOONE監視器允許聽者可以新增到它上面去。隨著訓練的進行,JOONE將通知聽者有關訓練程序的資訊。在這個簡單的例子中,我們使用:

  monitor.addNeuralNetListenerthis;

  我們現在必須建立輸入觸角。如前所述,我們將使用一個FileInputSynapse來讀取一個磁碟檔案。磁碟檔案不是JOONE唯一能夠接受的輸入種類。JOONE對於不同的輸入源具有很強的靈活性。為使JOONE能夠接收其它輸入型別,你只需建立一個新的觸角來接受輸入。在本例中,我們將簡單地使用FileInputSynapse。FileInputSynapse首先被例項化。

  inputStream = new FileInputSynapse;

  然後,必須通知FileInputSynapse要使用哪些列。列表1中顯示的檔案使用了輸入資料的前兩列。下面程式碼建立起前兩列用於輸入到神經網路。

  // 前兩列包含輸入值

  inputStream.setFirstCol1;

  inputStream.setLastCol2;

  然後,我們必須提供輸入檔案的名字,這個名字直接來源於使用者介面。然後,提供一個編輯控制元件用於收集輸入檔案的名字。下面程式碼為FileInputSynapse設定檔名。

  // 這是包含輸入資料的檔名

  inputStream.setFileNameinputFile.getText;

  如前所述,一個觸角僅是一個神經原層之間的資料導管。FileInputSynapse正是這裡的資料導管,通過它資料進入到神經網路。為了更容易實現這點,我們必須要把FileInputSynapse加到神經網路的輸入層。這由下面一行實現。

  input.addInputSynapseinputStream;

  現在既然已經建立起神經網路,我們必須建立一個訓練員和一個監視器。訓練員用於訓練該神經網路,因為該監視器通過一個事先設定好的訓練重複數來執行這個神經網路。對於每一次訓練重複,資料被提供到神經網路,然後就可以觀察到結果。該神經網路的權重儲存在穿梭在神經原層之間的觸角連線中將根據誤差作適當調整。隨著訓練的進行,誤差級將下降。下列程式碼建立訓練員並把它依附到監視器。

  trainer = new TeachingSynapse;

  trainer.setMonitormonitor;

  你會記得列表1中提供的輸入檔案包含三個列。到目前為止,我們僅僅使用了第一、二列,它們指定了到神經網路的輸入。第三列包含當提供給神經網路第一列中的數字時的期盼的輸出值。我們必須使得訓練員能夠存取該列以便能確定誤差。該錯誤是神經網路的實際輸出和期盼的輸出之間的差距。下列程式碼建立另外一個FileInputSynapse並作好準備以讀取與前面相同的輸入檔案。

  // 設定包含期望的響應值的檔案,這由FileInputSynapse來提供

  samples = new FileInputSynapse;

  samples.setFileNameinputFile.getText;

  這時,我們想指向在第三列的FileInputSynapse。下列程式碼實現了這一點,然後讓訓練員使用這個FileInputSynapse。

  //輸出值在檔案中的第三列上

  samples.setFirstCol3;

  samples.setLastCol3;

  trainer.setDesiredsamples;

  最後,訓練員被連結到神經網路輸出層,這將使訓練員接收神經網路的輸出。

  // 連線訓練員到網路的最後一層

  output.addOutputSynapsetrainer;

  我們現在已為所有的層準備好後臺執行緒,包括訓練員。

  input.start;

  hidden.start;

  output.start;

  trainer.start;

  最後,我們為訓練設定一些引數。我們指定在輸入檔案中共有四行,而且想訓練20,000個週期,而且還在不段學習。如果你設定學習引數為false,該神經網路將簡單地處理輸入並不進行學習。我們將在下一節討論輸入處理。

  monitor.setPatterns4;

  monitor.setTotCicles20000;

  monitor.setLearningtrue;

  現在我們已經為訓練過程作好準備。呼叫監視器的Go方法將在後臺啟動訓練過程。

  monitor.Go;

  神經網路現在將要被訓練20,000個週期。當神經網路訓練完成,誤差層應該在一個合理的低級別上。一般低於10%的誤差級是可接受的。

  訓練神經網路

  為實現本文的目的,我們將指導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從儲存在你的系統中的文字檔案中取得輸入。這些文字檔案通過使用一種稱為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

  我們現在分析一個簡單的程式,它指導JOONE來識別XOR運算併產生正確的結果。我們現在分析訓練該神經網路必須被處理的過程。訓練過程包括把XOR問題提交給神經網路,然後觀察結果。如果這個結果不是所預期的,該訓練演算法將調整儲存在觸角中的重量。在神經網路的實際輸出和預料的輸出之間的差距稱為誤差。訓練將繼續到誤差小於一個可接受值為止。這個級別通常是一個百分數,如10%。我們現在分析必須用於訓練一個神經網路的程式碼。

  訓練過程通過建立神經網路開始,同時也必須建立隱蔽的輸入層和輸出層。

  // 首先,創造這三個層

  input = new SigmoidLayer;

  hidden = new SigmoidLayer;

  output = new SigmoidLayer;

  每個層被使用JOONE物件SigmoidLayer建立。Sigmoidlayer基於自然對數生成一個輸出。JOONE還包含另外的層,而不是你可能選擇使用的S形的層型別。

  下一步,每一層被賦於一個名字。這些名字將有助於後面在除錯期間識別該層。

  input.setLayerName"input";

  hidden.setLayerName"hidden";

  output.setLayerName"output";

  現在必須定義每個層。我們將指定在每一層中的"行"號。該"行"號對應於這一層中的神經原的數目。

  input.setRows2;

  hidden.setRows3;

  output.setRows1;

  從上面的程式碼看出,輸入層有兩個神經原,隱蔽層有三個隱蔽神經原,輸出層包含一個神經原。這對於神經網路包含兩個輸入神經原和一個輸出神經原是具有重要意義的,因為XOR運算子接收兩個引數而產生一個結果。

  為使用該神經原層,我們也必須建立觸角。在本例中,我們要使用多個觸角。這些觸角用下面的程式碼實現。

  // 輸入-> 隱蔽的連線。

  FullSynapse synapse_IH = new FullSynapse;

  // 隱蔽-> 輸出連線。

  FullSynapse synapse_HO = new FullSynapse;

  就象神經原層的情況一樣,觸角也可能命名以有助於程式的除錯。下面的程式碼命名新建的觸角。

  synapse_IH.setName"IH";

  synapse_HO.setName"HO";

  最後,我們必須把觸角聯接到適當神經原層。下面的程式碼實現這一點。

  // 聯接輸入層到隱蔽層

  input.addOutputSynapsesynapse_IH;

  hidden.addInputSynapsesynapse_IH;

  // 聯接隱蔽層到輸出層

  hidden.addOutputSynapsesynapse_HO;

  output.addInputSynapsesynapse_HO;

  現在既然神經網路已被建立,我們必須建立一個用於調節該神經網路的監視器物件。下面的程式碼建立監視器物件。

  //建立監視器物件並且設定學習引數

  monitor = new Monitor;

  monitor.setLearningRate0.8;

  monitor.setMomentum0.3;

  學習速度和動力作為引數以用於指定訓練的產生方式。JOONE利用backpropagation學習演算法。要更多瞭解關於學習速度或者動力的資訊,你應該參考backpropagation演算法。

  這個監視器物件應該被賦值給每一個神經原層。下面的程式碼實現這一點。

  input.setMonitormonitor;

  hidden.setMonitormonitor;

  output.setMonitormonitor;

  就象許多Java物件本身一樣,JOONE監視器允許聽者可以新增到它上面去。隨著訓練的進行,JOONE將通知聽者有關訓練程序的資訊。在這個簡單的例子中,我們使用:

  monitor.addNeuralNetListenerthis;

  我們現在必須建立輸入觸角。如前所述,我們將使用一個FileInputSynapse來讀取一個磁碟檔案。磁碟檔案不是JOONE唯一能夠接受的輸入種類。JOONE對於不同的輸入源具有很強的靈活性。為使JOONE能夠接收其它輸入型別,你只需建立一個新的觸角來接受輸入。在本例中,我們將簡單地使用FileInputSynapse。FileInputSynapse首先被例項化。

  inputStream = new FileInputSynapse;

  然後,必須通知FileInputSynapse要使用哪些列。列表1中顯示的檔案使用了輸入資料的前兩列。下面程式碼建立起前兩列用於輸入到神經網路。

  // 前兩列包含輸入值

  inputStream.setFirstCol1;

  inputStream.setLastCol2;

  然後,我們必須提供輸入檔案的名字,這個名字直接來源於使用者介面。然後,提供一個編輯控制元件用於收集輸入檔案的名字。下面程式碼為FileInputSynapse設定檔名。

  // 這是包含輸入資料的檔名

  inputStream.setFileNameinputFile.getText;

  如前所述,一個觸角僅是一個神經原層之間的資料導管。FileInputSynapse正是這裡的資料導管,通過它資料進入到神經網路。為了更容易實現這點,我們必須要把FileInputSynapse加到神經網路的輸入層。這由下面一行實現。

  input.addInputSynapseinputStream;

  現在既然已經建立起神經網路,我們必須建立一個訓練員和一個監視器。訓練員用於訓練該神經網路,因為該監視器通過一個事先設定好的訓練重複數來執行這個神經網路。對於每一次訓練重複,資料被提供到神經網路,然後就可以觀察到結果。該神經網路的權重儲存在穿梭在神經原層之間的觸角連線中將根據誤差作適當調整。隨著訓練的進行,誤差級將下降。下列程式碼建立訓練員並把它依附到監視器。

  trainer = new TeachingSynapse;

  trainer.setMonitormonitor;

  你會記得列表1中提供的輸入檔案包含三個列。到目前為止,我們僅僅使用了第一、二列,它們指定了到神經網路的輸入。第三列包含當提供給神經網路第一列中的數字時的期盼的輸出值。我們必須使得訓練員能夠存取該列以便能確定誤差。該錯誤是神經網路的實際輸出和期盼的輸出之間的差距。下列程式碼建立另外一個FileInputSynapse並作好準備以讀取與前面相同的輸入檔案。

  // 設定包含期望的響應值的檔案,這由FileInputSynapse來提供

  samples = new FileInputSynapse;

  samples.setFileNameinputFile.getText;

  這時,我們想指向在第三列的FileInputSynapse。下列程式碼實現了這一點,然後讓訓練員使用這個FileInputSynapse。

  //輸出值在檔案中的第三列上

  samples.setFirstCol3;

  samples.setLastCol3;

  trainer.setDesiredsamples;

  最後,訓練員被連結到神經網路輸出層,這將使訓練員接收神經網路的輸出。

  // 連線訓練員到網路的最後一層

  output.addOutputSynapsetrainer;

  我們現在已為所有的層準備好後臺執行緒,包括訓練員。

  input.start;

  hidden.start;

  output.start;

  trainer.start;

  最後,我們為訓練設定一些引數。我們指定在輸入檔案中共有四行,而且想訓練20,000個週期,而且還在不段學習。如果你設定學習引數為false,該神經網路將簡單地處理輸入並不進行學習。我們將在下一節討論輸入處理。

  monitor.setPatterns4;

  monitor.setTotCicles20000;

  monitor.setLearningtrue;

  現在我們已經為訓練過程作好準備。呼叫監視器的Go方法將在後臺啟動訓練過程。

  monitor.Go;

  神經網路現在將要被訓練20,000個週期。當神經網路訓練完成,誤差層應該在一個合理的低級別上。一般低於10%的誤差級是可接受的

  篇二

  人工智慧的應用與發展研究

  摘 要:人工智慧是用人工的方法和技術模仿、延伸和擴充套件人的智慧,實現某些“機器思維”。本文在闡述人工智慧定義的基礎上,詳細分析了人工智慧的應用領域和當前的發展狀況,深入探討了人工智慧未來的發展。

  關鍵詞:人工智慧;應用;問題;發展

  當前,人工智慧這個術語已被用作“研究如何在機器上實現人類智慧”這門學科的名稱。從這個意義上說,可把它定義為:是一門研究如何構造智慧機器或智慧系統,使它能模擬、延伸、擴充套件人類智慧的學科。具體來說,人工智慧就是研究如何使機器具有能聽、會說、能看、會寫、能思維、會學習、能適應環境變化、能解決各種實際問題的一門學科。

  一、人工智慧的應用現狀

  大部分學科都有各自的研究領域,每個領域都有其獨有的研究課題和研究技術。在人工智慧中,這樣的分支包含自動定理證明、問題求解、自然語言處理、人工智慧方法、程式語言和智慧資料檢索系統及自動程式設計等等。在過去的30年中,已經建立了一些具有人工智慧的微機軟體系統。

  目前,人工智慧的應用領域主要有以下幾個方面:一是問題求解。到目前為止,人工智慧程式能知道如何思考他們解決的問題;二是邏輯推理與定理證明。邏輯推理是人工智慧研究中最持久的領域之一。定理尋找一個證明或反證,不僅需要有根據假設進行演繹的能力,而且許多非形式的工作,在人工智慧方法的研究中定理證明是一個極其重要的論題。三是自然語言處理。自然語言的處理是人工智慧技術應用與實際領域的典範,目前該領域的主要課題是:計算機系統如何以主題和對話情景為基礎,注重大量的嘗試一一世界知識和期望作用,生成和理解自然語言。四是智慧資訊檢索技術。資訊獲取和淨精華技術已成為當代電腦科學與技術研究中迫切需要研究的課題,將人工智慧技術應用於這一領域是人工智慧走向廣泛實際應用的契機與突破口。五是專家系統。專家系統是目前人工智慧中最活躍、最有成效的研究領域,它是一種具有特定領域內大量知識與經驗的程式系統。

  二、人工智慧的發展瓶頸

  人工智慧AI學科自1956年誕生至今已走過50多個年頭,就研究解釋和模擬人類智慧、智慧行為及其規律這一總目標來說,已經邁出了可喜的一步,某些領域已取得了相當的進展。但從整個發展的過程來看,人工智慧發展曲折,而且還面臨不少難題,主要有以下幾個方面:

  一研究方法不足

  人工智慧發展到今天,已經取得了長足進步,但人類對人腦結構和工作模式的認識還不全面、不深入,這也就決定了現階段神經網路模型無法真正實現對人腦的模擬;矽基元素組成的電子器件與碳基元素組成的神經元組織在物理及化學屬性上有很大的不同,適合於人腦的工作模式,但並不適應神經網路計算機;根據馬克思主義實踐論觀點,人腦是人類長期勞動實踐的產物,僅靠在實驗室裡電子器件以及線路的排列組合是不可就能實現模擬的。

  二機器翻譯存在困難

  目前機器翻譯所面臨的主要問題仍然是構成句子的單詞和歧義性問題。歧義性問題一直是自然語言理解中的一大難關,要消除歧義性就要對原文的每一個句子及其上下文進行分析理解,尋找導致歧義的詞和片語在上下文中的準確意義。然而,計算機卻往往孤立地將句子作為理解單位。另外,即使對原文有了一定的理解,理解的意義如何有效地在計算機裡表示出來也存在問題。目前的NLU系統幾乎不能隨著時間的增長而增強理解力,系統的理解大都侷限於表層上,沒有深層的推敲,沒有學習,沒有記憶,更沒有歸納。導致這種結果的原因是計算機本身結構和研究方法的問題。現在NLU的研究方法很不成熟,大多數研究侷限在語言這一單獨的領域,而沒有對人們是如何理解語言這個問題做深入有效的探討。

  三模式識別存在困惑

  雖然使用計算機進行模式識別的研究與開發已取得大量成果,有的已成為產品投入實際應用,但是它的理論和方法與人的感官識別機制是全然不同的。人的識別手段、形象思維能力,是任何最先進的計算

  機識別系統望塵莫及的,另一方面,在現實世界中,生活並不是一項結構嚴密的任務,一般家畜都能輕而易舉地對付,但機器不會,這並不是說它們永遠不會,而是說目前不會。

  三、人工智慧發展的思考

  人工智慧具有十分巨大的發展潛力,當前人工智慧雖然經過多年研究已取得了一定成績,但這也僅僅是剛剛開始而已,繼續研究下去在很多方面都會有重大的突破。尤其是在科學技術日新月異的今天,各種新科技的出現層出不窮,人工智慧將來的發展將不可限量:一是構建智慧計算機,代替人類從事腦力勞動。將人類從繁雜的腦力勞動中解放出來,從而極大的提高運算速度和效率;二是機器學習。科學家一直在致力於研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能。雖然在過去的很長的一段時間內都沒有取得十分顯著的成果,但許多新的學習方法相繼問世,並且已經有了實際的應用,這充分說明在這方面的研究已經有了很大的進步。二是自然語言處理。它是電腦科學領域與人工智慧領域中的一個重要方向。在經過人工智慧研究人員的艱苦努力之後,在該領域中已取得了大量令人矚目的理論與實際應用成果,許多產品已經進入了眾多領域。智慧資訊檢索技術在Internet技術的影響下,近年來發展勢頭十分迅猛,而且已經成為了人工智慧的一個獨立研究分支。

  人工智慧始終處於計算機這門學科的前沿,其研究的理論和成果在很大程度上將控制科學與技術,決定計算機技術的發展方向。現如今,已經有許多人工智慧的研究成果進入到人們的日常生活中。將來,人工智慧技術的發展也必將會給人們的工作、生活和教育等帶來長遠深刻的影響。