神经网络(1)--Non-linear hypotheses,为什么我们要学习神经网络这种算法来处理non-linear hypotheses...
神經網絡(1)--No-linear hypotheses?
為什么我們已經有了linear regression與logistic regression算法還要來學習神經網絡這個另外的算法呢,讓我們來看看幾個復雜的no-linear hypotheses
?
想要對上面圖中的trainning data做logistic regression的話,你可以做的是apply logistic regression with a lot of nonlinear features(如上圖中的g(θ0+....),它是一個sigmoid function),如果包括了足夠多的多項式的話,然后你可能會得到上圖中的那條粉色的hypotheses(完全將positive與negative分開),當只有兩個features這種多項式的方法很好,因為你可以把所有關于x1,x2的多項式包括進來。但是在實際生活中,我們可能會遇到遠遠多于2個features的問題。
如我們還是舉賣房子的例子,現在房子的feature有100個,是個分類問題,對房子下個季度能否賣出做預測。
如果將所有的二次項都包括進來的話,將有5000個features(O(n2)),如果將這些features都考慮的話,不是一個好算法因為會出現overfitting的問題并且處理這么多的features計算也很耗時,當然可以考慮只包括這些二次項中的一部分,比如只考慮x12,x22,x32....x1002,這樣只有100個features了,但是因為沒有足夠多的features,實際上畫出來的圖像是類似于橢圓的圖像,所以不可以畫出像左上圖那樣的hypotheses。
如果考慮三次項的話,features有大約170000,這是一個很大的數量,不是一個好的處理方式。
對于很多機器學習的問題來說,features都很大,讓我們來看一個關于computer vision的問題。假設我們想知道一幅圖片是否是一輛車。
為什么computer vision的問題很復雜,因為在我們看來很容易辨別這是一輛車,但是對于計算機來說卻很難,因為它看到的和我們是不同的。比如就車把手那一小塊地方來說,計算機看到的是一個像素強度值的矩陣(告訴我們每個像素點的brightness),實際上計算機看到的是這個矩陣,然后告訴我們這是一輛車的門把手。
實際上我們在使用machine learning to build a car detector,我們要處理一個label training set(有一些label 為car的例子,有一些label 不為car的例子),然后我們把這個training set給我們的learning algorithm去訓練,然后你可以用一張新的圖片來test,看是否來正確識別出它是否為一輛車。
取兩個位置的像素點,然后再下面的圖中plots相應的點,用+表示是car,用-表示不是car,隨著訓練集中的點的plot,我們可以看出這是一個Non-linear hypotheses
如果每幅圖片取50*50個像素點,則有2500個像素點,我們的features個數為2500個,則我們的測試x是一個維度為2500的向量,向量里面的元素為每個像素點的值,如果圖片是灰度表示的話,值在0-255之間。如果圖片是用RGB表示的話,則有7500個features。features為2500時,如果我們用二次項來計算這個No-linear hypotheses,把所有的二次項都包括進來的話,則大約有3 million的features,這個太大了,來完成計算太費時,可能也完不成計算。
所有simple logistic regression together with adding in with maybe 二次項或者三次項的方法----不是一個好的當很大時學習復雜的nonlinear hypotheses的方法,因為你會得到很多features。
神經網絡是經驗證了的一種更好的處理這種當n很大時的復雜問題的方法(complex nonlinear hypotheses)
?
?
?
轉載于:https://www.cnblogs.com/yan2015/p/4896214.html
總結
以上是生活随笔為你收集整理的神经网络(1)--Non-linear hypotheses,为什么我们要学习神经网络这种算法来处理non-linear hypotheses...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试题37:两个链表的第一个公共结点
- 下一篇: 一个值得思考的例子