lstm的目標函式是:
其中,
但是計算這個概率的分母涉及的計算量太大了,需要在整個字典上計算,所以我們有兩種方法去改進這個目標函式。
hierarchical softmax:(原因:減少時間複雜度)
層級softmax是在輸出層構造乙個哈夫曼樹,詞頻為權重,葉子節點為標籤,根節點為上一層的輸出。對於每個葉子節點,從根節點有唯一一條路徑到葉子節點。葉子節點沒有對應的向量,而非葉子節點有對應的向量,也就是說葉子節點對應的向量需要優化,從下面的公式中可以看出來這一點。
在上圖上可以看到,從根節點到w2要經過三個節點,分別是n(w2,2),n(w2,3),n(w2,4)。
具體的公式可以參加該部落格:
該方法的時間複雜度為log(v),v為字典的大小
負取樣:
(原因:
1.加速了模型計算
2.保證了模型訓練的效果,其一模型每次只需要更新取樣的詞的權重,不用更新所有的權重,那樣會很慢,其二中心詞其實只跟它周圍的詞有關係,位置離著很遠的詞沒有關係,也沒必要同時訓練更新)
負取樣請看這篇部落格
我自己覺得負取樣跟隨機梯度下降思想有點類似,都是選擇樣本,然後更新部分引數。負取樣為什麼更新部分引數呢?因為計算代價函式的時候只跟選擇樣本的引數有關,所以計算出來其他引數都為0,所以只更新了選擇樣本的引數。
正邏輯和負邏輯
一 正邏輯與負邏輯的概念 前面討論各種邏輯閘電路的邏輯功能時,約定用高電平表示邏輯1 低電平表示邏輯0。事實上,既可以規定用高電平表示邏輯1 低電平表示邏輯0,也可以規定用高電平表示邏輯0,低電平表示邏輯1。這就引出了正邏輯和負邏輯的概念。正邏輯 用高電平表示邏輯1,低電平表示邏輯0。負邏輯 用高電...
安裝docker和jupyter採坑歷程
背景 發現自己電腦配置不夠,在進行模型引數調優時基本進行不下去了。計畫使用雲伺服器,由於自己只是用來跑模型。所以按需計費最為合適。考慮到每次使用都需要部署開發環境,索性用docker實現。這樣每次部署可以省去很多軟體安裝和部署工作。留下過程和採坑經歷。供大家借鑑。個人系統 ubuntu16.04 1...
flex和position相容採坑筆記
今天有空寫了乙個自己主頁的 瀏覽器相容,有乙個以前的問題也是很常見的問題,既然遇見了,索性就記錄下來。直接看問題吧 前提 適合子元素需要水平居中,但垂直方向需要進行position absolute,如果是進行position relative或者其他,在ie或chrome都是一樣的,都要以子元素w...