深度神經網絡學習:線性迴歸與邏輯迴歸
雖然大致明白了Sparse Coding的方法,但總覺得裡面有還是有滯澀之處,按師父當年的教育來說,凡是遇到有思不通的問題時,必是基礎不牢。所以重習一下線性迴歸與邏輯迴歸,以加清認識。
線性迴歸,從概念來說其實比較簡單,它抽象成幾何的概念,比如一個平面上,上面有一堆點,如果能用曲線把它們全穿起來,那麼這個就是一個線性問題,因為可以用曲線把它們全覆蓋,而線性問題就可以通過線性迴歸來解決。
對於迴歸這個詞,如果用標準術語定義是這樣的:迴歸研究一個隨機變量Y對另一個(X)或一組(X1,X2,…,Xk)變量的相依關係的統計分析方法。研究一個或 多個隨機變量Y1 ,Y2 ,…,Yi與另一些變量X1、X2,…,Xk之間的關係的統計方法。又稱多重回歸分析。通常稱Y1,Y2,…,Yi為因變量,X1、X2,…,Xk為自變量。
所謂的迴歸,在下的理解就是,假設有那麼一條線可以覆蓋所有的點,然後不斷在一個平面上畫啊畫啊,直到找出這個曲線為止,這個過程就叫回歸。
而對於數據來說,它就是試圖找出數據之間的關係,尤其是找出數據之間影響的顯著關係。
而回歸的方法,通常就是兩種,一種叫最小二乘法。
最小二乘法是法國科學家勒讓德於1806年獨立發現的,但因不為世人所知而默默無聞,後來高斯《天體運動論》裡使用了最小二乘法,後來勒讓德跟高斯還掐了一架,爭執是誰發明的。
這個過程非常簡單,首先假設一個目標曲線為xi,那麼每次嘗試畫出來的就是xj,比如在0點位置,而它們間的偏差就是x0-x0。
因為這裡的Xi與Xj並不是兩個點,而是兩個函數,所以Xi與Xj之間相關做到最小。
顯然,如果把每個Xi與Xj的誤差都累加起來,就是兩個函數的誤差,但問題這樣就不好求解了,所以用它們的平方差作為誤差。所以總誤差判斷定為: Σ(xi-xj)2
要總誤差最小,當然最好是Xi與Xj相等,問題是現在本來就是要找出xi,而不斷嘗試畫的是xj.而要求的是如何能讓xj不斷通過調整變成Xi。
因為第一個xj相當於隨手亂畫上去的一條曲線,所以把這個問題轉化成:如何讓Xj能更快接近Xi。
這好比變成了這樣的問題,現在有10個蘋果,裡面有一個蘋果比其它蘋果要輕,現在有一個天平,如何稱才能最快找出這個最輕的蘋果。
方法是,左五個,右五個,找出輕的一面,再把五個分成左兩個右兩個,再稱,如果一樣重,剩下的就是那個輕的,如果不一樣重,再取輕的兩個,放天平來稱,這樣輕的那個就找出來了。
為什麼10個蘋果三次可以找出來?因為2的三次方等於8,2的四次方等於16,在8~15個蘋果範圍內,都是三次就可以找出來的,這種就是最快找出的辦法,它的本質就是:
y = 21+22+23+...2i
所以用這個辦法就很容易想到,最快讓xj逼近xi的方法就是不斷的逼近中間的二乘曲線的過程,而恰好這個又是可以求出來的。
而通過不斷逼近來進行調整的,稱為梯度下降法,是局部最小值,而一次性找到全局最小值的,就稱為最小二乘法。
為什麼不一下子找到全局最小值?因為大多數情況下,樣本數據量太大,計算非常繁重,很難找出全局最小值,而且在現實中數據並不是那麼清晰可見,必須要加入損失函數,以忽視有可能錯誤的或需要忽略的樣本,而回歸的損失函數不是線性最小二乘問題,這導致了線性最小二乘問題即使在加入噪音干擾後無法去完全解決。
應該還有其它理由,不過個人以為,最重要的是原因個人以為,對於計算機來,梯度下降算法很好寫代碼,非常適合這種運算。
然後需要談到邏輯迴歸,線性迴歸適合解決線性問題,所謂線性問題也就是說,可以直接給你一個答案的東西,而邏輯迴歸,就是一個告訴你有可能什麼是個什麼東西。
這個有什麼意義呢?比如分類問題,就應該使用邏輯迴歸,而如果是計算比如持續投入多少錢會產生多少產生,就應該用線性迴歸。
再詳細一點來說,比如一個人,根據性徵分別是男人還是女人,這個就是邏輯迴歸的求解的問題,但如果吃多少食物變得有多胖,這個就是線性迴歸求解的問題。
邏輯迴歸問題實際上就是這樣的概念:在每次試驗中只有兩種可能的結果,而且兩種結果發生與否互相對立,並且相互獨立,與其它各次試驗結果無關,事件發生與否的概率在每一次獨立試驗中都保持不變,則這一系列試驗總稱為n重伯努利實驗,當試驗次數為1時,二項分佈就是伯努利分佈。
滿足這個的就用邏輯迴歸。
然後說到邏輯迴歸,這個讓人感覺比較有意思,因為邏輯迴歸最常用的是一個叫sigmoid函數的東西,通過sigmoid函數能夠解決非線性的分類問題。
而這個函數的圖像是這樣的:
而俺家的太極圖是這樣的:
是不是很相似?為什麼要採用S曲線?
因為從分佈上所,S曲線能最大限度上對中間的數據的變化顯得最敏感,並能抑制兩頭的變化,可以更好的反映變化。
太極線中的S線如果用正態分佈函數進行一定的變換的話,就能夠得到太極圖的S線,百度上可以找到相關的論文。

