分類學(xué)習(xí)
基于TensorFlow,實(shí)現(xiàn)softmax Regression手寫體分類
首先先上完整的代碼,過后再具體的解析:

softmax Regression可以算作沒有隱含層的最淺的神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)的過程主要分為四個(gè)階段:
1. 定義算法公式,即神經(jīng)網(wǎng)絡(luò)前向傳播的計(jì)算;
2. 定義損失函數(shù),選定優(yōu)化器,并且制定優(yōu)化器優(yōu)化損失函數(shù);
3. 迭代地對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練;
4. 在測試集或者驗(yàn)證集上對(duì)準(zhǔn)確率進(jìn)行計(jì)算。
具體一些介紹和定義以及代碼中重要語法看:http://www.tensorfly.cn/tfdoc/tutorials/mnist_beginners.html
1. 數(shù)據(jù)樣本的處理:
首先,對(duì)于TensorFlow的輸入樣本進(jìn)行了處理,由于上述樣本是28*28的像素點(diǎn),所以每個(gè)樣本有784維特征(softmax regression將二維的結(jié)構(gòu)轉(zhuǎn)化為一維的結(jié)構(gòu),沒有考慮樣本的空間信息,對(duì)于以后的卷積神經(jīng)網(wǎng)絡(luò)等會(huì)充分利用圖像的空間信息),所以對(duì)于訓(xùn)練數(shù)據(jù)的特征是55000*784的tensor;對(duì)于標(biāo)簽數(shù)據(jù)采用了one-hot編碼(也成為一位有效位編碼,其方法是使用N位狀態(tài)寄存器來對(duì)N個(gè)狀態(tài)進(jìn)行編碼,每個(gè)狀態(tài)都有其獨(dú)立的寄存器位,并且任何時(shí)候只有一位有效),所以每個(gè)樣本的label是一個(gè)10維的向量,只有一個(gè)值為1,其余均為0。比如數(shù)字0,可以使用[1,0,0,0,0,0,0,0,0,0]表示;數(shù)字5,可以使用[0,0,0,0,0,1,0,0,0,0]表示。所以對(duì)于整個(gè)訓(xùn)練集的標(biāo)簽為55000*10的tensor表示。
2. 使用softmax regression實(shí)現(xiàn)手寫體數(shù)字識(shí)別分類:
softmax regression會(huì)對(duì)每一種類別估算一個(gè)概率,然后選擇概率值最大的類別最為最終的類別,比如預(yù)測為數(shù)字1的概率為20%,預(yù)測為數(shù)字5的概率為70%,則最終的類別為數(shù)字5。它的工作原理很簡單,將可以判定為某類的特征相加,然后將這些特征轉(zhuǎn)化為判定是這類的概率。它的數(shù)學(xué)表達(dá)式可以理解為:
softmax回歸(softmax regression)分兩步:
(1)計(jì)算每一個(gè)類別的特征:?

(2)對(duì)所有特征計(jì)算softmax,得到預(yù)測為每一類的概率:

這個(gè)過程可以理解為先對(duì)每個(gè)類別的特征求exp函數(shù),然后對(duì)它們進(jìn)行標(biāo)準(zhǔn)化,使得和為1,特征的值越大的類別,最后輸出的概率也越大。
對(duì)于softmax回歸模型可以用下面的圖解釋
(1)對(duì)于輸入的xs加權(quán)求和,再分別加上一個(gè)偏置量,最后再輸入到softmax函數(shù)中:

(2)我們也可以用向量表示這個(gè)計(jì)算過程:用矩陣乘法和向量相加。這有助于提高計(jì)算效率。(也是一種更有效的思考方式):

上述的矩陣運(yùn)算表達(dá)式可以簡寫為:?

?