1. 程式人生 > >關於cs231n中作業1的SVM和Softmax線性分類器實現的感悟

關於cs231n中作業1的SVM和Softmax線性分類器實現的感悟

1、對於複雜的含有多Wi引數的函式L求導問題,首先是分別對單個引數求偏導數,然後放置到此引數對應的矩陣的位置。在求偏導數的矩陣表示時,一般要經歷如下兩個步驟:

數字計算:分解步驟,同時計算L和導數:一般情況下,L的計算分很多步,而且每一步也十分複雜,可能涉及到數值判定等。但是隻要你將這些步驟分解成很多個小步驟(使用迴圈,只要你能表達清楚,電腦不怕計算多),在每一個小步驟裡面同時計算這一小步驟中Li的值和L的導數。最後將所有的Li彙總起來組成L,所有的導數彙總起來組成L對這個分引數的分導數。

矩陣計算:對於比較複雜的情況,想直接寫出導數dw的表示式有點困難。一般情況下,建議將複雜問題先簡單化,對於簡單的問題,我們可以先數字計算得到導數矩陣,然後得出這個導數矩陣可以怎麼通過矩陣計算得到。最後類比至複雜矩陣

就行。

2、跟KNN分類器不同,線性分類器對初始資料進行了均一化的預處理。

3、f = w.dot(x)+b,可將x增加一個全是1的特徵,問題即可轉化為f=w'.dot(x'),我們就只需要考慮w。

4、大數之間相除會導致資料穩定性問題,技巧為 logC=maxjfj

5、SGD:隨機梯度下降     GD:梯度下降

SGD其實就是每次準備挪動一步時,都隨機的從訓練資料中抽取部分資料來計算梯度,並以得到的梯度來決定挪動的方向,相比GD每次都要計算所有的訓練資料,省時省力,並且最終也可以走到最低點。還有一個好處就是SGD由於每次輸入的訓練資料都不同弄,因此可以很好的避免鞍點(區域性導數為0)。

6、實際應用中,兩種計算損失函式的方法的效果都差不多。