最近 2 個月中我是如何開始學習 AI 的

簡評:人工智慧是 21 世紀最重要的技能。在人人都很忙碌的今天,如何把人工智慧這個技能點加上?作者用自己的親身經歷告訴大家。

當我關閉我的創業公司 Zeading 時,我被粗魯地喚醒了。感覺就像失去了一些非常特別的東西。

全棧工程師在面臨劇變的時代是不夠的。在接下來的兩年中,沒有人工智慧技術的全棧將不再是全棧。

是時候採取行動了。我做出了我認為現在唯一能做的行動方式 —— 像開發者那樣更新我的技能,像產品一樣的心態以及像企業家一樣的哲學觀來面向數據。

正如著名的風險投資家,人工智慧和金融科技的思想領袖 Spiros Margaris 雄心勃勃地對我說:

如果創業公司和企業只依賴於最前沿的 AI 和機器學習演算法作為競爭 —— 這是不夠的。AI 將不是競爭優勢,而是基本需求。你聽過有人把用電作為競爭優勢的嗎?

構建我的第一個神經網路

常見的建議是在 Coursera 註冊 Andrew Ng 的課程。這是個很棒的地方但我發現很難保持長時間的清醒。不是說這門課程很糟糕什麼的,只是我真的反感在講座中聚精會神。一直以來我的學習模式就是實踐,所以我想幹嘛不這樣,於是讓我們來實現自己的神經網路唄。

我沒有直接跳到神經網路,因為它是一個更好的學習方式。我先讓自己熟悉這個領域的所有概念,這樣我就能學習怎麼去說這門語言。

第一個任務不是學習。而是去熟悉。

我的知識背景是純 JavaScript 和 NodeJs,我暫時不想切換。所以我搜索到一個簡單的神經網路模塊叫 nn,然後通過模擬輸入用它來實現一個與(AND)門。通過這篇指導,我選擇了這個問題:對於任意的輸入 X,Y,Z,輸出結果都是 X AND Y。

var nn = require("nn")var opts = { layers: [ 4 ], iterations: 300000, errorThresh: 0.0000005, activation: "logistic", learningRate: 0.4, momentum: 0.5, log: 100 }var net = nn(opts)net.train([ { input: [ 0,0,1 ], output: [ 0 ] }, { input: [ 0,1,1 ], output: [ 0 ] }, { input: [ 1,0,1 ], output: [ 0 ] }, { input: [ 0,1,0 ], output: [ 0 ] }, { input: [ 1,0,0 ], output: [ 0 ] }, { input: [ 1,1,1 ], output: [ 1 ] }, { input: [ 0,0,0 ], output: [ 0 ] } ])// send it a new input to see its trained outputvar output = net.send([ 1,1,0]) console.log(output); //0.9971279763719718

幸福來得太快了!

在我看來,這極大地增強了我的自信心。當結果亮出 0.9971 時,我意識到,網路學會了如何做一個 AND 操作,並且忽略附加的輸入。

這就是機器學習主要的宗旨。你給計算機程序一個數據集,然後調整內部的參數,它就能夠從一個新的數據集中通過觀察原始數據得到一個縮小誤差的結論。

這個方法,我後來了解到的,也被稱為梯度下降。

補充人工智慧知識

一旦我從第一個人工智慧程序中獲取了滿滿的自信後,作為開發者,我迫不及待地想要了解能用機器學習做什麼更多的東西。

  • 我解決了幾個監督學習的問題,比如回歸和分類。
  • 我通過一個有限的數據集來用多元線性回歸嘗試預測哪支隊伍將取得勝利(預測結果相當差,但感覺還是不錯的)。
  • 我在 Google 機器學習雲上嘗試了一些演示,看看 AI 在今天能做什麼(作為一個 SaaS 產品,Google 做得足夠好了)
  • 我被 AI Playbook 難住了,由 Andreessen-Horowitz 組織的出色的資源,受人尊敬的基金。無愧為開發者和創業者最便捷的資源。

  • 開始在 Youtube 上看 Siraj Rawal』s awesome channel,關於深度學習和機器學習的集中討論。
  • 閱讀 Hacker Noon 上的優秀博客,講述了大佬如何在矽谷創建 Not Hotdog app(不知道咋翻譯 = =)。這是我們能做的最接近深度學習的案例之一。
  • 閱讀了 Andrej Karpathy 的博客,特斯拉 AI 部門的主管。儘管我尚不能夠理解他講的任何東西,並且讓我很頭疼,但是我發現在多次被血虐後,一些概念開始理解了。
  • 鼓起勇氣,我開始逐字實現一些深度學習的教程(複製和粘貼)並嘗試在我的機器上訓練模型和運行代碼。大多數時候,結果很爛,因為大多數模型需要的訓練時間很長,而且我沒有 GPU。

逐漸地,我從 JavaScript 切換到了 Python,並且在我的 Windows 機器上安裝了 Tensorflow。

這整個過程都是在被動地消化內容,並在你的腦海里建立參考,所以當以後遇到一個真正的問題時,可以使用這些知識。

正如 Steve Jobs 所說,你只能往後看才能把這些點連起來。

趕上聊天機器人火車

作為電影 《她》 的粉絲,我也想要做一個聊天機器人。我接受了這個挑戰,然後設法用 Tensorflow 在不到兩小時內完成。幾天前我在我其中一篇文章里列出了這個過程的大綱和商業需求。

幸運的是,這篇文章廣為好評,被 TechInAsia,CodeMentor 和 KDNuggets 推薦了。這對我來說是個很棒的時刻,個人而言,因為我才剛開始寫技術博客。我認為這篇文章也是我 AI 學習的里程碑之一。

我在 Twitter 和 LinkedIn 上交了許多朋友,我可以和他們全面而深度討論 AI 開發,甚至發現自己的不足。我在諮詢項目上收穫了幾個 offer,最重要的是,年輕的開發者和 AI 初學者開始向我提問如何開始學習 AI。

這就是我寫這篇文章的原因。為了幫助更多的人從我的經歷中找到開始他們的學習旅行的線索。

萬事開頭難。

其他配料

這絕不簡單。當我在 JavaScript 上卡住時,我幾乎一夜之間跳到了 Python,學習如何編寫代碼。在經過幾小時的訓練後,我的模型在我的 i7 機器上跑不出結果,這讓我很煩躁,它們會返回一個胡亂的結果,就像在一個隊伍在板球比賽中贏得比賽一樣,這是個 50-50 的概率。學習 AI 不像學習 Web 框架一樣。

在微觀層次的計算中發現你的什麼輸出 —— 你的代碼還是數據更為合理,這是一種技巧。

AI 同樣不只是一門學科。這是一個用來形容任何從簡單回歸問題到某天殺死我們的殺人機器人的總括術語。像其他你接觸的學科一樣,你可能想要 cherry pick AI 中任何你想要的足夠好的部分,比如計算機視覺或者自然語言處理,或者上帝禁止的,統治世界的等等。

Atlantis Capital 的 Gaurav Sharma 是 AI,金融科技,加密等行業的知名領導者,在與他的對話中,他向我表示:

在人工智慧的時代,「變聰明」意味著完全不同。我們需要人們執行高級的,關鍵的,創造性的,有思考能力的以及需要高度的情感參與的工作。

你必須讓自己沉迷於計算機如何突然學會用它們的方式來做事情。耐心和好奇心是你應該堅持的兩個關鍵原則。

這是一段很長很長的旅程。非常累,非常容易煩躁,以及非常花時間的過程。

但好處在於,像世界上其他旅程一樣,這一個同樣從一個簡單的步伐開始。

原文鏈接:How I started with learning AI in the last 2 months

相關閱讀:

  • 30 行 JavaScript 代碼搭建神經網路

推薦閱讀:

錯過了這次影響全行業的語音智能峰會?這篇文章或許還能搶救一下 | WARE 2017
谷歌人工智慧唇讀術完虐人類,僅憑5千小時電視節目!人類古老的技藝再次淪陷
TensorFlow 官方文檔譯者招募
保姆機器人被入侵變殺人機器?網路安全成共享經濟後的大風口!
如何評價udacity(優達學城)的人工智慧工程師課程(納米學位)?

TAG:人工智能 | 神经网络 | 机器学习 |