消失了一周的小夕在玩什么啦?
啊,你們的小夕回來啦~
?
?
有沒有被嚇到( ̄? ̄)
0
小夕在玩什么
?
小夕,終于,在今天,把,各種deadline,完成了(′Д` )
?
首先,小夕要像大家深深的說一聲謝謝啦。好多天沒有打開訂閱號的后臺,今天一開,發現好多后臺留言,滿滿的鼓勵和正能量~好開心好開心o(≧v≦)o~但是今天為了省出時間寫文章,小夕就遲一點再回復啦~
?
當小夕在文章標題竟然用了“玩”這個字的時候,深深的感到了自己的虛偽和喪心病狂(′Д` )哪有這么玩命的玩的呀(╯°Д°)╯︵ /(.□ . \)
?
小夕想了想,“玩”的這幾件事中,好像英語的presentation沒什么好講的。。。項目的事情也不能透露啦,但是論文的事情當然可以跟大家分享啦(反正論文又不是我寫的,喵喵喵)
?
在開始之前,小夕溫馨提示,關注人工智能但是非專業從業者的同學請備好退燒藥,關注人工智能且是從業者的同學請備好小本本,不關注人工智能但是喜歡小夕的童鞋可以欣賞一下小夕簡(純)潔(屬)優(偷)美(懶)的PPT\(//?//)\不關注人工智能也不喜歡小夕的童鞋,小夕打你哦!
1
一篇神奇的論文
?
還記不記得小夕為大家繪制的人工智能大地圖呢?人工智能,有一個能力就是邏輯推理呀~當它記憶了足夠的知識后,如果只是死記硬背不懂思考的話,那么這個人工智能也太蠢了,很難有所成就,所以讓人工智能具備推理的能力是必須的~
?
下面呢,小夕就參考Socher等人在2013年的這篇論文,來給大家講解如何將深度學習用于知識的推理。(老師規定ppt必須做成英文的,小夕也沒辦法呀…)
?
小夕不太放心,還是再啰嗦一下啦。下面小夕要講的內容可能對于初學者而言理解難度有點大,不過看不懂的話留個印象也是好的呀~而且小夕以后會逐步為大家講解基礎知識,一步步的為看不懂的同學填上現有基礎到這篇論文的鴻溝~
2
準備好了喵!
??
小夕將從如下3個方面給大家介紹一下啦。
?
?
首先是小夕的任務:(結合PPT后面小夕的講解來看PPT哦)
?
?
本任務的數據集是一個知識庫,這個知識庫是由實體(entity)以及實體之間的關系(relation)組成的。比如圖中的“姚明”entity與“上海”entity之間的relation就是“born-in”。
?
其中每兩個實體以及它們之間的關系就構成一個樣本。而我們就是要根據這些樣本訓練出一個Neural Tensor Network模型(以下簡稱NTN啦),然后用這個模型去推理知識庫中的隱含的實體之間的relation。
?
?
因此,小夕的目標就是基于已有的知識庫來學習到一個叫NTN的神經網絡,然后將訓練好的模型用于做推理。
?
?
這里我們直觀的看一下數據集,一行就是一個樣本。第一列和第三列是樣本的兩個實體,中間是它們的關系。小夕統計了一下,一共有11種relation。
?
?
然后我們如何用NTN網絡來完成這個任務呢?
?
?
首先,我們將這11個relation看成11個分類任務,所以模型就是由11個子分類器組成的。然后每個子分類器就是負責判別輸入的兩個實體是不是符合它所負責的relation。那么問題來了,模型的輸入,也就是實體,該如何表示呢?
?
?
左邊三個藍框就是三個relation,我們直接看最下面藍框的第一個樣本,其中e1是Bengal tiger,e2是tiger。NTN模型中的entity就可以表示成entity內部的單詞的詞向量的均值。所以這個Bengal tiger實體就會取Bengal和tiger的均值啦。所以每個entity依然是詞向量大小的一個向量。
?
?
這里是NTN網絡的假設函數。可以看到,如果小夕將e1WRe2這一項去掉,這就是一個全聯接神經網絡啦(經典的淺層前饋神經網絡),這個全聯接神經網絡就是將兩個entity向量連接起來做為輸入。但是顯然這樣失去了entity之間的交互了呀,所以需要NTN網絡中的tensor層完成e1與e2的交互,這個實體間的交互信息對于這兩個實體的關系推理是至關重要的。
?
?
然后損失函數就很常見啦,這就是一個對比最大間隔損失函數再加上L2正則化。
?
?
下面就是小夕對該論文的復現(實驗)環節啦。
?
?
基本流程就是這樣子的:預處理-訓練NTN網絡-通過開發集調整超參數-分類(自動推理)和可視化。
?
?
開發環境是這樣子的。深度學習框架用的TensorFlow。由于這里11萬的訓練樣本也不少啦,雖然網絡不太深。所以需要用CUDA來進行GPU并行計算。
?
?
這個是模型的超參數,論文中給出啦,所以小夕就將其固定了。(這里各種超參數就取字面意思啦,其中,corrupt_size就是為訓練集的每個樣本產生出多少個負樣本,來進行損失函數中的對比最大間隔的計算。這里的slice_size就是tensor層的深度)
?
?
小夕的第一次試驗是慘不忍睹的。不過看小夕這偷懶的參數初始化方式也很容易想到,問題肯定出在初始化上。。。
?
?
小夕改良了一下初始化方法,果然提升了5個百分點。然而論文中是86%的準確率呀,差的這13個百分點,一般不會完全是AdaGrad的鍋,或者決策閾值的鍋。因此,小夕繼續改良初始化。
?
?
這次,小夕將tensor層的W參數改為Xavier方法了。果然~通過調整初始化,足足提升了12%的準確率。
?
?
這里就是Xavier方法的細節,其實就是說將W在上面這個區間里進行均勻分布的抽樣會很好的~這里的n(l)和n(l+1)就是W的輸入與輸出,所以這里就是entity向量的大小啦,也就是詞向量的大小。
?
?
第四次試驗,小夕通過開發集訓練得到了11個relation的最優決策閾值,又提升了4%的精度。雖然這個精度的提升會隨模型參數的變化而變化,而且規律性不強。
?
?
這里就是84.14%的實驗的訓練曲線與測試曲線啦,可以看出訓練曲線最彎的地方就是測試曲線準確度最高的地方~
?
?
這個是論文作者實現的對11個relation的準確率。
?
?
這個是小夕實現的。可以看到,除了第一個domain_topic小夕的準確率莫名其妙的比論文中高了好多,其他relation的準確率跟論文中差不太多的。
?
?
最后總結一下啦。反正準確率就是比論文低了2個百分點。而論文中明確說了Adagrad會在這里表現不佳,損失精度,論文中使用L-BFGS來優化的。然而tensorflow中沒有實現L-BFGS啊,小夕也懶得再去引入其他庫折騰了。所以tensorflow為這2%背鍋啦。
聽說,打賞功能受限了?那小狐貍就要復出啦!
總結
以上是生活随笔為你收集整理的消失了一周的小夕在玩什么啦?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud源码分析(二)R
- 下一篇: ESLint 在中大型团队的应用实践