1. 程式人生 > >不求甚解的深度學習教程(1)-邏輯迴歸基本概念以及代價函式

不求甚解的深度學習教程(1)-邏輯迴歸基本概念以及代價函式

未來是人工智慧的時代!

提到深度學習,邏輯迴歸是最經典的一個例子,也是很多教材的入門演算法(比如吳恩達的深度學習)。鑑於本人零基礎學習人工智慧的痛苦經歷,所以用通俗的語言把邏輯迴歸講清楚。深度學習本身核心知識是數學知識,涉及到線性代數、概率論,微積分等。體會到很多讀者都是像我一樣,已經把這些知識早就還給老師了,所以我會逐步完善這個系列,用盡量通俗的語言來把深度學習的知識分享整理一遍。

什麼是“邏輯”?什麼是“迴歸”?

邏輯迴歸,英文名logistics regression,雖然帶了“邏輯”二字,但是和邏輯沒有任何關係,它是一種對樣本進行分類的方式。比如是否是垃圾郵件、是否患某種疾病,是解決二分類問題的一個方式,所以結果要麼是0,要麼是1。想一下,我們學計算機時那個課程是主要和0、1打交道?當然是邏輯運算那一塊!所以這麼理解邏輯。

那為什麼又叫“迴歸”呢?剛才舉的例子裡明明是個分類問題,為什麼取名“迴歸”呢(迴歸在我們中國人思維定式裡,就是香港迴歸、澳門迴歸)?檢視維基百科的解釋:

迴歸分析是建立因變數 Y {\displaystyle Y} Y(或稱依變數,反因變數)與自變數 X {\displaystyle X} X(或稱獨變數,解釋變數)之間關係的模型

  看圖,用人話解釋一下,就是知道了很多點(藍色)的X座標和Y座標,找到一條線來最大可能的符合這些點的趨勢,也就是我們初中學的線性方程。

 所以,什麼是邏輯迴歸呢?就是通過提供的一些資料,找到一個函式,來匹配這些資料的分類關係。

這和我們曾經學習資料的思維方式不一樣,過去我們數學一直學習y=f(x)=ax+b之類,如y=x+1,很明顯a=1,b=2,通過此求解x或者y的值。現在反過來來了,知道很多x和y的值(如圖上的點),來求解a、b的值。人工智慧、機器學習的大部分演算法都是在尋找一個最優的a、b等引數的值。

如何找到a、b兩個引數的值?先找一個預測的函式

剛才我們提到,邏輯迴歸的最終分類結果只有0和1兩個結果,所以對應上文提到的所有的取樣點x,所有的y值只能有0或者1兩個結果。所以剛才的座標系曲線應該是如下圖

 

那如何把之前f(x)=ax+b對應到上面這個圖上呢(最終取值是0或者1)?還好數學家們幫我們找到了一個函式,名叫Sigmoid函式,機器學習里名字叫啟用函式。為什麼叫啟用函式,我們以後再解釋。

這個函式形狀如它的名字“S”,正好符合上面0~1的曲線。把t換成原來的ax+b,就得到下面的公式

 所以接下來我們就圍繞這個公式做研究,怎麼找到a、b的值。

預測的函式和真實函式的差距

有一點一定要注意:當前這個p(x)函式是我們推測、假定的函式,是極度接近真實資料的函式。但是他和理想中的函式有有一定差距的,也就是誤差。所以換句話說,和真實結果做下下對比,我們把誤差計算出來,找到誤差最小的時候,是不是就找到一個最接近真實函式的預測函式,從而就找到a、b的理論值了?

所以我們先看看誤差函式怎麼定義

hθ(x):用引數θ和x預測出來的y值;這是一個新的符號,一定要注意。
y:原訓練樣本中的y值,也就是標準答案;

雖然這個函式英文名cost一看就明白,專業名詞叫損失函式,但是很多人一看就頭大,為什麼用這個函式。。。這個得問數學老師,反正通過這個函式,我們能正好完美的算出真實值和預測值的差。詳細解釋,利用高中數學知識

1. 當y=1的時候,Cost(h(x), y) = -log(h(x))。h(x)的值域0~1,-log(h(x))的曲線圖,如下

【字很小,但是很重要^_^】

h(x)的值趨近於1的時候,代價函式的值越小趨近於0,也就是說預測的值h(x)和訓練集結果y=1越接近,預測錯誤的代價越來越接近於0,分類結果為1的概率為1
當h(x)的值趨近於0的時候,代價函式的值無窮大,也就說預測的值h(x)和訓練集結果y=1越相反,預測錯誤的代價越來越趨於無窮大,分類結果為1的概率為0

2. 當y=0的時候, Cost(h(x), y) = -log(1-h(x))。h(x)的值域0~1,-log(1-h(x))的曲線圖,如下

 

 

 【字很小,但是很重要^_^】

h(x)的值趨近於1的時候,代價函式的值趨於無窮大,也就是說預測的值h(x)和訓練集結果y=0越相反,預測錯誤的代價越來越趨於無窮大,分類結果為0的概率為1-h(x)等於0
當h(x)的值趨近於0的時候,代價函式的值越小趨近於0,也就說預測的值h(x)和訓練集結果y=0越接近,預測錯誤的代價越來越接近於0,分類結果為0的概率為1-h(x)等於1

為了統一表示,可以把Cost(h(x), y)表達成統一的式子,根據前面J(θ)的定義,擴充套件到所有m個樣本,J(θ)等於

 

 

特別說明:
1. 當y=1的時候,第二項(1-y)log(1-h(x))等於0
2. 當y=0的時候,ylog(h(x))等於0
3. m指的是現在有m個點的y值需要與預測值進行比較

所以,我們是不是找到這個函式的最小值就找到a、b的值了?接下來一篇文章我們會講如何通過高中學的導數知識來求解這個最小值。

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

上文都是自己在學習過程中的一些總結,後續歡迎加qq群595560901交流

&n