如何用神經(jīng)網(wǎng)絡(luò)判斷奇偶數(shù)?
這個(gè)題目挺有意思【看著簡(jiǎn)單,實(shí)際上。。?!?,有點(diǎn)玄學(xué)的味道,又有點(diǎn)知識(shí)的味道,這也太難為神經(jīng)網(wǎng)絡(luò)了。
在做這個(gè)題目之前,先想一個(gè)問(wèn)題,讓神經(jīng)網(wǎng)絡(luò)判斷阿貓阿狗難呢,還是判斷奇偶數(shù)難呢?
再回顧下非線性的概念。
開(kāi)始吟唱。
非線性,應(yīng)該是從原始輸入到目標(biāo)決策之間gap的刻畫(huà),用博大精深的中文語(yǔ)言為例:
比如垃圾話,就很直白,無(wú)非是問(wèn)候幾個(gè)人物,幾個(gè)器官,幾個(gè)行為。可以望文生義。
但是陰陽(yáng)話,這個(gè)就非常難了。
感恩兩字,你要看他真的感恩,還是在那里只能咸因。威武支持有希望了,你看他是不是在叼飛盤(pán),這就很難。
這些都要看具體的場(chǎng)景,人物和環(huán)境,這就叫非線性。
人的解決問(wèn)題,大概就是把一個(gè)復(fù)雜目標(biāo)化簡(jiǎn)解決的能力,目的是降低問(wèn)題的非線性,把一個(gè)問(wèn)題去解決的過(guò)程。具體到數(shù)據(jù)挖掘上,應(yīng)該是把特征表達(dá)出來(lái)的能力。
具體到問(wèn)題,非線性比較高的場(chǎng)景有,序列建模,大規(guī)模離散ID建模,陰陽(yáng)話識(shí)別,語(yǔ)音的特征表達(dá)。這些都是非線性非常高的場(chǎng)景,基本都超出了手動(dòng)解決輸入到目標(biāo)之間gap的能力。
我們?cè)倥e一個(gè)例子。
題目:請(qǐng)使用一個(gè)邏輯回歸的模型,建模一個(gè)身材分類器,身材分偏胖和偏瘦兩種,輸入的特征有身高和體重。
數(shù)據(jù)集大概長(zhǎng)這樣:

事實(shí)上,我們很難單純地從身高和體重決策出一個(gè)人的身材,你說(shuō)姚明體重280斤,他真的一定就胖嗎??別忘了他身高有226公分的。
這組數(shù)據(jù)可能超出了你的認(rèn)知,只看數(shù)據(jù)不看照片,一下子不好說(shuō)他是胖還是瘦。(其實(shí)挺胖的哈哈)
嗯,這個(gè)你看到那組數(shù)據(jù),不好一下子說(shuō)出來(lái)的感覺(jué),就是機(jī)器學(xué)習(xí)里面非常關(guān)鍵的概念,“非線性”。
回到題目,判斷奇偶,這個(gè)非線性的層次又上了一大截。
一個(gè)剛出生的嬰兒,你教會(huì)奇數(shù)偶數(shù),要比教他識(shí)別貓狗難如登天。
那怎么辦呢?
第一,特征工程
X%2,加在輸入里,你看它牛不牛?這種對(duì)于人類小學(xué)生水平的知識(shí),對(duì)于機(jī)器學(xué)習(xí)就捉襟見(jiàn)肘了。
或者把數(shù)據(jù)轉(zhuǎn)化成二進(jìn)制sequence輸入,模型就根據(jù)最后一位的0和1,直接得到結(jié)果了。
本質(zhì)上這兩種方法都是用人的先驗(yàn)知識(shí),把數(shù)據(jù)經(jīng)過(guò)變化,處理成模型更易于理解的形式。這個(gè)過(guò)程,也就是特征工程這件事情的本質(zhì),降低非線性,助力模型學(xué)習(xí)。好風(fēng)憑借力,助我上青云。
第二,升級(jí)模型
特征工程總有種case ?by ?case的感覺(jué),處理特定的問(wèn)題很好,如果我的模型想泛化起來(lái),就不是有多少人工就有多少智能,這么簡(jiǎn)單了。
辦法也有,神經(jīng)網(wǎng)絡(luò)的普遍的方式行不通,我們看看能不能搞一個(gè)融入先驗(yàn)知識(shí)的模型結(jié)構(gòu),改造神經(jīng)網(wǎng)絡(luò),無(wú)非是模型結(jié)構(gòu),激活,池化這些東西。
最簡(jiǎn)單的方式就是使用有周期性的激活函數(shù),本身mod這些操作都是不可導(dǎo)的,但是三角函數(shù)可以簡(jiǎn)單解決,答案呼之欲出。

y=0.5*cos(π*(x-1))+0.5
這個(gè)函數(shù)的圖像長(zhǎng)這樣,而且它很好理解梯度下降的本質(zhì),激活結(jié)果就是答案,沒(méi)有在拐點(diǎn)上的位置,損失函數(shù)都會(huì)push你產(chǎn)生梯度,逼著你的參數(shù)去找最優(yōu)解。
我們?cè)倏凑Z(yǔ)音領(lǐng)域,更玄學(xué)中的玄學(xué)了。

為了應(yīng)對(duì)更復(fù)雜的非線性,聰明的人搞出了時(shí)頻變換。
在這基礎(chǔ)上,又搞出了MFCC。
這是典型的,用人腦解決非線性的例子。
好了,我們?cè)倩仡櫼幌麻_(kāi)頭的另一道LR識(shí)別胖瘦題目吧。
升級(jí)模型,把線性的邏輯回歸加上kernel來(lái)增加非線性的能力。我們使用這個(gè)模型 sigmoid(ax+by+kx*y^(-2)+c),這個(gè)模型通過(guò)多項(xiàng)式核方法的升級(jí),解決了低維空間線性模型不太好解決的問(wèn)題。
特征工程,掏出體檢報(bào)告上的BMI指數(shù),BMI=體重/(身高^(guò)2)。這樣,通過(guò)BMI指數(shù),就能非常顯然地幫助我們,刻畫(huà)一個(gè)人身材如何。甚至,你可以拋棄原始的體重和身高數(shù)據(jù)。
要是沒(méi)有BMI指數(shù)的話。你也只能像LR那樣,通過(guò)核方法來(lái)解決了。在方式一我們使用了核方法給這些模型升維,方式二使用了特征方法。
天下沒(méi)有免費(fèi)的午餐。
給模型引入非線性是有代價(jià)的,連LR這種最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)形式都影響很大,一是共線性,二是噪聲。
第一、共線性的意思是幾個(gè)項(xiàng)表達(dá)的含義是趨同的,保持了很強(qiáng)的線性關(guān)系,對(duì)于邏輯回歸是致命的問(wèn)題,因?yàn)樗麕?lái)了權(quán)重的不穩(wěn)定,要知道邏輯回歸權(quán)重可是暗示了特征重要性的。還會(huì)破壞樸素貝葉斯的基本假設(shè)。這些都是有副作用的。
(要是你對(duì)這段話,不好理解的話,仔細(xì)學(xué)習(xí)下邏輯回歸模型和共線性的理論,此處不單獨(dú)展開(kāi))
第二、噪聲讓你的分類器學(xué)習(xí)到了一些不好的東西,對(duì)你的決策沒(méi)有產(chǎn)生泛化的貢獻(xiàn),反而帶跑偏你的模型,學(xué)習(xí)到了一些不是知識(shí)的邊邊角角。
很多問(wèn)題不像判斷胖瘦,奇偶數(shù),這樣簡(jiǎn)單,為了獲取他們的知識(shí)。
你圍繞輸入做了一系列特征工程,他們有的有用,有的有噪音。
你圍繞著神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)了一系列模型結(jié)構(gòu),他們一部分可以提取知識(shí),一部分又學(xué)到了邊邊角角,歪門(mén)邪道。
事情都有兩面性,神經(jīng)網(wǎng)絡(luò)的演進(jìn)就是這樣的哲學(xué),用人腦的方法論,抓住主要矛盾,螺旋前進(jìn)。于是搞出了各種各樣的tricks,dropout,BN,LN,Adam,在計(jì)算機(jī)認(rèn)知科學(xué)里,就像一顆顆發(fā)光的珍珠。學(xué)習(xí)工作也是這樣吧。
-?推薦閱讀-
深度學(xué)習(xí)系列機(jī)器學(xué)習(xí)系列
文末,粉絲福利來(lái)了??!關(guān)注【算法進(jìn)階】??
后臺(tái)回復(fù)【課程】,即可免費(fèi)領(lǐng)取Python|機(jī)器學(xué)習(xí)|AI 精品課程大全

機(jī)??器學(xué)習(xí)算法交流群,邀您加入!??!
入群:提問(wèn)求助、認(rèn)識(shí)行業(yè)內(nèi)同學(xué)、交流進(jìn)步、共享資源...
掃描??下方二維碼,備注“加群”

