吴恩达《Machine Learning》精炼笔记 12:大规模机器学习和图片文字识别 OCR
作者 | Peter
編輯 |?AI有道
系列文章:
吳恩達《Machine Learning》精煉筆記 1:監督學習與非監督學習
吳恩達《Machine Learning》精煉筆記 2:梯度下降與正規方程
吳恩達《Machine Learning》精煉筆記 3:回歸問題和正則化
吳恩達《Machine Learning》精煉筆記 4:神經網絡基礎
吳恩達《Machine Learning》精煉筆記 5:神經網絡
吳恩達《Machine Learning》精煉筆記 6:關于機器學習的建議
吳恩達《Machine Learning》精煉筆記 7:支持向量機 SVM
吳恩達《Machine Learning》精煉筆記 8:聚類 KMeans 及其 Python實現
吳恩達《Machine Learning》精煉筆記 9:PCA 及其 Python 實現
吳恩達《Machine Learning》精煉筆記 10:異常檢測
吳恩達《Machine Learning》精煉筆記 11:推薦系統
本周主要是介紹了兩個方面的內容,一個是如何進行大規模的機器學習,另一個是關于圖片文字識別OCR?的案例
大規模機器學習
圖片文字識別OCR
大規模機器學習(Large Scale Machine Learning)
在低方差的模型中,增加數據集的規模可以幫助我們獲取更好的結果。但是當數據集增加到100萬條的大規模的時候,我們需要考慮:大規模的訓練集是否真的有必要。獲取1000個訓練集也可以獲得更好的效果,通過繪制學習曲線來進行判斷。
隨機梯度下降法Stochastic Gradient Descent
如果需要對大規模的數據集進行訓練,可以嘗試使用隨機梯度下降法來代替批量梯度下降法。隨機梯度下降法的代價函數是
具體算法的過程為
先對訓練集進行隨機的洗牌操作,打亂數據的順序
重復如下過程:
隨機梯度下降算法是每次計算之后更新參數θ,不需要現將所有的訓練集求和。
算法可能存在的問題
不是每一步都是朝著”正確”的方向邁出的。因此算法雖然會逐漸走向全 局最小值的位置,但是可能無法站到那個最小值的那一點,而是在最小值點附近徘徊。
小批量梯度下降 Mini-Batch Gradient Descent
小批量梯度下降算法是介于批量梯度下降算法和梯度下降算法之間的算法。每計算常數b次訓練實例,便更新一次參數θ。參數b通常在2-100之間。
隨機梯度下降收斂
隨機梯度下降算法的調試和學習率α的選取
在批量梯度下降算法中,可以令代價函數JJ為迭代次數的函數,繪制圖表,根據圖表來 判斷梯度下降是否收斂;大規模的訓練集情況下,此舉不現實,計算代價太大
在隨機梯度下降中,更新θ之前都計算一次代價,然后迭代X后求出X對訓練實例的計算代價的平均值,最后繪制次數X和代價平均值之間的圖像
隨著不斷地靠近全局最小值,通過減小學習率,迫使算法收斂而非在最小值最近徘徊。
映射化簡和數據并行Map Reduce and Data Parallelism
映射化簡和數據并行對于大規模機器學習問題而言是非常重要的概念。如果我們能夠將我們的數據集分配給不多臺 計算機,讓每一臺計算機處理數據集的一個子集,然后我們將計所的結果匯總在求和。這樣 的方法叫做映射簡化。
如果任何學習算法能夠表達為對訓練集的函數求和,那么便能將這個任務分配給多臺計算機(或者同臺計算機的不同CPU核心),達到加速處理的目的。比如400個訓練實例,分配給4臺計算機進行處理:
圖片文字識別(Application Example: Photo OCR)
問題描述和流程圖
圖像文字識別應用所作的事是從一張給定的圖片中識別文字。
基本步驟包含:
文字偵測(Text detection)——將圖片上的文字與其他環境對象分離開來
字符切分(Character segmentation)——將文字分割成一個個單一的字符
字符分類(Characterclassification)——確定每一個字符是什么 可以用任務流程圖來表
每項任務可以有不同的團隊來負責處理。
滑動窗口Sliding windows
圖片識別
滑動窗口是一項用來從圖像中抽取對象的技術。看一個栗子:
如果我們需要從上面的圖形中提取出來行人:
用許多固定尺寸的圖片來訓練一個能夠準確識別行人的模型
用上面訓練識別行人的模型時所采用的圖片尺寸在我們要進行行人識別的圖片上進行剪裁
剪裁得到的切片交給模型,讓模型判斷是否為行人
重復循環上述的操作步驟,直至將圖片全部檢測完。
文字識別
滑動窗口技術也被用于文字識別。
首先訓練模型能夠區分字符與非字符
然后運用滑動窗口技術識別字符
完成字符的識別,將識別得出的區域進行擴展
將重疊的區域進行合并,以寬高比作為過濾條件,過濾掉高度比寬度更大的區域
上述步驟是文字偵察階段,接下來通過訓練出一個模型來講文字分割成一個個字符,需要的訓練集由單個字符的圖片和兩個相連字符之間的圖片來訓練模型。
訓練完成之后,可以通過滑動窗口技術來進行字符識別。該階段屬于字符切分階段。
最后通過利用神經網絡、支持向量機、或者邏輯回歸等算法訓練出一個分類器,屬于是字符分類階段。
獲取大量數據和人工數據
如果我們的模型是低方差的,那么獲得更多的數據用于訓練模型,是能夠有更好的效果。
獲取大量數據的方法有
人工數據合成
手動收集、標記數據
眾包
上限分析Ceiling Analysis
在機器學習的應用中,我們通常需要通過幾個步驟才能進行最終的預測,我們如何能夠 知道哪一部分最值得我們花時間和精力去改善呢?這個問題可以通過上限分析來回答。
回到文字識別的應用中,流程圖如下:
我們發現每個部分的輸出都是下個部分的輸入。在上限分析中,我們選取其中的某個部分,手工提供100%爭取的輸出結果,然后看整體的效果提升了多少。
如果提升的比例比較明顯,可以考慮在這個方向投入更過的時間和經歷
如果提升的效果微乎其微,意味著某個部分已經做的足夠好了
AI 角:當人工遇上100階魔方
總結
以上是生活随笔為你收集整理的吴恩达《Machine Learning》精炼笔记 12:大规模机器学习和图片文字识别 OCR的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 普通小白学会Python到底具体能做什么
- 下一篇: 330+ 个机器学习模型/库探索工具!P