機(jī)器學(xué)習(xí)之softmax函數(shù)

在上一篇專題中瞄桨,我們以三層神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)為例话速,介紹了如何利用Python和Numpy編程實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的計(jì)算。其中芯侥,中間(隱藏)層和輸出層的激活函數(shù)分別選擇了 sigmoid函數(shù)和恒等函數(shù)泊交。此刻,我們心中不難發(fā)問(wèn):為什么要花一個(gè)專題來(lái)介紹輸出層及其激活函數(shù)柱查?它和中間層又有什么區(qū)別廓俭?softmax函數(shù)何來(lái)何去?下面我們帶著這些疑問(wèn)進(jìn)入本專題的知識(shí)點(diǎn):

1 輸出層概述

2 回歸問(wèn)題及恒等函數(shù)

3 分類問(wèn)題及softmax函數(shù)

4 Python編程softmax函數(shù)

1 輸出層概述

神經(jīng)網(wǎng)絡(luò)/深度學(xué)習(xí)本質(zhì)上都屬于機(jī)器學(xué)習(xí)問(wèn)題物赶,而我們知道白指,機(jī)器學(xué)習(xí)一般分為監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí),生活中酵紫,我們應(yīng)用更多的是監(jiān)督學(xué)習(xí)(簡(jiǎn)單來(lái)說(shuō)需要事先通過(guò)已知的輸入輸出數(shù)據(jù)進(jìn)行學(xué)習(xí)告嘲,然后對(duì)未知的輸入數(shù)據(jù)進(jìn)行預(yù)測(cè)),以神經(jīng)網(wǎng)絡(luò)為例奖地,學(xué)習(xí)的結(jié)果橄唬,即輸出層的輸出值y。該輸出值既可以是一個(gè)連續(xù)的無(wú)范圍約束的數(shù)值(回歸問(wèn)題)参歹,也可以是一個(gè)離散的范圍被限制(一般在0至1之間)的數(shù)值(分類問(wèn)題)仰楚。所以針對(duì)不同的問(wèn)題,我們對(duì)輸出層的設(shè)計(jì),即激活函數(shù)的設(shè)計(jì)應(yīng)不同僧界。一般情況下侨嘀,在神經(jīng)網(wǎng)絡(luò)中,回歸問(wèn)題選擇恒等函數(shù)作為激活函數(shù)捂襟,分類問(wèn)題選擇softmax函數(shù)作為激活函數(shù)咬腕。

小提示:

監(jiān)督學(xué)習(xí)又分為回歸問(wèn)題和分類問(wèn)題。如果想對(duì)機(jī)器學(xué)習(xí)有一個(gè)透徹而全面的理解葬荷,給大家推薦一本OReilly出版的書(shū)籍《Introduction to MachineLearning with Python》涨共,不知道現(xiàn)在是否發(fā)布了中文版,但網(wǎng)上已經(jīng)有了很多讀者自己上傳的中文筆記宠漩,大家也可在我的博客中獲取本人上傳的閱讀筆記举反。

2 回歸問(wèn)題及恒等函數(shù)

“回歸”一詞對(duì)于理工科的人來(lái)說(shuō)并不陌生,直觀地講扒吁,回歸問(wèn)題是根據(jù)輸入來(lái)預(yù)測(cè)一個(gè)連續(xù)的數(shù)值的問(wèn)題锌订。比如根據(jù)一個(gè)人的日常飲食量來(lái)預(yù)測(cè)這個(gè)人的體重眨猎,這就是一個(gè)回歸問(wèn)題。為讓大家更加明白,我們以數(shù)學(xué)表達(dá)式為例:

上面這個(gè)回歸問(wèn)題些己,以神經(jīng)網(wǎng)絡(luò)模型為例吊骤,首先需要向神經(jīng)網(wǎng)絡(luò)提供已知的正確的輸入(食飯量和食肉量)和輸出(體重)捧存,通過(guò)這些信息捷绒,模型學(xué)到了變量的權(quán)重。然后就可以對(duì)輸入進(jìn)行輸出預(yù)測(cè)捉貌。

不難理解支鸡,我們并不需要對(duì)這樣的信號(hào)加權(quán)和進(jìn)行其他處理,也就是說(shuō)我們直接輸出食飯量和食肉量的加權(quán)和即可趁窃。因此牧挣,在輸出層的設(shè)計(jì)中,輸入信號(hào)應(yīng)該原封不動(dòng)地被輸出醒陆,即激活函數(shù)h()應(yīng)該選擇恒等函數(shù)(用σ()表示)瀑构,如下圖:

由于激活函數(shù)選擇的是恒等函數(shù),因此輸出值沒(méi)有在我們的預(yù)定范圍內(nèi)刨摩。

3 分類問(wèn)題及softmax函數(shù)
3.1 分類問(wèn)題

顧名思義寺晌,“分類”就是判斷一個(gè)數(shù)據(jù)集所描述的類別,比如判斷圖像中的人是男還是女澡刹,這里的數(shù)據(jù)集是圖像數(shù)據(jù)呻征,類別有男和女兩個(gè)類別。既然是判斷罢浇,那么它應(yīng)該是一個(gè)概率性的問(wèn)題陆赋,打個(gè)比方沐祷,一個(gè)畫(huà)了濃妝艷抹的男扮女裝,僅看照片攒岛,我們?yōu)榱朔乐拐f(shuō)話過(guò)于絕對(duì)赖临,會(huì)以這樣的方式表達(dá):我覺(jué)得這照片有可能是男的;我覺(jué)得這照片很有可能是男的阵子。以概率描述:我覺(jué)得這張照片是男性的可能性為60%(0.6)思杯;我覺(jué)得這張照片是男性的可能性是90%(0.9)。

因此挠进,我們對(duì)分類問(wèn)題的判斷結(jié)果,實(shí)際上是來(lái)自于概率誊册。我們用上圖來(lái)分析分類問(wèn)題:圖中的輸出信號(hào)有三個(gè)y1领突、y2、y3案怯,我們可以理解為這是一個(gè)三類別分類君旦,對(duì)于輸入的數(shù)據(jù)集,神經(jīng)網(wǎng)絡(luò)通過(guò)計(jì)算后得到值y1嘲碱、y2金砍、y3。這三個(gè)值的大小都應(yīng)該在0至1之間麦锯,且它們的和應(yīng)該為1恕稠。對(duì)于一個(gè)輸入來(lái)說(shuō),神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的結(jié)果就是y1扶欣、y2鹅巍、y3中最大值所對(duì)應(yīng)的類別。比如y1料祠、y2骆捧、y3的值分別為0.2、0.7髓绽、0.1敛苇,那么神經(jīng)網(wǎng)絡(luò)對(duì)這個(gè)輸入的預(yù)測(cè)結(jié)果就是類別“乙”。

3.2 softmax函數(shù)

通過(guò)上面的分析顺呕,回歸問(wèn)題我們只需將輸出層的輸入信號(hào)原封不動(dòng)地輸出即可枫攀,而分類問(wèn)題我們需要考慮兩個(gè)問(wèn)題:

(1)每個(gè)輸出信號(hào)值在0至1之間。

(2)所有輸出信號(hào)的和為1塘匣。

基于以上要求脓豪,分類問(wèn)題中,輸出層的激活函數(shù)常用softmax函數(shù):

exp(x)表示ex的指數(shù)函數(shù)忌卤,ak是輸出層中第k個(gè)輸入信號(hào)扫夜,exp(ak)表示ak的指數(shù)函數(shù)。分母表示輸出層共有n個(gè)輸出信號(hào)(神經(jīng)元),并計(jì)算所有輸出層中的輸入信號(hào)的指數(shù)和笤闯。yk是第k個(gè)神經(jīng)元的輸出堕阔。

仔細(xì)分析,該函數(shù)實(shí)際上等同于一個(gè)求占比的公式颗味,讀者可驗(yàn)證超陆,信號(hào)加權(quán)和經(jīng)softmax函數(shù)處理后完全滿足上面兩點(diǎn)要求∑致恚可以說(shuō)时呀,softmax函數(shù)很普通,只需完成指數(shù)運(yùn)算晶默、求和運(yùn)算谨娜、除法運(yùn)算。

顧名思義磺陡,“分類”就是判斷一個(gè)數(shù)據(jù)集所描述的類別趴梢,比如判斷圖像中的人是男還是女,這里的數(shù)據(jù)集是圖像數(shù)據(jù)币他,類別有男和女兩個(gè)類別坞靶。既然是判斷,那么它應(yīng)該是一個(gè)概率性的問(wèn)題蝴悉,打個(gè)比方彰阴,一個(gè)畫(huà)了濃妝艷抹的男扮女裝,僅看照片辫封,我們?yōu)榱朔乐拐f(shuō)話過(guò)于絕對(duì)硝枉,會(huì)以這樣的方式表達(dá):我覺(jué)得這照片有可能是男的;我覺(jué)得這照片很有可能是男的倦微。以概率描述:我覺(jué)得這張照片是男性的可能性為60%(0.6)妻味;我覺(jué)得這張照片是男性的可能性是90%(0.9)。

因此欣福,我們對(duì)分類問(wèn)題的判斷結(jié)果责球,實(shí)際上是來(lái)自于概率。我們用上圖來(lái)分析分類問(wèn)題:圖中的輸出信號(hào)有三個(gè)y1拓劝、y2雏逾、y3,我們可以理解為這是一個(gè)三類別分類郑临,對(duì)于輸入的數(shù)據(jù)集栖博,神經(jīng)網(wǎng)絡(luò)通過(guò)計(jì)算后得到值y1、y2厢洞、y3仇让。這三個(gè)值的大小都應(yīng)該在0至1之間典奉,且它們的和應(yīng)該為1。對(duì)于一個(gè)輸入來(lái)說(shuō)丧叽,神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的結(jié)果就是y1卫玖、y2、y3中最大值所對(duì)應(yīng)的類別踊淳。比如y1假瞬、y2、y3的值分別為0.2迂尝、0.7脱茉、0.1,那么神經(jīng)網(wǎng)絡(luò)對(duì)這個(gè)輸入的預(yù)測(cè)結(jié)果就是類別“乙”雹舀。

3.2 softmax函數(shù)

通過(guò)上面的分析芦劣,回歸問(wèn)題我們只需將輸出層的輸入信號(hào)原封不動(dòng)地輸出即可,而分類問(wèn)題我們需要考慮兩個(gè)問(wèn)題:

(1)每個(gè)輸出信號(hào)值在0至1之間说榆。

(2)所有輸出信號(hào)的和為1。

基于以上要求寸认,分類問(wèn)題中签财,輸出層的激活函數(shù)常用softmax函數(shù):

exp(x)表示ex的指數(shù)函數(shù),ak是輸出層中第k個(gè)輸入信號(hào)偏塞,exp(ak)表示ak的指數(shù)函數(shù)唱蒸。分母表示輸出層共有n個(gè)輸出信號(hào)(神經(jīng)元),并計(jì)算所有輸出層中的輸入信號(hào)的指數(shù)和灸叼。yk是第k個(gè)神經(jīng)元的輸出神汹。

仔細(xì)分析,該函數(shù)實(shí)際上等同于一個(gè)求占比的公式古今,讀者可驗(yàn)證屁魏,信號(hào)加權(quán)和經(jīng)softmax函數(shù)處理后完全滿足上面兩點(diǎn)要求∽叫龋可以說(shuō)氓拼,softmax函數(shù)很普通,只需完成指數(shù)運(yùn)算抵碟、求和運(yùn)算桃漾、除法運(yùn)算。

4 Python編程softmax函數(shù)

我們已經(jīng)知道了y1拟逮、y2撬统、y3都會(huì)有一個(gè)0至1之間的數(shù)值。而最后的分類結(jié)果則取決于這三個(gè)值中最大值所對(duì)應(yīng)的類別敦迄。借助numpy的廣播功能就能輕松實(shí)現(xiàn)這樣的操作恋追。在這之前凭迹,我們需要考慮一個(gè)數(shù)值過(guò)大(溢出)的問(wèn)題:softmax需要計(jì)算指數(shù)和,比如當(dāng)ak中的某個(gè)值為1000時(shí)几于,其指數(shù)將是無(wú)窮大蕊苗,由于計(jì)算機(jī)處理數(shù)值位數(shù)有限,因此有可能無(wú)法進(jìn)行指數(shù)或求和運(yùn)算沿彭。

為了解決這個(gè)潛在問(wèn)題朽砰,我們對(duì)softmax函數(shù)作一下處理:


image.png

公式表明在進(jìn)行softmax的指數(shù)運(yùn)算時(shí),加上某個(gè)常數(shù)不會(huì)改變運(yùn)算的結(jié)果喉刘。為了防止結(jié)果值溢出瞧柔,一般會(huì)使用輸入信號(hào)中的最大值的負(fù)數(shù)為這個(gè)常數(shù),Python編程代碼如下:


import numpy as np
def softmax(a):
    c=np.max(a) #求數(shù)組中的最大值
    exp=np.exp(a-c)  #指數(shù)運(yùn)算
    sum_exp=np.sum(exp) #指數(shù)求和
    y=exp/sum_exp        #softmax函數(shù)值
    return y
"""測(cè)試"""
a=np.array([0.4,5,3])
y=softmax(a)
print(y)  #輸出[0.00877593 0.87306727 0.11815681]

程序是不是很簡(jiǎn)單睦裳?是的造锅,在上一專題講過(guò)的三層神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的代碼中只需將恒等函數(shù)equal_function()替換為softmax()函數(shù)即可。softmax函數(shù)的輸出是0到1廉邑,且輸出值的總和為1哥蔚,因此把softmax函數(shù)的輸出概率解釋為“概率”。一般而言蛛蒙,神經(jīng)網(wǎng)絡(luò)只把輸出值最大的神經(jīng)元所對(duì)應(yīng)的類別作為識(shí)別結(jié)果糙箍。比如測(cè)試代碼中計(jì)算得到y(tǒng)的輸出最大值為y[1]=0.87,因此對(duì)于這個(gè)輸入數(shù)據(jù)而言,預(yù)測(cè)的分類為“乙類”牵祟,也可以說(shuō)有87%的概率認(rèn)為預(yù)測(cè)結(jié)果為“乙類”深夯。

總結(jié)一下,這個(gè)專題介紹了輸出層及其激活函數(shù)诺苹、回歸問(wèn)題咕晋、分類問(wèn)題、恒等函數(shù)和softmax函數(shù)收奔。在介紹這些知識(shí)點(diǎn)的過(guò)程中掌呜,我們始終以預(yù)測(cè)結(jié)果為背景展開(kāi)的,因此閱讀完這篇文章筹淫,讀者應(yīng)該對(duì)機(jī)器學(xué)習(xí)或者神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)的流程有一定了解站辉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市损姜,隨后出現(xiàn)的幾起案子饰剥,更是在濱河造成了極大的恐慌,老刑警劉巖摧阅,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汰蓉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡棒卷,警方通過(guò)查閱死者的電腦和手機(jī)顾孽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門祝钢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人若厚,你說(shuō)我怎么就攤上這事拦英。” “怎么了测秸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵疤估,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我霎冯,道長(zhǎng)铃拇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任沈撞,我火速辦了婚禮慷荔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缠俺。我一直安慰自己显晶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布壹士。 她就那樣靜靜地躺著吧碾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪墓卦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天户敬,我揣著相機(jī)與錄音落剪,去河邊找鬼。 笑死尿庐,一個(gè)胖子當(dāng)著我的面吹牛忠怖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抄瑟,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼凡泣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了皮假?” 一聲冷哼從身側(cè)響起鞋拟,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惹资,沒(méi)想到半個(gè)月后贺纲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡褪测,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年猴誊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了潦刃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡懈叹,死狀恐怖乖杠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情澄成,我是刑警寧澤胧洒,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站环揽,受9級(jí)特大地震影響略荡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歉胶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一汛兜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧通今,春花似錦粥谬、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至臼氨,卻和暖如春掺喻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背储矩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工感耙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人持隧。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓即硼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親屡拨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子只酥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容