吳恩達機器學習第十周課後感
目錄
一、主要內容
二、個人感受
三、實際應用
正文
一、主要內容
《Gradient Descent with Large Datasets》
Learning with Large Datasets
當數據量巨大的時候,模型的準確率會提高非常大,但是計算的成本會提高非常大。或者我們可以通過之前課程中涉及到的學習曲線來挑選一個適當的數據量。
Stochastic Gradient Descent
Stochastic Gradient Descent:隨機梯度下降,在隨即打亂數據集後,通過小數據的調優,直接找到局部最優解,然後迭代。
數據量極大的情況下,梯度下降的時間成本會非常高,甚至需要多次硬碟讀寫才能處理所有的數據。通過隨機梯度下降,我們可以很大程度上緩解數據過大無法全部存入內存的問題。
Mini-Batch Gradient Descent
Mini-Batch Gradient Descent:迷你批量梯度下降,不同於梯度下降用全部樣本迭代,隨機梯度下降用1個樣本迭代,迷你批量梯度下降每次用b個樣本迭代(b可以人工確定)。
Stochastic Gradient Descent Convergence
確保梯度下降收斂只需要保證每次迭代數字都更小就行,但是數據量變大之後,這個問題就會複雜一下。隨機梯度下降在處理大數據的時候,比較常用的做法是,每1000個樣本(可以自行修改)求一次平均值,然後觀測迭代後是否有收斂。如果發現迭代後的圖像反而表現為發散,那就需要我們降低學習率。
當梯度下降後的代價函數沒有辦法準確的確定最終的全劇最小值的時候,一個很好的做法是每次迭代後,按一定的演算法減小學習率。
《Advanced Topics》
Online Learning
Online Learning:在線學習,當有海量數據不斷湧入資料庫的時候,機器不間斷的去學習。
Click-through Rate(CTR):點擊率。
使用在線學習,最重要的一個部分是不間斷地重複模型去運行。通過對特徵的理解,機器可以在不斷學習的情況下,給出當時最好的選擇。
Map Reduce and Data Parallelism
在現今時代,map reduce已經大範圍被應用在了大型計算機集群中,用於大數據的運算。其主要思想就是分割數據交由機群並行運算,最後將結果合併到一起。
二、個人感受
進入到大數據時代之後,數據量的龐大展現出了驚人的優勢。雖然數據大可以讓準確率提升非常多,但是數據的處理卻成為了讓人頭疼的問題。感謝Jeff Dean為批量處理數據做出的巨大貢獻。Map Reduce現如今被應用在了各種各樣的場景當中,真的很難想像沒有Map Reduce的世界。
除了Map Reduce在日常的工程任務當中,其實可以多使用批量處理的思路去編寫程序,比如協程就是非常好的概念。在日常生活當中其實也是一樣的,一些可以「投機取巧」的小技巧真的可以幫助我們提高效率。
我今天也了解到了一個非常有意思的觀點,來自於吳軍。他提出在數量級上提高質量:比如蘋果公司多花了幾分錢的成本,造出了視網膜顯示屏,就可以多賣好幾百塊。且不論研發成本花多少錢,而且非常快就能被其他公司追平的技術。有這種理想還是好的,在生活中改進一點點,就可以收穫更多的回報。
三、實際應用
上述的演算法都有被通用的工具打包好,所以調用起來會非常方便,而且現如今數據量只在增加,未來只會指數級增長,因此應對大數據的策略,我們需要掌握得越多越好。我最近在處理分詞問題的時候,實際上,就在找辦法去批量處理數據。即使不到10萬條的語料,處理起來真的讓人抓狂。
推薦閱讀:
※scikit-learn實戰
※優秀的機器學習模型,可以用一輩子
※深度學習之單層感知器(一)
※直覺版:CNN解讀part1
※深入機器學習系列4-KMeans
TAG:機器學習 |