簡評:人工智能是 21 世紀最重要的技能。在人人都很忙碌的今天,如何把人工智能這個技能點加上?做者用本身的親身經歷告訴你們。html
當我關閉個人創業公司 Zeading 時,我被此次失敗驚醒的同時感受內心空落落的,就像失去了一些很是特別的東西。python
全棧工程師在面臨劇變的時代是不夠的。在接下來的兩年中,沒有人工智能技術的全棧將再也不是全棧。react
是時候採起行動了。我作出了我認爲如今惟一能作的行動 —— 像開發者那樣更新個人技能,以像產品經理同樣的心態以及像企業家同樣的哲學觀來面向數據。git
正如著名的風險投資家,人工智能和金融科技的思想領袖 Spiros Margaris 雄心勃勃地對我說:github
若是創業公司和企業只依賴於最前沿的 AI 和機器學習算法做爲競爭 —— 這是不夠的。AI 將不是競爭優點,而是基本需求。你聽過有人把用電做爲競爭優點的嗎?算法
通常是建議在 Coursera 註冊 Andrew Ng 的課程。這是個很棒的網站但我發現我很難在觀看課程時保持長時間的專一。倒不是說這門課程很糟糕,只是我真的很難在講座中聚精會神。一直以來我我的 的學習模式就是實踐,因此我想幹嗎不直接來實現本身的神經網絡。windows
我沒有直接跳到神經網絡,由於它是一個更高的學習方式。我先熟悉了這個領域的全部概念,這樣我才能學習用專業術語談論這個領域。react-native
第一個任務不是學習。而是去熟悉。api
個人知識背景是純 JavaScript 和 NodeJs,暫時不想換別的。我搜索到一個簡單的神經網絡模塊叫 nn,而後經過模擬輸入用它來實現一個與(AND)門。經過這篇指導,我選擇了這個問題:對於任意的輸入 X,Y,Z,輸出結果都是 X AND Y。bash
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 output
var 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、金融科技、加密等行業的知名領導者,在與他的對話中,他向我表示:
在人工智能的時代,「變聰明」意味着徹底不一樣。咱們須要人們執行高級的、關鍵的、創造性的、有思考能力的以及須要高度的情感參與的工做。
你必須讓本身沉迷於計算機如何忽然學會用它們的方式來作事情。耐心和好奇心是你應該堅持的兩個關鍵原則。
這是一段很長很長的旅程。很是累,很是容易煩躁,以及很是花時間的過程。
但好處在於,像世界上其餘旅程同樣,從一個簡單的步伐開始。
知乎專欄:極光日報
極光日報,極光開發者 的 Side Project,天天導讀三篇國外技術類文章,歡迎投稿和關注。