1. 程式人生 > >轉型AI產品經理,原來不需要學那麼深的演算法和數學模型

轉型AI產品經理,原來不需要學那麼深的演算法和數學模型

本文作者@李傑克 是我們“AI產品經理大本營”成員,但非常特別是,他是從網際網路產品經理轉型成了AI工程師@李傑克 文章的特點,是通過簡單有趣的文字介紹AI技術概念本文是他的第一篇文章,以饗大家。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

1


寫在前面

Hello,World!

這是我的第一篇文章,如果你還沒系統地學習過AI演算法相關知識,它應該能夠讓你對AI有些新的認知和理解、多些信心,至少你不會再覺得AI是那麼高不可攀、遙不可及,相反,AI是普通人也可以理解、學習和實現的。

大概可以用以下幾個標籤簡單概括我:前網際網路產品經理、大學學渣、非計算機專業、不懂程式設計,可以說是除了瞎逼逼,啥也不會...

0?wx_fmt=jpeg

跟點進這篇文章的你一樣,我最開始也是驚歎和憧憬於AI的神奇偉大無所不能,馬上就要改變世界取代人類啊~

不一樣的可能是,我當時腦子一熱:放棄數年的產品經驗,開始自學程式設計(python)和AI實現演算法(傳統機器學習和深度學習演算法),走上轉型AI之路。

最開始決定轉型其實也是蠻糾結的,初期在網上看到經驗分享,感覺機器學習的門檻真的是高的一逼啊。

文章中各種出現高等數學、線性代數和概率論的東東, 把我這個學渣嚇得瑟瑟發抖.....

0?wx_fmt=gif

某個週六晚上,在酒吧裡喝掉幾杯啤酒後,藉著酒意我做出了決定:搞,是個坑我也跳了...請稍稍腦補不懂程式設計還是學渣的我當時那種略帶悲壯而又自我感動的狀態!

0?wx_fmt=gif

然後就開始苦哈哈地補高數、線代、概率論,苦哈哈地學python程式設計,苦哈哈地看Andrew Ng、Peter Harrington、Siraj等一眾大神的書籍視訊學習機器學習....

0?wx_fmt=gif

苦哈哈的狀態持續了一段時間,隨著學習的推進,慢慢我也可以熟練地使用python寫演算法寫指令碼,傳統機器學習和深度學習中的經典常用演算法,也基本都算學習和實踐過了。

我得到的結論是:傳統機器學習和深度學習的門檻並沒有那麼高,至少是以演算法工程師為主要需求的“工程應用領域”的門檻,是沒有那麼高的

網上確實有很多不錯的資料,但總是充斥著較多的數學、生澀的描述,其實並不是很適合作為小白的我們(請大牛自動遮蔽哈)入門

作為毫無技術背景從零開始入門機器學習的產品經理,我或許更能理解同為小白的你的痛點和需求,我自己的公眾號“小白AI之路”的初衷,也是希望能夠通過更有趣、更直觀、更少數學的方式跟零基礎的童鞋共同學習AI相關知識。

叨逼叨結束,下面進入正題,快!上車吧!AI可以很簡單!

0?wx_fmt=gif

2


讓我們先來說說“AI是什麼”

首先,我們先來界定接下來所要討論的AI的定義和範疇

AIArtificial Intelligentce的縮寫,中文是大家廣知的“人工智慧”。 AI可以理解為讓機器具備類似人的智慧,從而代替人類去完成某些工作和任務。

很多小夥伴對AI的認知可能來自於《西部世界》、《AI》、《超能陸戰隊》、《機器人總動員》、《超能查派》等影視作品,這些作品中的AI都可以定義為“強人工智慧”,因為他們能夠像人類一樣去思考和推理,且具備知覺和自我意識

0?wx_fmt=gif

但強人工智慧在現實中的發展基本處於停滯狀態,目前AI的研究和應用基本都集中在“弱人工智慧”領域,弱人工智慧可以理解為機器看起來像是智慧的,但並不會具備知覺和意識

弱人工智慧領域的AI實現,可以分為兩種方式:

一種是通過對相關規則進行程式設計,讓機器能夠按照程式中存在的邏輯處理特定任務,從結果來上看機器是智慧的;

另一種是我們不給機器規則,取而代之,我們餵給機器大量的針對某一任務的資料,讓機器自己去學習,繼而挖掘出規律,從而具備完成某一任務的智慧,這種方式,也就是我們今天的主角——機器學習

不好理解?舉一個簡單的例子,如果我們需要讓機器具備識別狗的智慧

第一種方式意味著,我們需要將狗的特徵(毛茸茸、四條腿、有尾巴...)告訴機器,機器將滿足這些規則的東西識別為狗

第二種方式意味著,我們完全不告訴機器狗有什麼特徵,但我們餵給機器10萬張狗的圖片,機器就會自個兒從已有的圖片中學習到狗的特徵,從而具備識別狗的智慧。

此狗以一根火腿腸的身價友情出境...

0?wx_fmt=gif

AI可以說是跟機器學習緊密聯絡在一起,那我們在來說下我們今天的主角——機器學習。

首先,機器學習從模型層次結構的角度可以分為淺層學習和深度學習,簡單介紹下兩者:

1. 淺層學習(Shallow Learning)

淺層學習與深度學習(Deep Learning)相對,它的模型層次較淺,通常沒有隱藏層或只有一層隱藏層

淺層學習常見的演算法有線性迴歸、邏輯迴歸、隨機森林、SVM、K-means、RBM、AutoEncoder、PCA、SOM等等。

隱藏層什麼鬼?這些演算法什麼鬼?沒關係,能記上一兩個名字很好,暫時記不住也沒關係,我們以後會撿重要的來講。

淺層學習演算法可以做一些預測、分類、聚類、降低資料維度、壓縮資料和商品推薦系統等工作。

2. 深度學習(Deep Learning)

深度學習的“深”是因為它通常會有較多的隱藏層,正是因為有那麼多隱藏層存在,深度學習網路才擁有表達更復雜函式的能力,也才能夠識別更復雜的特徵,繼而完成更復雜更amazing的任務。

令很多童鞋驚歎“AI無所不能,馬上就要改變世界、取代人類”的領域,基本都跟深度學習有關係。

目前深度學習的研究和應用,主要集中在CNNRNN;跟著我狠狠地把這些名詞記下來(至少縮寫要記下來哈),他們會成為後續文章介紹的重點。

CNNConvolutional Neural Networks的縮寫,也就是卷積神經網路,目前是計算機視覺影象分類領域最主要的演算法,當然也有人將它應用於自然語言處理領域。

接下來舉些CNN應用場景的例子,讓大家有個較直觀的印象:

1)前兩年大火的Prisma可以將機器學習名畫的風格並遷移到新的圖片上,比如這張白髮女咖啡杯圖:

0?wx_fmt=gif

2)深受妹紙喜愛各種美顏相機的濾鏡,也是會用到人臉檢測,用上之後感覺自己萌萌噠,額...這個好像是個可愛的男孩子...

0?wx_fmt=gif

3)交通監控視訊識別來往車輛的車型,目前有些公司的產品還可以識別車牌號:

0?wx_fmt=gif

4) 商場監控視訊能夠識別人臉,順便還能根據已有資料判斷這個人是否以前來過商場:

0?wx_fmt=gif

5)當下最火的無人車中,無人車需要用計算視覺去觀察和理解這個世界:

0?wx_fmt=gif

RNNRecurrent Neural NetWorks的縮寫,也就是遞迴神經網路,基於RNN還衍生出了LSTM(Long-Short-Term-Memerory)和GRU(Gated Recurrent Unit)等一系列演算法,這些演算法擁有記住過去的能力,所以可以用來處理一些有時間序列屬性的資料,在處理語言、文字等方面有獨到的優勢。

RNN及其衍生演算法可用於語音識別機器翻譯合成音樂等等,我們仍然來簡單舉幾個的例子:

1) 以Siri、小娜、小冰、小度為代表的對話機器人,調戲Siri讓她bbox和唱歌講段子並不能充分體現你的無聊,下次你可以試試讓Siri和小娜互相對話:

0?wx_fmt=gif

2) 以谷歌翻譯為代表的機器翻譯,不管是文字翻譯還是語音翻譯,都把可以把人類翻譯虐成渣渣:

0?wx_fmt=gif

3) 老羅在錘子釋出會上大吹特吹的能夠以極高準確率和極快速度將語音轉化為文字的飛輸入法

0?wx_fmt=gif

4)有粉絲等不及喬治·馬丁老爺子寫《冰與火之歌》第六部,就自己用LSTM演算法學習了《冰與火之歌》的前五部後續寫了第六部,據說AI這部作品中還揭示了前幾部中埋了很久的懸念:

0?wx_fmt=gif

3


說AI簡單,因為AI本質上都是一個函式

如果你堅持看到這裡,你對AI的理解和認知大概率已經擊敗了你朋友圈裡50%經常分享AI將改變世界取代人類的好友們。

此刻你已經可以在聊天中用對方大概率聽不懂的CNN、RNN、LSTM等一眾名詞來彰顯你的逼格了。

但是,作為穩重踏實、擁有內涵、崇尚科學的新時代好青年的我們來說,這還遠遠不夠,我們總是希望能夠不動聲色、低調內斂、用對方看似都懂實則不懂的東西去裝更高規格的逼。

接下來,請跟我學習下正確的裝的方式:XX,你知道麼?其實,AI很簡單,因為AI本質上都是一個函式。說的時候一定要有種雲淡風輕的狀態,彷彿吃飯喝水那般自然。

0?wx_fmt=gif

看著對方有點迷離困惑的眼神,這個時候你要貼心去解釋一下,以彰顯你的善解人意,請再次跟我學:

是這樣的,XX,這其實很好理解,AI其實就是我們餵給機器目前已有的資料,機器就會從這些資料裡去找出一個最能滿足(此處用“擬合”或可提升逼格)這些資料的函式,當有新的資料需要預測的時候,機器就可以通過這個函式去預測出這個新資料對應的結果是什麼。

說完之後,請微微擡頭看向遠方,感慨一下:萬物自有其道,人世間多少複雜的東西到末了還是要歸於純粹啊。

但是,裝逼有風險,風險請自行承擔...

0?wx_fmt=gif

其實可能你暫時也沒有太理解,不要慌,我們偷偷繼續理解一下。

對於一個具備某種智慧的模型而言,一般具備以下要素:資料+演算法+模型,請狠狠地記住這三個詞;記住了這三個詞,AI的本質你也就搞清楚了。

這個時候我們再把高冷的貓也請出來,我們來用一個能夠區分貓和狗圖片的分類器模型來幫助理解這個問題:

資料”就是我們需要準備大量標註過“貓”還是“狗”的圖片,為什麼要強調大量,因為只有資料量足夠大,模型才能夠學習到足夠多且準確的區分貓和狗的特徵,才能在區分貓狗這個任務上,表現出足夠高的準確性;當然資料量不大的情況下,我們也可以訓練模型,不過在新資料集上預測出來的結果往往就會差很多。

演算法”指的是構建模型時我們打算用淺層的網路還是深層的,如果是深層的話我們要用多少層,每層有多少神經元、功能是什麼等等,也就是網路架構的設計。相當於我們確定了我們的預測函式應該大致結構是什麼樣的,我們用Y=f(W,X,b)來表示這一函式,X是已有的用來訓練的資料(貓和狗的圖片),Y是已有的圖片資料的標籤(該圖片是貓還是狗),聰明的你會問:W和b呢?問得好,函式裡的W(權重)和b(偏差)我們還不知道,這兩個引數是需要機器學習後自己找出來的,找的過程也就是模型訓練的過程。

模型”指的我們把資料帶入到演算法中進行訓練,機器就會去不斷地學習,當機器找到最優W(權重)和b(偏差)後,我們就說這個模型是train成功了,這個時候我們的函式Y=f(W,X,b)就完全確定下來了。然後我們就可以在已有的資料集外給模型一張新的貓或狗的圖片,那模型就能通過函式Y=f(W,X,b)算出來這張圖的標籤究竟是貓還是狗,這也就是所謂的模型的預測功能

到這裡,你應該已經能夠理解AI的本質了。我們再簡單總結下:不管是最簡單的線性迴歸模型、還是較複雜的擁有幾十個甚至上百個隱藏層的深度神經網路模型,本質都是尋找一個能夠良好擬合目前已有資料的函式Y=f(W,X,b),並且我們希望這個函式在新的未知資料上也能夠表現良好。

4


AI演算法模型的實現可以說是相當easy啦

如果你堅持看到這裡,那請你為自己打call!因為你對AI的理解和認知應該大概率已經擊敗了你朋友圈裡70%經常分享AI將改變世界取代人類的好友們。

0?wx_fmt=gif

接下來我們再往前走一步,簡單說一說實現一個AI模型可以多麼簡單,看完後,相信你會信心爆棚的!

其實李傑克(也就是我啦)最早也是抱著異常悲壯各種被虐地心情走進AI的。學習大概分為三塊:

1. 學習AI第一語言python:

這裡我要為python瘋狂打call,因為python作為萬能膠水語言能做的事情實在太多,並且..它還異常容易上手

我大概花了50個小時學習了python的基礎語法,然後就開始動手寫程式碼去爬小說、爬網易雲音樂的評論等等程式。

額...據說很多人第一個python的爬蟲是去爬不可描述的網站上那些沒穿衣服的可愛的女孩子們的相片...

總之,python是整個過程並不耗精力的環節,但是剛開始背記語法確實是無聊無趣的,需要些許的小堅持,給你提個醒喲...

0?wx_fmt=jpeg

2. 學習傳統機器學習和深度學習相關演算法:

這塊算是花費我最多精力和時間的環節,看了蠻多的視訊、書籍,還有網上的各種博文,還自己去補了高數線代概率論相關知識。

但結論是,如果你僅僅關注工程領域實現的話,其實很多演算法壓根沒有必要用那麼數學的東西去推導,換種方式你的理解和時間成本會下降很多。我也希望之後能夠用盡可能簡單有趣的方式跟大家分享和學習。

0?wx_fmt=jpeg

3. 演算法和模型的實現:

最開始我儘可能去理解和推導演算法,然後用python程式碼去實現演算法再train模型,那個時候覺得啊演算法還是要吃透啊,程式碼能力也要很重要啊,不然你TM的模型都建不起來啊,小夥砸你要靜下心來慢慢搞啊。

後來,我開始接觸到深度學習大殺器——Google的深度學習框架Tensorflow,當時我的心情是這樣的:

0?wx_fmt=gif

真的是一度有些蛋蛋的憂鬱呢,我也算是鼓起了些勇氣、下了些決心、放棄了些機會開始轉型的,我還指著靠AI當上CEO、迎娶白富美、走上人生巔峰呢。但是...

不是說好的有很高的數學門檻麼?

不是說好的很高大上大家都搞不懂的麼?

不是說好的需要深刻理解演算法才能更好train出好model的麼?

為什麼演算法模型損失函式優化方法Tensorflow都內建好了,而且只需要異常簡單的呼叫就好了?

0?wx_fmt=gif

再後來,我接觸到了Keras,一個基於Tensorflow構建的深度學習框架,當然也有基於Theano的版本(Theano什麼鬼,暫時你也可以不用關心的)。

當用Keras寫完第一個模型後我的心情真的是...

0?wx_fmt=gif

如果說Tensorflow是可以把一個模型程式碼量大大減少的框架,那麼Keras就是讓模型程式碼量可以少到掉渣的框架。

剛才跟大家說了那麼多貓狗分類器模型,現在就給大家看下這個分類器模型程式碼在Keras框架可以少到什麼程度!!!

0?wx_fmt=jpeg

那麼寥寥幾行程式碼就把一個擁有著卷積層、池化層和全連線層並且使用Adam這個較高階優化方法的深度學習網路架構寫出來了,你自己感受下在Keras下實現深度學習演算法模型有多簡單了吧...

0?wx_fmt=gif

有沒有為自己的驚奇發現感到開心!

寫在最後

小白AI之路”第一篇文章已經快到尾聲了,如果你堅持看到了這裡,那大概率你對AI的理解和認知已經擊敗了你朋友圈裡90%經常分享AI將改變世界取代人類的好友們。

接下來我們的目標是從剩下的10%裡往上爬,我也希望能夠通過更有趣、更直觀、更少數學的方式跟大家分享和學習AI相關知識。當然我也還是一個AI世界的小學生,也還在努力地學習和奔跑。如果大家想要繼續follow這一些系列文章或者想要與我交流的,可以關注我的公眾號“小白AI之路(AI-Learning),當然也可以加我的私人微訊號“mayiyanzhi”做更多的探討和交流!

0?wx_fmt=jpeg

識別以上二維碼,可關注公眾號“小白AI之路”

如果大家覺得還算有那麼一丟丟的收穫並且身邊也有朋友在關注和學習AI的話,請隨肆無忌憚隨意分享哈!順便助我擺脫零粉絲蛤蛤蛤!

0?wx_fmt=gif

注:飯糰“AI產品經理大本營” ,是黃釗hanniman建立的、行業內第一個“AI產品經理成長交流社群”,通過每天干貨分享、每月線下交流、每季職位內推等方式,幫助大家完成“AI產品經理成長的實操路徑”;詳情可點選“閱讀原文”檢視。

讚賞金額,會轉給本文原作者

0?wx_fmt=png

---------------------

作者:黃釗hanniman,圖靈機器人-人才戰略官,前騰訊產品經理,5年AI實戰經驗,8年網際網路背景,微信公眾號/知乎/在行ID“hanniman”,飯糰“AI產品經理大本營”,分享人工智慧相關原創乾貨,200頁PPT《人工智慧產品經理的新起點》被業內廣泛好評,下載量1萬+。