發表文章

Large Scale Machine Learning - Week_10

圖片
Gradient Descent with Large Datasets Learning With Large Datasets 我們得知要獲得一個高效能的機器學習演算法,可以透過大量資料來訓練演算法/模型,達到我們覺得合理的預期結果。但訓練數據大量,也有它自己的問題,特別是計算量的部分。 就拿計算梯度下降的部分來講,如果我們每做一次梯度下降就要跌代計算所有的模型和真實結果的誤差,要是數據量到達千萬的級別,可能就要花掉許多時間或者得運用更強大的運算資源去縮短時間,這樣的計算代價是非常昂貴的,所以後續會再提到其他的計算梯度下降的演算法,幫助我們可以更有效率且花費較少計算資源去訓練模型。 當然在使用上千萬的數據去計算前,當然也要先嘗試看看數千筆的數據是否也能達到我們的目標,要如何確認機器學習演算法是否該運用多少資料並檢查機器學習的演算法是否正確運行時,那就可以畫出學習曲線,也就是關於代價函數和數據及數量的xy圖,下面左方的圖代表高方差的數據,下面右方的圖代表高偏差的數據,關於兩種模型的偏差,都有相 對應的方式可以去解決問題。 在大規模的機器學習中,我們喜歡找到合理計算量的方法,或者高效率的計算方法來處理大數據,接下來的章節我們會介紹隨機梯度下降和映射化簡等方法來處理大量數據。 -------------------------------------------------------------------------------------------------------------------------- Stochastic Gradient Descent 當我們遇到規模很大數據時,可以透過隨機梯度下降,隨機梯度下降的代價函數表示如下: 這和普通批次的代價函數(Batch Gradient Descent)的差異在於沒有m樣本數量這個常數。主要普通的批次代價函數,是對所有樣本的代價函數求平均值,而隨機梯度下降(Stochastic Gradient Descent)的代價函數是對單一樣本求代價函數。 進行隨機梯度下降此演算法時要先隨機重新排序訓練樣本,然後再對每個訓練樣本進行隨機梯度下降的工作,作法如下: 下面為進行隨機梯度下降時的迭代公式: 和普通的批次梯度下降迭代公...

Application Example: Photo OCR - Week_11

圖片
Photo OCR Problem Description and Pipeline 所謂的Photo OCR(Photo Optical Character Recognition)是指照片光學文字辨識,主要是從一張給定的圖片中識別文字,難度比一份掃描文檔中識別文字來得高。機器學習中要完成一項專案,需要先建立各個步驟的任務流程,把專案切割成較小的任務流程,再進行分工合作能加速專案進行。為了完成這樣的工作可能要採取下圖的步驟: 文字偵測(Text Detection):將圖片上的文字與其他環境對象分離開。 文字切割(Character Segmentation):將字串切割成每個單一文字。 文字分類(Character Classification):確認圖片中每個文字所對應的文字。 可以用任務流程圖來表達這個問題,每項任務可由一個單圖小隊來負責解決: -------------------------------------------------------------------------------------------------------------------------- Sliding Windows 滑動視窗是一項用來從圖像中抽取識別對象的技術。假設我們需要在一張圖中識別行人,首先要做的是用許多固定尺寸的圖片來訓練一個能夠準確識別行人的模型。然後我們以之前訓練識別行人的模型所採用的圖片尺寸在我們要進行行人識別的圖片進行剪裁,然後將剪裁得到的切片交給模型,讓模型判斷是否為行人,然後在圖片上滑動剪裁區域重新進行剪裁,將新剪裁的圖片也交給模型進行判斷,如此循環直至將圖片全部檢測完畢。 上述步驟完成後,再按比例放大剪裁的區域,再以新的尺寸對圖片進行剪裁,將新剪裁的圖片按比例縮小至模型所採納的尺寸,交給模型進行判斷,如此循環。 滑動窗口技術也被用於文字識別,首先訓練模型能夠區分字串與非字串,然後運用滑動窗口技術識別字串,完成字串辨識後,我們將識別得出的區域進行一些擴展,然後將重疊的區域進行合併。接著我們以寬高比做為過濾條件,濾掉高度比寬度更大的區域(因為單詞的長度通常比高度較大),下圖中綠色的區域是經過這些步驟後被認為是文字的區域,而紅色的區域是被忽略的。 以上為辨識文字偵測階...

Recommender Systems - Week_9_part2

圖片
Predicting Movie Ratings Problem Formulation 此章節會介紹推薦系統,推薦系統屬於機器學習領域應用中非常重要的一門應用,在很多科技公司中推薦系統扮演了非常重要的角色,為他們帶來了不少的收入,例如Amozon、E-bay、iTunes genius‧‧‧‧‧‧。 下面我們有5部電影和4個使用者,我們希望用戶能為電影打分數,以提供他們更好的服務品質獲推薦更好的電影給他們。 以下會介紹在機器學習中,推薦系統這演算法會提到的相關名詞或數學符號。 n u 代表用戶的數量 n m 代表電影的數量 r(i,j)此符號代表評分與否,如果用戶 i 給電影 j 評過分,則 r(i,j) = 1 y (i,j) 代表用戶 i 給電影 j 的評分 m j 代表用戶 j 評過分電影的總數 -------------------------------------------------------------------------------------------------------------------------- Content Based Recommendations 在一個基於內容的推薦系統演算法中,我們假設對於我們希望推薦的東西有一些數據,這些數據是有關於這些東西的特徵。在我們的例子中,我們假設每部電影都有兩個特徵,如x 1 代表電影的浪漫程度,x (2) 代表電影的動作程度。 假設我們採用線性回歸模型,我們可以針對每個用戶都訓練一個線性回歸模型,如𝛉 (1) 是代表一個用戶的模型參數,下面會再提到些數學符號代表的意義: 𝛉 (j) 用戶 j 的參數向量 x (i) 電影 i 的特徵向量 對於用戶j和電影我們的評分方式就是:(𝛉 (j) ) T (x (i) ),下圖會以alice這名使用者對Cute Puppies of Love(CPOL)的評分舉例來說明: 所以該使用者對此電影的評分為(𝛉 (j) ) T (x (i) ) = 1 * 0 + 0.99 * 5 + 0 * 0 = 4.95,此地方的參數向量並沒有明為什麼如此求取,後面會介紹參數向量如何求取。 至於要怎麼求取𝛉,我們就先從J代價函數開始著手,此推...

Anomaly Detection - Week_9_part1

圖片
Density Estimation 異常檢測是一個非監督是學習的演算法,用於發現可能不應該屬於一個已定義的組中的數據。 Problem Motivation 假設給定資料集x(1), x(2), x(3),...,x(m),假設我們的資料都正常且屬於同一類,我們想知道新的資料是不是異常且不屬於同一類,換句話說就是要測試這個資料是否屬於該資料組的機率如何。正常來說,我們所建構的模型應該能根據該測試的資料的位置,並告訴我們告訴屬於這一組資料集的可能性p(x)。 下面是某飛機內零件的資料特徵,下面在藍色圈內的數據屬於該資料集的可能性較高,若是越外圍越偏遠的資料,其屬於該數據的機率越低。 這種方式稱作密度估計,數學上的表達式為下面: 異常偵測可應用於很多方面,例如可以應用於網站欺騙行為的偵測,蒐集使用者的行為,建立異常偵測的機率模型,如果機率小於閥值則判定你並非一般使用者。 另一種則是用於檢測工廠產品品質的偵測,偵測產品是否為良品。 再者還可用來監測數據中心電腦的異常行為,紀錄每台電腦的記憶體使用、CPU使用率、網路流量、每秒的硬碟存取數,來判斷電腦是否中毒或被駭客入侵。 -------------------------------------------------------------------------------------------------------------------------- Gaussian Distribution 本章節主要是複習一下高斯分布的基本概念,如果我們認為變數x符合高斯分布,我們會用x ~ N(𝜇, 𝜎 2 )此符號來代表,其高斯機率密度函數如下,不用強記需要上網查即可: 在此公式中,𝜇是資料集的平均,代表常態分佈的中心,𝜎是資料集的標準差,代表高斯分布的寬度,可利用該已知的資料集來求出這些數據,然後描述該高斯分布,其公式如下: -------------------------------------------------------------------------------------------------------------------------- Algorithm 關於異常...

Dimensionality Reduction - Week_8_part2

圖片
Motivation Motivation I: Data Compression 我們在處理非監督式學習的演算法的時候,會遇到降低維度的問題,會使用降低維度這方式的原因有以下幾個:一個原因是要讓數據壓縮,維度壓縮不僅可以讓資料壓縮還可以讓演算法加速,首先我們先介紹降低維度這件事,下面我們透過幾個例子來說明降低維度。 上述兩種不同的儀器來測量一些東西尺寸時,其中一個儀器的單位是英吋,另一個儀器測量的結果是釐米,我們希望將測量的結果當作機器學習的特徵,現在問題是若將兩者都作為特徵會有些重複,因此我們希望將這個二維的資料降低成一維的資料。 我們會找出一條合適的直線,將二維的數據點都投射到該直線上,然後用z (i) 當作標示,這樣我們完成了二維數據x (i) 向一維數據z (i) 的映射,這樣新的特徵只是原有特徵的近似,但這樣將我們的儲存、記憶體占用量減半,並且使我們要使用這些資料的算法可以運行的更快。 同樣的若需要將數據從三維降至二維,就需要將三維向量投射到二維的平面上,迫使所有數據都在同一個平面上,降至二維的特徵向量。 -------------------------------------------------------------------------------------------------------------------------- Motivation II:Data Visualization 在許多機器學習問題中,如果我們能將資料可視化,我們可以找到一個更好解決方案,降為可以幫助我們。 假設我們有關於許多不同國家的數據,每一個特徵向量都有50個特徵(ex/ GDP、人均GDP、平均壽命等),如果要將這個50維度的資料可視化是不可能的。使用降維的方法將其降至二維,我們便將其可視化。這樣做的問題在於,降維的算法只負責減少維度,新產生的特徵的意義必需由我們去發現。 -------------------------------------------------------------------------------------------------------------------------- Principal Component Analysis ...