自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

人工智能教程(二):人工智能的歷史以及再探矩陣

人工智能
在本文中,我們將深入地討論人工智能的核心——矩陣。不過在此之前,我們先來了解一下人工智能的歷史。

在本系列的 第一篇文章 中,我們討論了人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、數(shù)據(jù)科學(xué)等領(lǐng)域的關(guān)聯(lián)和區(qū)別。我們還就整個(gè)系列將使用的編程語言、工具等做出了一些艱難的選擇。最后,我們還介紹了一點(diǎn)矩陣的知識(shí)。在本文中,我們將深入地討論人工智能的核心——矩陣。不過在此之前,我們先來了解一下人工智能的歷史。

我們?yōu)槭裁葱枰私馊斯ぶ悄艿臍v史呢?歷史上曾出現(xiàn)過多次人工智能熱潮,但在很多情況下,對(duì)人工智能潛力的巨大期望都未能達(dá)成。了解人工智能的歷史,有助于讓我們看清這次人工智浪潮是會(huì)創(chuàng)造奇跡,抑或只是另一個(gè)即將破滅的泡沫。

我們對(duì)人工智能的最尋起源于何時(shí)呢?是在發(fā)明數(shù)字計(jì)算機(jī)之后嗎?還是更早呢?我相信對(duì)一個(gè)無所不知的存在的追求可以追溯到文明之初。比如古希臘神話中的 德爾菲Delphi 就是這樣一位能回答任何問題的先知。從遠(yuǎn)古時(shí)代起,對(duì)于超越人類智慧的創(chuàng)造性機(jī)器的探索同樣吸引著我們 。歷史上有過幾次制造國際象棋機(jī)器的失敗的嘗試。其中就有臭名昭著的機(jī)械特克Mechanical Turk,它并不是真正的機(jī)器人,而是由一位藏在內(nèi)部的棋手操控的。約翰·納皮爾John Napier 發(fā)明的對(duì)數(shù)、布萊斯·帕斯卡Blaise Pascal 的計(jì)算器、查爾斯·巴貝奇Charles Babbage 的差分機(jī)等,這些都是人工智能研究的前身?;仡櫲祟悮v史,你會(huì)發(fā)現(xiàn)更多真實(shí)或虛構(gòu)的時(shí)刻,人們想要獲得超越人腦的智能。如果不考慮以上這些歷史成就,對(duì)真正人工智能的探索起始于數(shù)字計(jì)算機(jī)的發(fā)明。

那么,人工智能發(fā)展至今有哪些里程碑呢?前面已經(jīng)提到,數(shù)字計(jì)算機(jī)的發(fā)明是人工智能研究歷程中最重要的事件。與可擴(kuò)展性依賴于功率需求的機(jī)電設(shè)備不同,數(shù)字設(shè)備受益于技術(shù)進(jìn)步,比如從真空管到晶體管到集成電路再到如今的超大規(guī)模集成技術(shù)。

人工智能發(fā)展的另一個(gè)里程碑是 阿蘭·圖靈Alan Turing 首次對(duì)人工智能的理論分析。他提出的 圖靈測(cè)試Turing test 是最早的人工智能測(cè)試方法之一?,F(xiàn)在圖靈測(cè)試可能已經(jīng)不太適用了,但它是定義人工智能的最初嘗試之一。圖靈測(cè)試可以簡(jiǎn)單描述如下:假設(shè)有一臺(tái)能夠與人類對(duì)話的機(jī)器,如果它能在對(duì)話中讓人無法分辨它是人還是機(jī)器,那么就可以認(rèn)為這臺(tái)機(jī)器具有智能。如今的聊天機(jī)器人非常強(qiáng)大,使我們很容易看出圖靈測(cè)試無法識(shí)別出真正的人工智能。但在 20 世紀(jì) 50 年代初,這確實(shí)為理解人工智能提供了一個(gè)理論框架。

20 世紀(jì) 50 年代末,約翰·麥卡錫John McCarthy 發(fā)明了 Lisp 編程語言。它是最早的高級(jí)編程語言之一。在此之前,計(jì)算機(jī)編程用的是機(jī)器語言和匯編語言(眾所周知地難用)。有了強(qiáng)大的機(jī)器和編程語言,計(jì)算機(jī)科學(xué)家中的樂觀主義和夢(mèng)想家順理成章地開始用它們來創(chuàng)造人工智能。20 世紀(jì) 60 年代初,對(duì)人工智能機(jī)器的期望達(dá)到了頂峰。當(dāng)然計(jì)算機(jī)科學(xué)領(lǐng)域取得了很大發(fā)展,但人工智能的奇跡發(fā)生了嗎?很遺憾,并沒有。20 世紀(jì) 60 年代見證了第一次人工智能熱潮的興起和破滅。然而計(jì)算機(jī)科學(xué)以無與倫比的速度繼續(xù)發(fā)展著。

到了 70 年代和 80 年代,算法在這一時(shí)期發(fā)揮了主要作用。在這段時(shí)間,許多新的高效算法被提出。20 世紀(jì) 60 年代末高德納·克努特Donald Knuth(我強(qiáng)烈建議你了解一下他,在計(jì)算機(jī)科學(xué)界,他相當(dāng)于數(shù)學(xué)界的高斯或歐拉)著名的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)The Art of Computer Programming》第一卷的出版標(biāo)志著算法時(shí)代的開始。在這些年中,開發(fā)了許多通用算法和圖算法。此外,基于人工神經(jīng)網(wǎng)絡(luò)的編程也在此時(shí)興起。盡管早在 20 世紀(jì) 40 年代,沃倫·S.·麥卡洛克Warren S. McCulloch和沃爾特·皮茨Walter Pitts 就率先提出了人工神經(jīng)網(wǎng)絡(luò),但直到幾十年后它才成為主流技術(shù)。今天,深度學(xué)習(xí)幾乎完全是基于人工神經(jīng)網(wǎng)絡(luò)的。算法領(lǐng)域的這種發(fā)展導(dǎo)致了 20 世紀(jì) 80 年代人工智能研究的復(fù)蘇。然而,這一次,通信和算力的限制阻礙了人工智能的發(fā)展,使其未能達(dá)到人們野心勃勃的預(yù)期。然后是 90 年代、千禧年,直到今天。又一次,我們對(duì)人工智能的積極影響充滿了熱情和希望。

我你們可以看到,在數(shù)字時(shí)代,人工智能至少有兩次前景光明的機(jī)會(huì)。但這兩次人工智能都沒有達(dá)到它的預(yù)期?,F(xiàn)在的人工智能浪潮也與此類似嗎?當(dāng)然這個(gè)問題很難回答。但我個(gè)人認(rèn)為,這一次人工智能將產(chǎn)生巨大的影響(LCTT 譯注:本文發(fā)表于 2022 年 6 月,半年后,ChatGTP 才推出)。是什么讓我做出這樣的預(yù)測(cè)呢?第一,現(xiàn)在的高性能計(jì)算設(shè)備價(jià)格低廉且容易獲得。在 20 世紀(jì) 60 年代或 80 年代,只有幾臺(tái)如此強(qiáng)大的計(jì)算設(shè)備,而現(xiàn)在我們有數(shù)百萬甚至數(shù)十億臺(tái)這樣的機(jī)器。第二,現(xiàn)在有大量數(shù)據(jù)可用來訓(xùn)練人工智能和機(jī)器學(xué)習(xí)程序。想象一下,90 年代從事數(shù)字圖像處理的人工智能工程師,能有多少數(shù)字圖像來訓(xùn)練算法呢?也許是幾千或者幾萬張吧?,F(xiàn)在單單數(shù)據(jù)科學(xué)平臺(tái) Kaggle(谷歌的子公司)就擁有超過 1 萬個(gè)數(shù)據(jù)集?;ヂ?lián)網(wǎng)上每天產(chǎn)生的大量數(shù)據(jù)使訓(xùn)練算法變得容易得多。第三,高速的互聯(lián)網(wǎng)連接使得與大型機(jī)構(gòu)協(xié)作變得更加容易。21 世紀(jì)的頭 10 年,計(jì)算機(jī)科學(xué)家之間的合作還很困難。如今互聯(lián)網(wǎng)的速度已經(jīng)使谷歌 Colab、Kaggle、Project jupiter 等人工智能項(xiàng)目的協(xié)作成為現(xiàn)實(shí)。由于這三個(gè)因素,我相信這一次人工智能將永遠(yuǎn)存在,并會(huì)出現(xiàn)許多優(yōu)秀的應(yīng)用。

更多矩陣的知識(shí)

圖 1:矩陣 A、B、C、D圖 1:矩陣 A、B、C、D

在大致了解了人工智能的歷史后,現(xiàn)在是時(shí)候回到矩陣與向量這一主題上了。在上一篇文章中,我已經(jīng)對(duì)它們做了簡(jiǎn)要介紹。這一次,我們將更深入矩陣的世界。首先看圖 1 和 圖 2,其中顯示了從 A 到 H 共 8 個(gè)矩陣。為什么人工智能和機(jī)器學(xué)習(xí)教程中需要這么多矩陣呢?首先,正如前一篇文章中提到的,矩陣是線性代數(shù)的核心,而線性代數(shù)即使不是機(jī)器學(xué)習(xí)的大腦,也是機(jī)器學(xué)習(xí)的核心。其次,在接下來的討論中,它們每一個(gè)都有特定的用途。

圖 2:矩陣 E、F、G、H圖 2:矩陣 E、F、G、H

讓我們看看矩陣是如何表示的,以及如何獲取它們的詳細(xì)信息。圖 3 展示了怎么用 NumPy 表示矩陣 A。雖然矩陣和數(shù)組并不完全等價(jià),但實(shí)踐中我們經(jīng)常將它們作為同義詞來使用。

圖 3:用 NumPy 表示矩陣 A圖 3:用 NumPy 表示矩陣 A

我強(qiáng)烈建議你仔細(xì)學(xué)習(xí)如何使用 NumPy 的 array 函數(shù)創(chuàng)建矩陣。雖然 NumPy 也提供了 matrix 函數(shù)來創(chuàng)建二維數(shù)組和矩陣。但是它將在未來被廢棄,所以不再建議使用了。在圖 3 還顯示了矩陣 A 的一些詳細(xì)信息。A.size 告訴我們數(shù)組中元素的個(gè)數(shù)。在我們的例子中,它是 9。代碼 A.nidm 表示數(shù)組的 維數(shù)dimension。很容易看出矩陣 A 是二維的。A.shape 表示矩陣 A 的階數(shù)order,矩陣的階數(shù)是矩陣的行數(shù)和列數(shù)。雖然我不會(huì)進(jìn)一步解釋,但使用 NumPy 庫時(shí)需要注意矩陣的大小、維度和階數(shù)。圖 4 顯示了為什么應(yīng)該仔細(xì)識(shí)別矩陣的大小、維數(shù)和階數(shù)。定義數(shù)組時(shí)的微小差異可能導(dǎo)致其大小、維數(shù)和階數(shù)的不同。因此,程序員在定義矩陣時(shí)應(yīng)該格外注意這些細(xì)節(jié)。

圖 4:數(shù)組的大小、維數(shù)和階數(shù)圖 4:數(shù)組的大小、維數(shù)和階數(shù)

現(xiàn)在我們來做一些基本的矩陣運(yùn)算。圖 5 顯示了如何將矩陣 A 和 B 相加。NumPy 提供了兩種方法將矩陣相加,add 函數(shù)和 + 運(yùn)算符。請(qǐng)注意,只有階數(shù)相同的矩陣才能相加。例如,兩個(gè) 4 × 3 矩陣可以相加,而一個(gè) 3 × 4 矩陣和一個(gè) 2 × 3 矩陣不能相加。然而,由于編程不同于數(shù)學(xué),NumPy 在實(shí)際上并不遵循這一規(guī)則。圖 5 還展示了將矩陣 A 和 D 相加。記住,這種矩陣加法在數(shù)學(xué)上是非法的。一種叫做 廣播broadcasting 的機(jī)制決定了不同階數(shù)的矩陣應(yīng)該如何相加。我們現(xiàn)在不會(huì)討論廣播的細(xì)節(jié),但如果你熟悉 C 或 C++,可以暫時(shí)將其理解為變量的類型轉(zhuǎn)換。因此,如果你想確保執(zhí)行正真數(shù)學(xué)意義上的矩陣加法,需要保證以下測(cè)試為真:

圖 5:矩陣相加圖 5:矩陣相加

A.shape == B.shape

廣播機(jī)制也不是萬能的,如果你嘗試把矩陣 D 和 H 相加,會(huì)產(chǎn)生一個(gè)運(yùn)算錯(cuò)誤。

當(dāng)然除了矩陣加法外還有其它矩陣運(yùn)算。圖 6 展示了矩陣減法和矩陣乘法。它們同樣有兩種形式,矩陣減法可以由 subtract 函數(shù)或減法運(yùn)算符 - 來實(shí)現(xiàn),矩陣乘法可以由 matmul 函數(shù)或矩陣乘法運(yùn)算符 @ 來實(shí)現(xiàn)。圖 6 還展示了 逐元素乘法element-wise multiplication 運(yùn)算符 * 的使用。請(qǐng)注意,只有 NumPy 的 matmul 函數(shù)和 @ 運(yùn)算符執(zhí)行的是數(shù)學(xué)意義上的矩陣乘法。在處理矩陣時(shí)要小心使用 * 運(yùn)算符。

圖 6:更多矩陣運(yùn)算圖 6:更多矩陣運(yùn)算

對(duì)于一個(gè) m x n 階和一個(gè) p x q 階的矩陣,當(dāng)且僅當(dāng) n 等于 p 時(shí)它們才可以相乘,相乘的結(jié)果是一個(gè) m x q 階矩的陣。圖 7 顯示了更多矩陣相乘的示例。注意 E@A 是可行的,而 A@E 會(huì)導(dǎo)致錯(cuò)誤。請(qǐng)仔細(xì)閱讀對(duì)比 D@G 和 G@D 的示例。使用 shape 屬性,確定這 8 個(gè)矩陣中哪些可以相乘。雖然根據(jù)嚴(yán)格的數(shù)學(xué)定義,矩陣是二維的,但我們將要處理更高維的數(shù)組。作為例子,下面的代碼創(chuàng)建一個(gè)名為 T 的三維數(shù)組。

圖 7:更多矩陣乘法的例子圖 7:更多矩陣乘法的例子

T = np.array([[[11,22], [33,44]], [[55,66], [77,88]]])

Pandas

到目前為止,我們都是通過鍵盤輸入矩陣的。如果我們需要從文件或數(shù)據(jù)集中讀取大型矩陣并處理,那該怎么辦呢?這時(shí)我們就要用到另一個(gè)強(qiáng)大的 Python 庫了——Pandas。我們以讀取一個(gè)小的 CSV (逗號(hào)分隔值comma-separated value)文件為例。圖 8 展示了如何讀取 cricket.csv 文件,并將其中的前三行打印到終端上。在本系列的后續(xù)文章中將會(huì)介紹 Pandas 的更多特性。

圖 8:用 Pandas 讀取 CSV 文件圖 8:用 Pandas 讀取 CSV 文件

矩陣的秩

矩陣的 秩Rank 是由它的行(列)張成的向量空間的維數(shù)。如果你還記得大學(xué)線性代數(shù)的內(nèi)容的話,你一定對(duì)維數(shù)、向量空間和張成還有印象,那么你也應(yīng)該能理解矩陣的秩的含義了。但如果你不熟悉這些術(shù)語,那么可以簡(jiǎn)單地將矩陣的秩理解為矩陣中包含的信息量。當(dāng)然,這又是一種未來方便理解而過度簡(jiǎn)化的說法。圖 9 顯示了如何用 NumPy 求矩陣的秩。矩陣 A 的秩為 3,因?yàn)樗娜魏我恍卸疾荒軓钠渌兄械玫?。矩?B 的秩為 1,因?yàn)榈诙泻偷谌锌梢杂傻谝恍蟹謩e乘以 2 和 3 得到。矩陣 C 只有一個(gè)非零行,因此秩為 1。同樣的,其它矩陣的秩也不難理解。矩陣的秩與我們的主題關(guān)系密切,我們會(huì)在后續(xù)文章中再提到它。

圖 9:求矩陣的秩圖 9:求矩陣的秩

本次的內(nèi)容就到此結(jié)束了。在下一篇文章中,我們將擴(kuò)充工具庫,以便它們可用于開發(fā)人工智能和機(jī)器學(xué)習(xí)程序。我們還將更詳細(xì)地討論 神經(jīng)網(wǎng)絡(luò)neural network、監(jiān)督學(xué)習(xí)supervised learning、無監(jiān)督學(xué)習(xí)unsupervised learning 等術(shù)語。此外,從下一篇文章開始,我們將使用 JupyterLab 代替 Linux 終端。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2018-12-18 10:00:27

人工智能AI自動(dòng)駕駛

2022-06-20 11:05:58

通用人工智能機(jī)器人

2018-08-17 15:17:56

人工智能層次極端

2017-03-16 18:43:35

2023-10-17 10:20:23

2022-10-19 07:04:12

?人工智能云服務(wù)Alaas

2021-11-05 09:56:36

人工智能AI指數(shù)

2023-05-05 14:02:59

人工智能聊天機(jī)器人

2022-07-29 15:47:25

人工智能AI

2018-04-03 11:44:47

人工智能業(yè)務(wù)

2015-10-10 09:34:52

人工智能機(jī)器學(xué)習(xí)

2018-03-28 09:40:00

CITE人工智能館

2022-01-19 00:08:26

人工智能AlphaGO計(jì)算機(jī)

2020-08-31 15:15:20

人工智能算法AI

2022-06-20 14:52:36

人工智能ROI

2021-04-02 14:43:35

人工智能

2021-03-30 10:38:03

人工智能安全技術(shù)

2018-03-23 09:14:46

人工智能云計(jì)算機(jī)器學(xué)習(xí)

2022-11-14 15:06:16

2022-07-26 11:27:40

人工智能AIOps
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)