2 個(gè)月從零開始入門 AI ,我是如何做到的?
編者按:人工智能正在成為像“電力”一樣的東西,每一個(gè)關(guān)系未來發(fā)展的人都應(yīng)該對(duì)其有所了解。尤其是開發(fā)者,不懂人工智能,競(jìng)爭(zhēng)力將會(huì)在將來大幅度下降。在Shival Gupta發(fā)表在Hacker Noon上的一篇文章中,他介紹了自己怎樣在2個(gè)月入門學(xué)習(xí)人工智能的歷程。文章由36氪編譯。
現(xiàn)在這個(gè)時(shí)代,每個(gè)人都很忙。人們的個(gè)人生活和職業(yè)生涯都在發(fā)生著巨大的變化。最重要的是,隨著像人工智能這樣的技術(shù)開始變得越來越流行,你會(huì)發(fā)現(xiàn)在接下來的兩年里,你所掌握的技能會(huì)變得過時(shí)。
當(dāng)我關(guān)閉我的創(chuàng)業(yè)公司Zeading時(shí),我猛然醒悟過來。感覺自己錯(cuò)過了一些非常獨(dú)特的東西。
在不斷變化的情況下,作為一名傳統(tǒng)意義上的全棧工程師是不夠的。在接下來的兩年里,如果沒有掌握人工智能技術(shù),全棧工程師將不再是全棧工程師了。
是時(shí)候采取行動(dòng)了。我做出了我認(rèn)為現(xiàn)在唯一能做的行動(dòng) —— 更新了我作為一名開發(fā)者的技能,并以產(chǎn)品經(jīng)理一樣的心態(tài)和企業(yè)家一樣的理念來面對(duì)數(shù)據(jù),并以數(shù)據(jù)為導(dǎo)向。
正如著名的風(fēng)險(xiǎn)投資家、人工智能和金融科技行業(yè)的思想***Spiros Margaris對(duì)我說的那樣:
如果創(chuàng)業(yè)公司和企業(yè)只依靠先進(jìn)的人工智能和機(jī)器學(xué)習(xí)算法來展開競(jìng)爭(zhēng),是遠(yuǎn)遠(yuǎn)不夠的。人工智能將不再是一項(xiàng)競(jìng)爭(zhēng)優(yōu)勢(shì),而是一項(xiàng)基本要求。你聽到有人把“用電”作為競(jìng)爭(zhēng)優(yōu)勢(shì)嗎?
構(gòu)建我的***個(gè)神經(jīng)網(wǎng)絡(luò)
一個(gè)非常常見的建議是在Coursera上聽Andrew Ng(吳恩達(dá))的課程。這是一個(gè)非常好的入門方式,但我發(fā)現(xiàn),我很難長(zhǎng)時(shí)間保持清醒。我并不是說這門課很糟糕,但我真的很難在課堂上保持專注。我的學(xué)習(xí)模式一直都是實(shí)踐,從實(shí)踐中獲取新的知識(shí)。所以我想,我為什么不自己來打造一個(gè)神經(jīng)網(wǎng)絡(luò)呢?
但我沒有直接去著手構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò),因?yàn)樗且粋€(gè)更加高級(jí)的學(xué)習(xí)方法。我剛開始先去試著熟悉這個(gè)領(lǐng)域里的所有的術(shù)語,這樣我就能對(duì)這個(gè)領(lǐng)域有所了解。
***個(gè)任務(wù)不是學(xué)習(xí)。而是熟悉。
我是純Javascript和Node js出身,當(dāng)時(shí)并不想換成其他的編程語言。因此,我搜索了一個(gè)名為“nn”的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)模塊,然后通過模擬輸入用它來實(shí)現(xiàn)一個(gè)“AND”操作。受一個(gè)教程的啟發(fā)(傳送門),我選擇了這么一個(gè)問題:對(duì)于任意的輸入 X,Y,Z,輸出結(jié)果都是 X AND Y。相應(yīng)的代碼如下:
當(dāng)?shù)玫降慕Y(jié)果是0.9971時(shí),我意識(shí)到,這個(gè)神經(jīng)網(wǎng)絡(luò)已經(jīng)學(xué)會(huì)了如何做一個(gè)AND操作,并且忽略了附加的輸入。這樣的結(jié)果極大地增強(qiáng)了我的自信心。
這就是機(jī)器學(xué)習(xí)的要點(diǎn)。你給計(jì)算機(jī)程序一組數(shù)據(jù),它能夠自動(dòng)調(diào)整內(nèi)部參數(shù),使其能夠在新數(shù)據(jù)上回答問題,而原始數(shù)據(jù)中的誤差也在減少。
這種方法,正如我后來了解到的,也被稱為梯度下降(gradient descent)。
補(bǔ)充人工智能相關(guān)的知識(shí)
在我完成了***個(gè)人工智能程序后,我充滿了信心,我想知道作為一名開發(fā)人員,我還能做些什么。
-
我解決了一些監(jiān)督學(xué)習(xí)的問題,如回歸和分類。
-
我通過一個(gè)有限的數(shù)據(jù)集,嘗試用多元線性回歸預(yù)測(cè)哪支隊(duì)伍將取得比賽勝利(雖然當(dāng)時(shí)的預(yù)測(cè)很不準(zhǔn)確,但確實(shí)很酷)。
-
我在Google機(jī)器學(xué)習(xí)云的上做了一些演示,看看現(xiàn)在人工智能能做什么(作為一款SaaS工具,Google已經(jīng)做得非常好了)。
-
我偶然發(fā)現(xiàn)了AI Playbook,這是一個(gè)很棒的資源,由著名的風(fēng)險(xiǎn)投資基金Andreessen-Horowitz收集組織。對(duì)于開發(fā)者和創(chuàng)業(yè)者來說,這的確是最方便的資源之一。
-
我開始在Youtube上觀看以深度學(xué)習(xí)和機(jī)器學(xué)習(xí)為核心的Siraj Rawal的精彩頻道。
-
我讀了一篇發(fā)表在Hacker Noon上的精彩文章,內(nèi)容是關(guān)于硅谷的展示者如何打造Not Hotdog的應(yīng)用程序。這是我們能做的、且最容易理解的深度學(xué)習(xí)的例子之一。
-
我開始閱讀特斯拉的人工智能主管Andrej Karpathy的博客。雖然說我很難理解其中的內(nèi)容,讓我很頭疼。但我發(fā)現(xiàn),在嘗試了更多的時(shí)間之后,我開始理解其中的一些概念了。
-
帶著一些勇氣,我開始逐字地(復(fù)制和粘貼)來執(zhí)行一些深度學(xué)習(xí)教程,并試圖訓(xùn)練模型,并在我的本地機(jī)器上運(yùn)行代碼。大多數(shù)情況下,結(jié)果都不容樂觀,因?yàn)榇蠖鄶?shù)模型需要的訓(xùn)練時(shí)間很長(zhǎng),而且我也沒有 GPU。
逐漸地,我從JavaScript切換到了Python,并在我的Windows機(jī)器上安裝了Tensorflow。
整個(gè)過程,我都是在被動(dòng)地消化內(nèi)容,并在腦海里建立了一些相關(guān)的認(rèn)知,當(dāng)以后遇到真正的問題時(shí),就可以使用這些知識(shí)了。
正如Steve Jobs在斯坦福大學(xué)演講時(shí)所說的,你在向未來展望的時(shí)候不可能將這些片斷串連起來,你只能在回顧的時(shí)候串起它們。
做一個(gè)聊天機(jī)器人
作為電影《Her》的忠實(shí)粉絲,我也想要打造一個(gè)聊天機(jī)器人。我接受了這個(gè)挑戰(zhàn),然后用Tensorflow在不到兩小時(shí)內(nèi)完成了這項(xiàng)舉動(dòng)。并在幾天前的一篇文章中概述了我是怎么完成的以及它的商業(yè)需求。
幸運(yùn)的是,這篇文章廣受好評(píng),在網(wǎng)上瘋傳(傳送門,36氪編譯文章)。這對(duì)我個(gè)人而言,這是一個(gè)非常好的現(xiàn)象,畢竟我才剛開始寫技術(shù)博客。我認(rèn)為這篇文章是我人工智能學(xué)習(xí)之旅的一個(gè)里程碑。
它讓我在Twitter和LinkedIn上結(jié)交了很多朋友,我可以和他們深入地討論人工智能開發(fā),發(fā)現(xiàn)自己的不足,甚至在我遇到問題時(shí),他們也能夠伸出援手。我也收到了一些咨詢項(xiàng)目的offer。最重要的是,年輕的開發(fā)者和人工智能初學(xué)者開始問我,我是如何開始學(xué)習(xí)人工智能的。
這就是我寫這篇文章的原因。幫助更多的人從我的學(xué)習(xí)過程中獲得靈感,開始他們自己的學(xué)習(xí)過程。
萬事開頭難,入門是任何過程中***挑戰(zhàn)性的部分。
結(jié)語
這絕對(duì)不是一個(gè)容易的事情。當(dāng)我開始被Javascript卡住的時(shí)候,我?guī)缀踉谝灰怪g就開始用上了Python,并學(xué)會(huì)了如何用其編寫代碼。當(dāng)我的模型無法在我的i7機(jī)器上進(jìn)行訓(xùn)練時(shí),我開始變得煩躁,甚至在經(jīng)過數(shù)小時(shí)的訓(xùn)練后,它們也會(huì)返回一個(gè)很顯然是錯(cuò)誤的結(jié)果,即球隊(duì)贏得板球比賽的概率是50/50。學(xué)習(xí)人工智能不像學(xué)習(xí)一個(gè)Web框架。
這是一項(xiàng)技能,你需要了解計(jì)算的微觀層面上發(fā)生了什么,并找出對(duì)輸出結(jié)果產(chǎn)生極大影響的部分——代碼或數(shù)據(jù)。
同樣,人工智能也不僅僅是一個(gè)學(xué)科。它是一個(gè)“從簡(jiǎn)單的回歸問題到總有一天會(huì)殺了我們的致命機(jī)器人”的統(tǒng)稱。就像你所從事的其他學(xué)科一樣,你可能會(huì)想要在人工智能領(lǐng)域挑選出你想要擅長(zhǎng)的東西,比如計(jì)算機(jī)視覺或自然語言處理等等。
在與人工智能、金融科技和加密技術(shù)領(lǐng)域的***Gaurav Sharma的對(duì)話中,他向我表示:
在人工智能時(shí)代,“聰明”(being smart)將意味著完全不同的東西。我們需要人們?nèi)?zhí)行更高層次的、批判性的、創(chuàng)造性的,或其他需要更多情感投入的工作。
想要開始這段學(xué)習(xí)過程,你必須讓自己沉迷于計(jì)算機(jī)如何突然學(xué)會(huì)用它們的方式來做事情。耐心和好奇心是你應(yīng)該堅(jiān)持的兩個(gè)關(guān)鍵原則。
這是一次重大的旅行。非常累人,也非常煩人,而且特別耗費(fèi)時(shí)間。但值得慶幸的是,它和世界上其他的旅行一樣,也需要從一個(gè)簡(jiǎn)單的步伐開始。
原文鏈接:https://hackernoon.com/how-i-started-with-learning-ai-in-the-last-2-months-251d19b23597
編譯組出品。編輯:郝鵬程