從零開始,帶你編寫AI程序

從零開始,帶你編寫AI程序

概念看了不少,新科技實時跟進,但是對於AI還是傻傻弄不清楚?深度學習框架看來看去,卻總下不了手?

不必膽怯,小芯今天就帶你從零開始,以旅遊目的地分析為例,編寫自己的AI程序。

從零開始,帶你編寫AI程序

從零開始,帶你編寫AI程序

數據與賦權

如果你是一個十分了解旅遊業行情的人,並且想選擇跟團遊,要讓機器學會選擇符合自己經濟條件的目的地,你會怎樣構思?

首先,肯定是建立數據集。

你會收集旅行社提供的的報價、出發地與目的地之間的距離、遊玩的天數、服務的配置、淡季旺季等等。然後你會考慮到,發達國家的景點普遍要比發展中國家的貴,它們的報價可以歸納為兩個計算體系。這樣,你便可以製作成一個可供參考的集合。

從零開始,帶你編寫AI程序

按照傳統編程,你這時候或許會根據這個數據集算出不同因素的權重,然後運用乘法等等手段,算出一個估價,並利用估價篩選合適的目的地。

但我們都知道,匯率在變化,機票酒店均有漲有跌,這樣一來,每一次小的變動,權重都需要重新計算,才能較為準確地估計出價格。

這時候,最好的辦法就是讓機器學會自主分配權重。

有一個很好的方法可以應用到其中:你可以將權重全部設為“1”,然後將每個影響參數都帶入公式,算出一個初始值。當然,這個值有極大的概率和實際值相差千里,那麼怎麼減少誤差呢?我們可以運用最小二乘法等手段,尋找數據的最佳函數匹配。

那麼如果你是一個旅遊行業方面的小白,並不知道什麼因素影響著旅遊價格呢?你也同樣可以運用AI選擇適合自己經濟條件的旅遊目的地。

這時候,你的數據集可能就會變成一個由目的地、不同時間的價格、區域組成的集合。通過機器學習,計算機同樣也會為這幾個大的影響因素賦予權重,從而估算出大體的價格。

從零開始,帶你編寫AI程序

最精確的權重

當然,在你只想去熱門旅遊地的情況下,上面的做法就是可靠的。如果你想將全球的可旅遊地點納入你的考慮範疇,用最小二乘法尋找最佳權重顯然有些不切實際。

這時候該怎麼做呢?

如果將時間數據和價格間所有可能權重得出價格與實際價格的誤差可視化,我們會得到一個碗狀的圖像。而最低點就是最佳的權重。

從零開始,帶你編寫AI程序

那麼,找到讓斜率等於“0”的點就可以得出最優解了嗎?其實不然。

由於權重過於貼合數據集裡的數據,過擬合的問題便會出現。

要解釋所謂過擬合問題,讓我們打個恰當的比方。如果你開了一家酸辣粉店,你的第一個顧客喜歡又酸又辣,粉多菜少,你一條條都做到了,你會發現這個顧客很喜歡你的產品。但是第二個顧客卻只需要一碗酸一點的粉,那麼給第一位顧客的粉將不適合第二位顧客。這便是過擬合。

也就是說,往往我們得出的最佳權重只是對數據集本身來說的,對於數據集以外的別的旅遊目的地,卻並不適用。

而這些問題,可以用正則化或者交叉驗證數據來解決。即你可以利用這個權重,到不在數據集裡的冷門景點試試看,又或許可以減少影響因素的考慮。

從零開始,帶你編寫AI程序

讀芯君開扒

最佳AI=最佳權重

當然,在研究更靈活的權重計算的同時,不要忘了對影響因素的分析。計算機考慮問題與人類似,都是根據具體條件來具體分析,前提是這些條件要與事件相關。就像我們不能從小明今年3歲得出地球何時毀滅一樣,計算機同樣也不能。

而由於人的思考維度是受限的,AI目前也因此處處掣肘。如何讓人的主觀因素對AI的影響降到最低,讓計算機在思考方面超越人類,是現在也是未來關於AI最重要的命題之一。

從零開始,帶你編寫AI程序

參考文獻鏈接:

https://jizhi.im/blog/post/ml_is_fun_01


分享到:


相關文章: