[NLP] 秒懂詞向量Word2vec的本質(zhì) 穆文
4 個(gè)月前
轉(zhuǎn)自我的公眾號(hào): 『數(shù)據(jù)挖掘機(jī)養(yǎng)成記』
1. 引子 大家好 我叫數(shù)據(jù)挖掘機(jī) 皇家布魯斯特大學(xué)肄業(yè) 我喝最烈的果粒橙,鉆最深的牛角尖 ——執(zhí)著如我
今天我要揭開Word2vec 的神秘面紗 直窺其本質(zhì)
相信我,這絕對是你看到的 最淺白易懂的 Word2vec 中文總結(jié)
(蛤?你問我為啥有這個(gè)底氣? 且看下面,我的踩坑血淚史。。。)
2. Word2vec參考資料總結(jié) (以下都是我踩過的坑,建議先跳過本節(jié),閱讀正文部分,讀完全文回頭再來看 )
先大概說下我深挖 word2vec 的過程:先是按照慣例,看了 Mikolov 關(guān)于 Word2vec 的兩篇原始論文,然而發(fā)現(xiàn)看完依然是一頭霧水,似懂非懂,主要原因是這兩篇文章省略了太多理論背景和推導(dǎo)細(xì)節(jié);然后翻出 Bengio 03年那篇JMLR和 Ronan 11年那篇JMLR,看完對語言模型、用CNN處理NLP任務(wù)有所了解,但依然無法完全吃透 word2vec;這時(shí)候我開始大量閱讀中英文博客,其中 北漂浪子 的一篇閱讀量很多的博客吸引了我的注意,里面非常系統(tǒng)地講解了 Word2vec 的前因后果,最難得的是深入剖析了代碼的實(shí)現(xiàn)細(xì)節(jié),看完之后細(xì)節(jié)方面了解了很多,不過還是覺得有些迷霧;終于,我在 quora 上看到有人推薦 Xin Rong 的那篇英文paper,看完之后只覺醍醐灌頂,酣暢淋漓,相見恨晚,成為我首推的 Word2vec 參考資料。下面我將詳細(xì)列出我閱讀過的所有 Word2vec 相關(guān)的參考資料,并給出評價(jià)
Mikolov 兩篇原論文: 『Distributed Representations of Sentences and Documents』 在前人基礎(chǔ)上提出更精簡的語言模型(language model)框架并用于生成詞向量,這個(gè)框架就是 Word2vec 『Efficient estimation of word representations in vector space』 專門講訓(xùn)練 Word2vec 中的兩個(gè)trick:hierarchical softmax 和 negative sampling 優(yōu)點(diǎn):Word2vec 開山之作,兩篇論文均值得一讀 缺點(diǎn):只見樹木,不見森林和樹葉,讀完不得要義。這里『森林』指 word2vec 模型的理論基礎(chǔ)——即 以神經(jīng)網(wǎng)絡(luò)形式表示的語言模型,『樹葉』指具體的神經(jīng)網(wǎng)絡(luò)形式、理論推導(dǎo)、hierarchical softmax 的實(shí)現(xiàn)細(xì)節(jié)等等 北漂浪子的博客:『深度學(xué)習(xí)word2vec 筆記之基礎(chǔ)篇』 優(yōu)點(diǎn):非常系統(tǒng),結(jié)合源碼剖析,語言平實(shí)易懂 缺點(diǎn):太啰嗦,有點(diǎn)抓不住精髓 Yoav Goldberg 的論文:『word2vec Explained- Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method』 優(yōu)點(diǎn):對 negative-sampling 的公式推導(dǎo)非常完備 缺點(diǎn):不夠全面,而且都是公式,沒有圖示,略顯干枯 Xin Rong 的論文:『word2vec Parameter Learning Explained』: !重點(diǎn)推薦! 理論完備由淺入深非常好懂,且直擊要害,既有 high-level 的 intuition 的解釋,也有細(xì)節(jié)的推導(dǎo)過程 一定要看這篇paper!一定要看這篇paper!一定要看這篇paper! 來斯惟的博士論文『基于神經(jīng)網(wǎng)絡(luò)的詞和文檔語義向量表示方法研究』以及他的博客(網(wǎng)名:licstar) 可以作為更深入全面的擴(kuò)展閱讀,這里不僅僅有 word2vec,而是把詞嵌入的所有主流方法通通梳理了一遍 幾位大牛在知乎的回答:『word2vec 相比之前的 Word Embedding 方法好在什么地方?』 劉知遠(yuǎn)、邱錫鵬、李韶華等知名學(xué)者從不同角度發(fā)表對 Word2vec 的看法,非常值得一看 Sebastian 的博客:『On word embeddings - Part 2: Approximating the Softmax』 詳細(xì)講解了 softmax 的近似方法,Word2vec 的 hierarchical softmax 只是其中一種 3. 正文 你會(huì)在本文看到:
提綱挈領(lǐng)地講解 word2vec 的理論精髓 學(xué)會(huì)用gensim訓(xùn)練詞向量,并尋找相似詞 你不會(huì)在本文看到
神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程的推導(dǎo) hierarchical softmax/negative sampling 等 trick 的理論和實(shí)現(xiàn)細(xì)節(jié) 3.1. 什么是 Word2vec? 在聊 Word2vec 之前,先聊聊 NLP (自然語言處理)。NLP 里面,最細(xì)粒度的是 詞語,詞語組成句子,句子再組成段落、篇章、文檔。所以處理 NLP 的問題,首先就要拿詞語開刀。
舉個(gè)簡單例子,判斷一個(gè)詞的詞性,是動(dòng)詞還是名詞。用機(jī)器學(xué)習(xí)的思路,我們有一系列樣本(x,y),這里 x 是詞語,y 是它們的詞性,我們要構(gòu)建 f(x)->y 的映射,但這里的數(shù)學(xué)模型 f(比如神經(jīng)網(wǎng)絡(luò)、SVM)只接受數(shù)值型輸入,而 NLP 里的詞語,是人類的抽象總結(jié),是符號(hào)形式的(比如中文、英文、拉丁文等等),所以需要把他們轉(zhuǎn)換成數(shù)值形式,或者說——嵌入到一個(gè)數(shù)學(xué)空間里,這種嵌入方式,就叫詞嵌入(word embedding),而 Word2vec,就是詞嵌入( word embedding) 的一種
我在前作『都是套路: 從上帝視角看透時(shí)間序列和數(shù)據(jù)挖掘』提到,大部分的有監(jiān)督機(jī)器學(xué)習(xí)模型,都可以歸結(jié)為:
f(x)->y
在 NLP 中,把 x 看做一個(gè)句子里的一個(gè)詞語,y 是這個(gè)詞語的上下文詞語,那么這里的 f,便是 NLP 中經(jīng)常出現(xiàn)的『語言模型』(language model),這個(gè)模型的目的,就是判斷 (x,y) 這個(gè)樣本,是否符合自然語言的法則,更通俗點(diǎn)說就是:詞語x和詞語y放在一起,是不是人話。
Word2vec 正是來源于這個(gè)思想,但它的最終目的,不是要把 f 訓(xùn)練得多么完美,而是只關(guān)心模型訓(xùn)練完后的副產(chǎn)物——模型參數(shù)(這里特指神經(jīng)網(wǎng)絡(luò)的權(quán)重),并將這些參數(shù),作為輸入 x 的某種向量化的表示,這個(gè)向量便叫做——詞向量(這里看不懂沒關(guān)系,下一節(jié)我們詳細(xì)剖析)。
我們來看個(gè)例子,如何用 Word2vec 尋找相似詞:
對于一句話:『她們 夸 吳彥祖 帥 到 沒朋友』,如果輸入 x 是『吳彥祖』,那么 y 可以是『她們』、『夸』、『帥』、『沒朋友』這些詞 現(xiàn)有另一句話:『她們 夸 我 帥 到 沒朋友』,如果輸入 x 是『我』,那么不難發(fā)現(xiàn),這里的上下文 y 跟上面一句話一樣 從而 f(吳彥祖) = f(我) = y,所以大數(shù)據(jù)告訴我們:我 = 吳彥祖(完美的結(jié)論) 3.2. Skip-gram 和 CBOW 模型 上面我們提到了語言模型
如果是用一個(gè)詞語作為輸入,來預(yù)測它周圍的上下文,那這個(gè)模型叫做『Skip-gram 模型』 而如果是拿一個(gè)詞語的上下文作為輸入,來預(yù)測這個(gè)詞語本身,則是 『CBOW 模型』 3.2.1 Skip-gram 和 CBOW 的簡單情形 我們先來看個(gè)最簡單的例子。上面說到, y 是 x 的上下文,所以 y 只取上下文里一個(gè)詞語的時(shí)候,語言模型就變成:
用當(dāng)前詞 x 預(yù)測它的下一個(gè)詞 y
但如上面所說,一般的數(shù)學(xué)模型只接受數(shù)值型輸入,這里的 x 該怎么表示呢? 顯然不能用 Word2vec,因?yàn)檫@是我們訓(xùn)練完模型的產(chǎn)物,現(xiàn)在我們想要的是 x 的一個(gè)原始輸入形式。
答案是:one-hot encoder
所謂 one-hot encoder,其思想跟特征工程里處理類別變量的 one-hot 一樣(參考我的前作『數(shù)據(jù)挖掘比賽通用框架』、『深挖One-hot和Dummy背后的玄機(jī)』)。本質(zhì)上是用一個(gè)只含一個(gè) 1、其他都是 0 的向量來唯一表示詞語。
我舉個(gè)例子,假設(shè)全世界所有的詞語總共有 V 個(gè),這 V 個(gè)詞語有自己的先后順序,假設(shè)『吳彥祖』這個(gè)詞是第1個(gè)詞,『我』這個(gè)單詞是第2個(gè)詞,那么『吳彥祖』就可以表示為一個(gè) V 維全零向量、把第1個(gè)位置的0變成1,而『我』同樣表示為 V 維全零向量、把第2個(gè)位置的0變成1。這樣,每個(gè)詞語都可以找到屬于自己的唯一表示。
OK,那我們接下來就可以看看 Skip-gram 的網(wǎng)絡(luò)結(jié)構(gòu)了,x 就是上面提到的 one-hot encoder 形式的輸入,y 是在這 V 個(gè)詞上輸出的概率,我們希望跟真實(shí)的 y 的 one-hot encoder 一樣。
首先說明一點(diǎn):隱層的激活函數(shù)其實(shí)是線性的 ,相當(dāng)于沒做任何處理(這也是 Word2vec 簡化之前語言模型的獨(dú)到之處),我們要訓(xùn)練這個(gè)神經(jīng)網(wǎng)絡(luò),用反向傳播算法 ,本質(zhì)上是鏈?zhǔn)角髮?dǎo),在此不展開說明了,
當(dāng)模型訓(xùn)練完后,最后得到的其實(shí)是神經(jīng)網(wǎng)絡(luò)的權(quán)重 ,比如現(xiàn)在輸入一個(gè) x 的 one-hot encoder: [1,0,0,…,0],對應(yīng)剛說的那個(gè)詞語『吳彥祖』,則在輸入層到隱含層的權(quán)重里,只有對應(yīng) 1 這個(gè)位置的權(quán)重被激活,這些權(quán)重的個(gè)數(shù),跟隱含層節(jié)點(diǎn)數(shù)是一致的,從而這些權(quán)重組成一個(gè)向量 vx 來表示x,而因?yàn)槊總€(gè)詞語的 one-hot encoder 里面 1 的位置是不同的,所以,這個(gè)向量 vx 就可以用來唯一表示 x。
注意:上面這段話說的就是 Word2vec 的精髓!!
此外,我們剛說了,輸出 y 也是用 V 個(gè)節(jié)點(diǎn)表示的,對應(yīng)V個(gè)詞語,所以其實(shí),我們把輸出節(jié)點(diǎn)置成 [1,0,0,…,0],它也能表示『吳彥祖』這個(gè)單詞,但是激活的是隱含層到輸出層的權(quán)重,這些權(quán)重的個(gè)數(shù),跟隱含層一樣,也可以組成一個(gè)向量 vy,跟上面提到的 vx 維度一樣,并且可以看做是詞語『吳彥祖』的另一種詞向量 。而這兩種詞向量 vx 和 vy,正是 Mikolov 在論文里所提到的,『輸入向量』和『輸出向量』,一般我們用『輸入向量』。
需要提到一點(diǎn)的是,這個(gè)詞向量的維度(與隱含層節(jié)點(diǎn)數(shù)一致)一般情況下要遠(yuǎn)遠(yuǎn)小于詞語總數(shù) V 的大小,所以 Word2vec 本質(zhì)上是一種降維 操作——把詞語從 one-hot encoder 形式的表示降維到 Word2vec 形式的表示。
3.2.2. Skip-gram 更一般的情形 上面討論的是最簡單情形,即 y 只有一個(gè)詞,當(dāng) y 有多個(gè)詞時(shí),網(wǎng)絡(luò)結(jié)構(gòu)如下:
可以看成是 單個(gè)x->單個(gè)y 模型的并聯(lián),cost function 是單個(gè) cost function 的累加(取log之后)
如果你想深入探究這些模型是如何并聯(lián)、 cost function 的形式怎樣,不妨仔細(xì)閱讀參考資料4. 在此我們不展開。
3.2.3 CBOW 更一般的情形 跟 Skip-gram 相似,只不過:
Skip-gram 是預(yù)測一個(gè)詞的上下文,而 CBOW 是用上下文預(yù)測這個(gè)詞
網(wǎng)絡(luò)結(jié)構(gòu)如下
更 Skip-gram 的模型并聯(lián)不同,這里是輸入變成了多個(gè)單詞,所以要對輸入處理下(一般是求和然后平均),輸出的 cost function 不變,在此依然不展開,建議你閱讀參考資料4.
3.3. Word2vec 的訓(xùn)練trick 相信很多初次踩坑的同學(xué),會(huì)跟我一樣陷入 Mikolov 那篇論文(參考資料1.)里提到的 hierarchical softmax 和 negative sampling 里不能自拔,但其實(shí),它們并不是 Word2vec 的精髓,只是它的訓(xùn)練技巧,但也不是它獨(dú)有的訓(xùn)練技巧。 Hierarchical softmax 只是 softmax 的一種近似形式(詳見參考資料7.),而 negative sampling 也是從其他方法借鑒而來。
為什么要用訓(xùn)練技巧呢? 如我們剛提到的,Word2vec 本質(zhì)上是一個(gè)語言模型,它的輸出節(jié)點(diǎn)數(shù)是 V 個(gè),對應(yīng)了 V 個(gè)詞語,本質(zhì)上是一個(gè)多分類問題,但實(shí)際當(dāng)中,詞語的個(gè)數(shù)非常非常多,會(huì)給計(jì)算造成很大困難,所以需要用技巧來加速訓(xùn)練。
這里我總結(jié)了一下這兩個(gè) trick 的本質(zhì),有助于大家更好地理解,在此也不做過多展開,有興趣的同學(xué)可以深入閱讀參考資料1.~7.
hierarchical softmax 本質(zhì)是把 N 分類問題變成 log(N)次二分類 negative sampling 本質(zhì)是預(yù)測總體類別的一個(gè)子集 3.4. 擴(kuò)展 很多時(shí)候,當(dāng)我們面對林林總總的模型、方法時(shí),我們總希望總結(jié)出一些本質(zhì)的、共性的東西,以構(gòu)建我們的知識(shí)體系,比如我在前作『分類和回歸的本質(zhì)』里,原創(chuàng)性地梳理了分類模型和回歸模型的本質(zhì)聯(lián)系,比如在詞嵌入領(lǐng)域,除了 Word2vec之外,還有基于共現(xiàn)矩陣分解的 GloVe 等等詞嵌入方法。
深入進(jìn)去我們會(huì)發(fā)現(xiàn),神經(jīng)網(wǎng)絡(luò)形式表示的模型(如 Word2vec),跟共現(xiàn)矩陣分解模型(如 GloVe),有理論上的相通性,這里我推薦大家閱讀參考資料5. ——來斯惟博士在它的博士論文附錄部分,證明了 Skip-gram 模型和 GloVe 的 cost fucntion 本質(zhì)上是一樣的。是不是一個(gè)很有意思的結(jié)論? 所以在實(shí)際應(yīng)用當(dāng)中,這兩者的差別并不算很大,尤其在很多 high-level 的 NLP 任務(wù)(如句子表示、命名體識(shí)別、文檔表示)當(dāng)中,經(jīng)常把詞向量作為原始輸入,而到了 high-level 層面,差別就更小了。
鑒于詞語是 NLP 里最細(xì)粒度的表達(dá),所以詞向量的應(yīng)用很廣泛,既可以執(zhí)行詞語層面的任務(wù),也可以作為很多模型的輸入,執(zhí)行 high-level 如句子、文檔層面的任務(wù),包括但不限于:
計(jì)算相似度 作為 SVM/LSTM 等模型的輸入 句子表示 文檔表示 4. 實(shí)戰(zhàn) 上面講了這么多理論細(xì)節(jié),其實(shí)在真正應(yīng)用的時(shí)候,只需要調(diào)用 Gensim (一個(gè) Python 第三方庫)的接口就可以。但對理論的探究仍然有必要,你能更好地知道參數(shù)的意義、模型結(jié)果受哪些因素影響,以及舉一反三地應(yīng)用到其他問題當(dāng)中,甚至更改源碼以實(shí)現(xiàn)自己定制化的需求。
這里我們將使用 Gensim 和 NLTK 這兩個(gè)庫,來完成對生物領(lǐng)域的相似詞挖掘,將涉及:
解讀 Gensim 里 Word2vec 模型的參數(shù)含義 基于相應(yīng)語料訓(xùn)練 Word2vec 模型,并評估結(jié)果 對模型結(jié)果調(diào)優(yōu) 語料我已經(jīng)放出來了,可以關(guān)注我的公眾號(hào)『數(shù)據(jù)挖掘機(jī)養(yǎng)成記』,并回復(fù) Sherlocked 獲取語料,包含5000行生物醫(yī)學(xué)領(lǐng)域相關(guān)文獻(xiàn)的摘要(英文)
我將在下一篇文章里詳細(xì)講解實(shí)戰(zhàn)步驟,敬請關(guān)注本人公眾號(hào)。友情建議:請先自行安裝 Gensim 和 NLTK 兩個(gè)庫,并建議使用 jupyter notebook 作為代碼運(yùn)行環(huán)境
歡迎各路大神猛烈拍磚,共同交流
====評論區(qū)答疑節(jié)選====
Q1. gensim 和 google的 word2vec 里面并沒有用到onehot encoder,而是初始化的時(shí)候直接為每個(gè)詞隨機(jī)生成一個(gè)N維的向量,并且把這個(gè)N維向量作為模型參數(shù)學(xué)習(xí);所以word2vec結(jié)構(gòu)中不存在文章圖中顯示的將V維映射到N維的隱藏層。
A1. 其實(shí),本質(zhì)是一樣的,加上 one-hot encoder 層,是為了方便理解,因?yàn)檫@里的 N 維隨機(jī)向量,就可以理解為是 V 維 one-hot encoder 輸入層到 N 維隱層的權(quán)重,或者說隱層的輸出(因?yàn)殡[層是線性的)。每個(gè) one-hot encoder 里值是 1 的那個(gè)位置,對應(yīng)的 V 個(gè)權(quán)重被激活,其實(shí)就是『從一個(gè)V*N的隨機(jī)詞向量矩陣?yán)?#xff0c;抽取某一行』。學(xué)習(xí) N 維向量的過程,也就是優(yōu)化 one-hot encoder 層到隱含層權(quán)重的過程
Q2. hierarchical softmax 獲取詞向量的方式和原先的其實(shí)基本完全不一樣,我初始化輸入的也不是一個(gè)onehot,同時(shí)我是直接通過優(yōu)化輸入向量的形式來獲取詞向量?如果用了hierarchical 結(jié)構(gòu)我應(yīng)該就沒有輸出向量了吧?
A2. 初始化輸入依然可以理解為是 one-hot,同上面的回答;確實(shí)是只能優(yōu)化輸入向量,沒有輸出向量了。具體原因,我們可以梳理一下不用 hierarchical (即原始的 softmax) 的情形:
隱含層輸出一個(gè) N 維向量 x, 每個(gè)x 被一個(gè) N 維權(quán)重 w 連接到輸出節(jié)點(diǎn)上,有 V 個(gè)這樣的輸出節(jié)點(diǎn),就有 V 個(gè)權(quán)重 w,再套用 softmax 的公式,變成 V 分類問題。這里的類別就是詞表里的 V 個(gè)詞,所以一個(gè)詞就對應(yīng)了一個(gè)權(quán)重 w,從而可以用 w 作為該詞的詞向量,即文中的輸出詞向量。
PS. 這里的 softmax 其實(shí)多了一個(gè)『自由度』,因?yàn)?V 分類只需要 V-1 個(gè)權(quán)重即可
我們再看看 hierarchical softmax 的情形:
隱含層輸出一個(gè) N 維向量 x, 但這里要預(yù)測的目標(biāo)輸出詞,不再是用 one-hot 形式表示,而是用 huffman tree 的編碼,所以跟上面 V 個(gè)權(quán)重同時(shí)存在的原始 softmax 不一樣, 這里 x 可以理解為先接一個(gè)輸出節(jié)點(diǎn),即只有一個(gè)權(quán)重 w1 ,輸出節(jié)點(diǎn)輸出 1/1+exp(-w*x),變成一個(gè)二分類的 LR,輸出一個(gè)概率值 P1,然后根據(jù)目標(biāo)詞的 huffman tree 編碼,將 x 再輸出到下一個(gè) LR,對應(yīng)權(quán)重 w2,輸出 P2,總共遇到的 LR 個(gè)數(shù)(或者說權(quán)重個(gè)數(shù))跟 huffman tree 編碼長度一致,大概有 log(V) 個(gè),最后將這 log(V) 個(gè) P 相乘,得到屬于目標(biāo)詞的概率。但注意因?yàn)橹挥?log(V) 個(gè)權(quán)重 w 了,所以跟 V 個(gè)詞并不是一一對應(yīng)關(guān)系,就不能用 w 表征某個(gè)詞,從而失去了詞向量的意義
PS. 但我個(gè)人理解,這 log(V) 個(gè)權(quán)重的組合,可以表示某一個(gè)詞。因?yàn)?huffman tree 構(gòu)建的時(shí)候,可以理解成是一個(gè)不斷『二分』的過程,不斷二分到只剩一個(gè)詞為止。而每一次二分,都有一個(gè) LR 權(quán)重,這個(gè)權(quán)重可以表征該類詞,所以這些權(quán)重拼接在一起,就表示了『二分』這個(gè)過程,以及最后分到的這個(gè)詞的『輸出詞向量』。
我舉個(gè)例子:
假設(shè)現(xiàn)在總共有 (A,B,C)三個(gè)詞,huffman tree 這么構(gòu)建:
第一次二分: (A,B), (C)
假如我們用的 LR 是二分類 softmax 的情形(比常見 LR 多了一個(gè)自由度),這樣 LR 就有倆權(quán)重,權(quán)重 w1_1 是屬于 (A,B) 這一類的,w1_2 是屬于 (C) 的, 而 C 已經(jīng)到最后一個(gè)了,所以 C 可以表示為 w1_2
第二次二分: (A), (B)
假設(shè)權(quán)重分別對應(yīng) w2_1 和 w2_2,那么 A 就可以表示為 [w1_1, w2_1], B 可以表示為 [w1_1, w2_2]
這樣, A,B,C 每個(gè)詞都有了一個(gè)唯一表示的詞向量(此時(shí)他們長度不一樣,不過可以用 padding 的思路,即在最后補(bǔ)0)
當(dāng)然了,一般沒人這么干。。。開個(gè)腦洞而已
Q3. 待續(xù)
「歡迎打賞支持24K純原創(chuàng)」 贊賞 還沒有人贊賞,快來當(dāng)?shù)谝粋€(gè)贊賞的人吧!
自然語言處理 機(jī)器學(xué)習(xí) 人工智能 169 收藏 分享 舉報(bào)
文章被以下專欄收錄 數(shù)據(jù)挖掘機(jī)養(yǎng)成記 歡迎來到我的 Mind Palace
進(jìn)入專欄 37 條評論 寫下你的評論...
取消 評論 能不能專業(yè)點(diǎn),還用 jupyter notebook 4 個(gè)月前 贊 舉報(bào) 哈哈 看的思路一樣,先兩篇論文,再xinrong的,再萊斯維大神,再代碼,再實(shí)踐。還有一個(gè)非常好的中文資源,Word2vec數(shù)學(xué)原理詳解,與xinrong從倆角度出發(fā)講解的,不過總體思路差不多 4 個(gè)月前 贊 舉報(bào) 查看對話
多謝補(bǔ)充,我想起來我本地還有這個(gè)的 pdf 版本,確實(shí)講的很仔細(xì)
4 個(gè)月前 贊 舉報(bào) 老師教我們的也是用Xin RONG的,滿是懷念 4 個(gè)月前 贊 舉報(bào) 查看對話
那你用什么了
4 個(gè)月前 贊 舉報(bào) 查看對話 說的沒錯(cuò),jupyter notebook 更適合做交互式的演示,寫工程性項(xiàng)目的話,還是推薦 IDE,比如 Pycharm,或者用 sublime+anaconda插件 4 個(gè)月前 贊 舉報(bào) 查看對話 不能忍,這么歧視 Jupyter Notebook?不用他就是專業(yè)了? 4 個(gè)月前 贊 舉報(bào) 秒? 4 個(gè)月前 贊 舉報(bào) 專業(yè)請教下,這個(gè)w2v和“輸入一句話x,輸出一句話y”之間跨過了哪些知識(shí)?給個(gè)鏈接,謝謝 4 個(gè)月前 贊 舉報(bào) 查看對話
你是指,我文中提到的,language model?
4 個(gè)月前 贊 舉報(bào) 12 3 4 下一頁
推薦閱讀 意識(shí)流——寫在第n次卸載王者榮耀之后 前言引子元?jiǎng)恿π∽h『折騰』心流自控接納自己遠(yuǎn)離誘惑觀察者角度正確的積累后記Bonus前言最…查看全文
穆文 1 個(gè)月前 發(fā)表于 數(shù)據(jù)挖掘機(jī)養(yǎng)成記 如何應(yīng)對境外敵對勢力?——來自立陶宛克格勃的證據(jù) 情報(bào)和安全部門,神秘而可怖。內(nèi)心再好奇,恐怕也不想親身進(jìn)去走一遭。當(dāng)代的情況自然是無法…查看全文
Manolo 8 天前 編輯精選 炎炎夏日,只要會(huì)煮米飯,也能迅速端出一桌菜! 本文僅限知乎與「艾格吃飽了」。夏天太熱不想開火,有油鍋恐懼癥,有沒有辦法端出一桌菜?其…查看全文
沒事干研究院 13 天前 編輯精選 那些吉他琴橋你不知道的事 原聲吉他看似結(jié)構(gòu)十分簡單,所有的部件也沒多少,為什么會(huì)有如此大的聲音差異,到底這些不同…查看全文
大洪 22 天前 編輯精選
{"debug":false,"apiRoot":"","paySDK":"https://pay.zhihu.com/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":"2|7f8a7960|49bd1c504eeb480452b34b554ea74d574bba54011eb9414d1dbd1a011beb1b554ae84951|1501662414","X-UDID":null,"Authorization":"oauthc3cef7c66a1843f8b3a9e6a1e3160e20"}}
{"database":{"Post":{"26306795":{"title":"[NLP]秒懂詞向量Word2vec的本
質(zhì)","author":"DataTerminatorX","content":"<p><b><i>轉(zhuǎn)自我的
公眾號(hào): 『數(shù)據(jù)挖掘機(jī)養(yǎng)成記』</i></b></p>\n<br><h2>1.
引子</h2>\n<p>大家好<br>我叫數(shù)據(jù)挖掘機(jī)<br>皇家布魯斯特大學(xué)肄
業(yè)<br>我喝最烈的果粒橙,鉆最深的牛角尖<br>——執(zhí)著如我</p>\n<p>今天我要揭
開<strong>Word2vec</strong>的神秘面紗<br>直窺其本質(zhì)<
/p>\n<blockquote><p>相信我,這絕對是你看到的<br>最淺白易懂的 Word2vec中文總結(jié)</p>\n</blockquote>\n<p>(蛤?你問我為啥有這個(gè)底氣?<br>且看
下面,我的踩坑血淚史。。。)</p>\n<h2>2.
Word2vec參考資料總結(jié)</h2>\n<p>(<strong><em>以下都是我踩過的坑,建
議先跳過本節(jié),閱讀正文部分,讀完全文回頭再來看</em></strong>)</p>\n<p>先
大概說下我深挖 word2vec 的過程:先是按照慣例,看了 Mikolov 關(guān)于 Word2vec
的兩篇原始論文,然而發(fā)現(xiàn)看完依然是一頭霧水,似懂非懂,主要原因是這兩篇文章省略了太多理論背景和推導(dǎo)細(xì)節(jié);然后翻出 Bengio
03年那篇JMLR和 Ronan 11年那篇JMLR,看完對語言模型、用CNN處理NLP任務(wù)有所了解,但依然無法完全吃透
word2vec;這時(shí)候我開始大量閱讀中英文博客,其中 北漂浪子 的一篇閱讀量很多的博客吸引了我的注意,里面非常系統(tǒng)地講解了 Word2vec
的前因后果,最難得的是深入剖析了代碼的實(shí)現(xiàn)細(xì)節(jié),看完之后細(xì)節(jié)方面了解了很多,不過還是覺得有些迷霧;終于,我在 quora 上看到有人推薦 XinRong 的那篇英文paper,看完之后只覺醍醐灌頂,酣暢淋漓,相見恨晚,成為我首推的 Word2vec
參考資料。下面我將詳細(xì)列出我閱讀過的所有 Word2vec
相關(guān)的參考資料,并給出評價(jià)</p>\n<ol><li>Mikolov
兩篇原論文:<ol><li>『Distributed Representations of Sentences and
Documents』<ul><li>在前人基礎(chǔ)上提出更精簡的語言模型(language
model)框架并用于生成詞向量,這個(gè)框架就是
Word2vec</li>\n</ul></li>\n<li>『Efficient
estimation of word representations in vector
space』<ul><li>專門講訓(xùn)練 Word2vec 中的兩個(gè)trick:hierarchical softmax 和negative
sampling</li>\n</ul></li>\n<li>優(yōu)點(diǎn):Word2vec
開山之作,兩篇論文均值得一讀</li>\n<li>缺點(diǎn):只見樹木,不見森林和樹葉,讀完不得要義。這里『森林』指
word2vec 模型的理論基礎(chǔ)——即 以神經(jīng)網(wǎng)絡(luò)形式表示的語言模型,『樹葉』指具體的神經(jīng)網(wǎng)絡(luò)形式、理論推導(dǎo)、hierarchical
softmax
的實(shí)現(xiàn)細(xì)節(jié)等等</li>\n</ol></li>\n<li>北漂浪子的博客:『深度學(xué)習(xí)
word2vec
筆記之基礎(chǔ)篇』<ul><li>優(yōu)點(diǎn):非常系統(tǒng),結(jié)合源碼剖析,語言平實(shí)易懂</li>\n<li>缺
點(diǎn):太啰嗦,有點(diǎn)抓不住精髓</li>\n</ul></li>\n<li>Yoav
Goldberg 的論文:『word2vec Explained- Deriving Mikolov et al.’s
Negative-Sampling Word-Embedding Method』<ul><li>優(yōu)點(diǎn):對
negative-sampling
的公式推導(dǎo)非常完備</li>\n<li>缺點(diǎn):不夠全面,而且都是公式,沒有圖示,略顯干枯</li>
\n</ul></li>\n<li>Xin Rong 的論文:『word2vec Parameter
Learning
Explained』:<ul><li><strong>!重點(diǎn)推薦!</strong><
/li>\n<li>理論完備由淺入深非常好懂,且直擊要害,既有 high-level 的 intuition
的解釋,也有細(xì)節(jié)的推導(dǎo)過程</li>\n<li>一定要看這篇paper!一定要看這篇paper!一定要看這篇
paper!</li>\n</ul></li>\n<li>來斯惟的博士論文『基于神經(jīng)網(wǎng)絡(luò)的詞和文
檔語義向量表示方法研究』以及他的博客(網(wǎng)名:licstar)<ul><li>可以作為更深入全面的擴(kuò)展閱讀,這里不僅僅有
word2vec,而是把詞嵌入的所有主流方法通通梳理了一遍</li>\n</ul></li>
\n<li>幾位大牛在知乎的<a
href=\"https://www.zhihu.com/question/53011711\" data-editable=\"true\"
data-title=\"回答\">回答</a>:『word2vec 相比之前的 Word Embedding
方法好在什么地方?』<ul><li>劉知遠(yuǎn)、邱錫鵬、李韶華等知名學(xué)者從不同角度發(fā)表對 Word2vec
的看法,非常值得一看</li>\n</ul></li>\n<li>Sebastian
的博客:『On word embeddings - Part 2: Approximating the
Softmax』<ul><li>詳細(xì)講解了 softmax 的近似方法,Word2vec 的 hierarchical
softmax
只是其中一種</li>\n</ul></li>\n</ol><h2>3.
正文</h2>\n<blockquote><p>你會(huì)在本文看到:</p>
\n<ol><li>提綱挈領(lǐng)地講解 word2vec
的理論精髓</li>\n<li>學(xué)會(huì)用gensim訓(xùn)練詞向量,并尋找相似詞</li>\n<
/ol><p>你不會(huì)在本文看到</p>\n<ol><li>神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程的推導(dǎo)<
/li>\n<li>hierarchical softmax/negative sampling 等 trick
的理論和實(shí)現(xiàn)細(xì)節(jié)</li>\n</ol></blockquote>\n<h3>3.1. 什么是
Word2vec?</h3>\n<p>在聊 Word2vec 之前,先聊聊 NLP (自然語言處理)。NLP
里面,最細(xì)粒度的是 詞語,詞語組成句子,句子再組成段落、篇章、文檔。所以處理 NLP
的問題,首先就要拿詞語開刀。</p>\n<p>舉個(gè)簡單例子,判斷一個(gè)詞的詞性,是動(dòng)詞還是名詞。用機(jī)器學(xué)習(xí)的思路,我們有一
系列樣本(x,y),這里 x 是詞語,y 是它們的詞性,我們要構(gòu)建 f(x)->y 的映射,但這里的數(shù)學(xué)模型
f(比如神經(jīng)網(wǎng)絡(luò)、SVM)只接受數(shù)值型輸入,而 NLP
里的詞語,是人類的抽象總結(jié),是符號(hào)形式的(比如中文、英文、拉丁文等等),所以需要把他們轉(zhuǎn)換成數(shù)值形式,或者說——嵌入到一個(gè)數(shù)學(xué)空間里,這種嵌入方
式,就叫詞嵌入(word embedding),而 Word2vec,就是詞嵌入( word embedding)
的一種</p>\n<p>我在前作『都是套路:
從上帝視角看透時(shí)間序列和數(shù)據(jù)挖掘』提到,大部分的有監(jiān)督機(jī)器學(xué)習(xí)模型,都可以歸結(jié)
為:</p>\n<blockquote><p>f(x)->y</p>\n<
/blockquote>\n<p>在 NLP 中,把 x 看做一個(gè)句子里的一個(gè)詞語,y 是這個(gè)詞語的上下文詞語,那么這里的
f,便是 NLP 中經(jīng)常出現(xiàn)的『語言模型』(language model),這個(gè)模型的目的,就是判斷 (x,y)
這個(gè)樣本,是否符合自然語言的法則,更通俗點(diǎn)說就是:詞語x和詞語y放在一起,是不是人話。</p>\n<p>Word2vec正是來源于這個(gè)思想,但它的最終目的,不是要把 f
訓(xùn)練得多么完美,而是只關(guān)心模型訓(xùn)練完后的副產(chǎn)物——模型參數(shù)(這里特指神經(jīng)網(wǎng)絡(luò)的權(quán)重),并將這些參數(shù),作為輸入 x
的某種向量化的表示,這個(gè)向量便叫做——詞向量(這里看不懂沒關(guān)系,下一節(jié)我們詳細(xì)剖析)。</p>\n<p>我們來看個(gè)例子,
如何用 Word2vec 尋找相似詞:</p>\n<ul><li>對于一句話:『她們 夸 吳彥祖 帥 到
沒朋友』,如果輸入 x 是『吳彥祖』,那么 y
可以是『她們』、『夸』、『帥』、『沒朋友』這些詞</li>\n<li>現(xiàn)有另一句話:『她們 夸 我 帥 到
沒朋友』,如果輸入 x 是『我』,那么不難發(fā)現(xiàn),這里的上下文 y 跟上面一句話一樣</li>\n<li>從而
f(吳彥祖) = f(我) = y,所以大數(shù)據(jù)告訴我們:我 =
吳彥祖(完美的結(jié)論)</li>\n</ul><h3>3.2. Skip-gram 和 CBOW
模型</h3>\n<p>上面我們提到了語言模型</p>\n<ul><li>如果是用一
個(gè)詞語作為輸入,來預(yù)測它周圍的上下文,那這個(gè)模型叫做『Skip-gram
模型』</li>\n<li>而如果是拿一個(gè)詞語的上下文作為輸入,來預(yù)測這個(gè)詞語本身,則是 『CBOW
模型』</li>\n</ul><h4>3.2.1 Skip-gram 和 CBOW
的簡單情形</h4>\n<p>我們先來看個(gè)最簡單的例子。上面說到, y 是 x 的上下文,所以 y
只取上下文里一個(gè)詞語的時(shí)候,語言模型就變成:</p>\n<blockquote><p>用當(dāng)前詞 x
預(yù)測它的下一個(gè)詞
y</p>\n</blockquote>\n<p>但如上面所說,一般的數(shù)學(xué)模型只接受數(shù)值型輸入,這里的 x
該怎么表示呢? 顯然不能用 Word2vec,因?yàn)檫@是我們訓(xùn)練完模型的產(chǎn)物,現(xiàn)在我們想要的是 x
的一個(gè)原始輸入形式。</p>\n<p>答案是:<strong>one-hot
encoder</strong></p>\n<p>所謂 one-hot
encoder,其思想跟特征工程里處理類別變量的 one-hot
一樣(參考我的前作『數(shù)據(jù)挖掘比賽通用框架』、『深挖One-hot和Dummy背后的玄機(jī)』)。本質(zhì)上是用一個(gè)只含一個(gè) 1、其他都是 0
的向量來唯一表示詞語。</p>\n<p>我舉個(gè)例子,假設(shè)全世界所有的詞語總共有 V 個(gè),這 V
個(gè)詞語有自己的先后順序,假設(shè)『吳彥祖』這個(gè)詞是第1個(gè)詞,『我』這個(gè)單詞是第2個(gè)詞,那么『吳彥祖』就可以表示為一個(gè) V
維全零向量、把第1個(gè)位置的0變成1,而『我』同樣表示為 V
維全零向量、把第2個(gè)位置的0變成1。這樣,每個(gè)詞語都可以找到屬于自己的唯一表示。</p>\n<p>OK,那我們接下來就可
以看看 Skip-gram 的網(wǎng)絡(luò)結(jié)構(gòu)了,x 就是上面提到的 one-hot encoder 形式的輸入,y 是在這 V
個(gè)詞上輸出的概率,我們希望跟真實(shí)的 y 的 one-hot encoder 一樣。<br></p>\n<img
src=\"v2-a1a73c063b32036429fbd8f1ef59034b.png\" data-rawwidth=\"682\"
data-rawheight=\"388\"><br><p>首先說明一點(diǎn):<b>隱層的激活函數(shù)其實(shí)是線
性的</b>,相當(dāng)于沒做任何處理(這也是 Word2vec
簡化之前語言模型的獨(dú)到之處),我們要訓(xùn)練這個(gè)神經(jīng)網(wǎng)絡(luò),用<strong>反向傳播算法</strong>,本質(zhì)上
是<em>鏈?zhǔn)角髮?dǎo)</em>,在此不展開說明了,<br></p>\n<p>當(dāng)模型訓(xùn)練
完后,最后得到的其實(shí)是<strong>神經(jīng)網(wǎng)絡(luò)的權(quán)重</strong>,比如現(xiàn)在輸入一個(gè) x 的 one-hot
encoder: [1,0,0,…,0],對應(yīng)剛說的那個(gè)詞語『吳彥祖』,則在輸入層到隱含層的權(quán)重里,只有對應(yīng) 1
這個(gè)位置的權(quán)重被激活,這些權(quán)重的個(gè)數(shù),跟隱含層節(jié)點(diǎn)數(shù)是一致的,從而這些權(quán)重組成一個(gè)向量 vx 來表示x,而因?yàn)槊總€(gè)詞語的 one-hot
encoder 里面 1 的位置是不同的,所以,這個(gè)向量 vx 就可以用來唯一表示
x。</p>\n<p><strong><em>注意:上面這段話說的就是 Word2vec
的精髓!!</em></strong></p>\n<p>此外,我們剛說了,輸出 y 也是用 V
個(gè)節(jié)點(diǎn)表示的,對應(yīng)V個(gè)詞語,所以其實(shí),我們把輸出節(jié)點(diǎn)置成
[1,0,0,…,0],它也能表示『吳彥祖』這個(gè)單詞,但是激活的是隱含層到輸出層的權(quán)重,這些權(quán)重的個(gè)數(shù),跟隱含層一樣,也可以組成一個(gè)向量
vy,跟上面提到的 vx
維度一樣,并且可以看做是<strong>詞語『吳彥祖』的另一種詞向量</strong>。而這兩種詞向量 vx 和
vy,正是 Mikolov
在論文里所提到的,『輸入向量』和『輸出向量』,一般我們用『輸入向量』。</p>\n<p>需要提到一點(diǎn)的是,這個(gè)詞向量的維
度(與隱含層節(jié)點(diǎn)數(shù)一致)一般情況下要遠(yuǎn)遠(yuǎn)小于詞語總數(shù) V 的大小,所以 Word2vec
本質(zhì)上是一種<strong>降維</strong>操作——把詞語從 one-hot encoder 形式的表示降維到
Word2vec 形式的表示。</p>\n<h3>3.2.2. Skip-gram
更一般的情形</h3>\n<p>上面討論的是最簡單情形,即 y 只有一個(gè)詞,當(dāng) y
有多個(gè)詞時(shí),網(wǎng)絡(luò)結(jié)構(gòu)如下:<br><img
src=\"v2-ca81e19caa378cee6d4ba6d867f4fc7c.png\" data-rawwidth=\"540\"
data-rawheight=\"617\"><br></p>\n<blockquote><p&
gt;可以看成是 單個(gè)x->單個(gè)y 模型的并聯(lián),cost function 是單個(gè) cost function
的累加(取log之后)</p>\n</blockquote>\n<p>如果你想深入探究這些模型是如何并聯(lián)、
cost function 的形式怎樣,不妨仔細(xì)閱讀參考資料4. 在此我們不展開。</p>\n<h3>3.2.3
CBOW 更一般的情形</h3>\n<p>跟 Skip-gram
相似,只不過:</p>\n<blockquote><p>Skip-gram 是預(yù)測一個(gè)詞的上下文,而
CBOW
是用上下文預(yù)測這個(gè)詞</p>\n</blockquote>\n<p>網(wǎng)絡(luò)結(jié)構(gòu)如下<br><
/p><img src=\"v2-d1ca2547dfb91bf6a26c60782a26aa02.png\"
data-rawwidth=\"518\" data-rawheight=\"646\"><br><p>更
Skip-gram 的模型并聯(lián)不同,這里是輸入變成了多個(gè)單詞,所以要對輸入處理下(一般是求和然后平均),輸出的 cost function
不變,在此依然不展開,建議你閱讀參考資料4.</p>\n<h3>3.3. Word2vec
的訓(xùn)練trick</h3>\n<p>相信很多初次踩坑的同學(xué),會(huì)跟我一樣陷入 Mikolov
那篇論文(參考資料1.)里提到的 hierarchical softmax 和 negative sampling
里不能自拔,但其實(shí),它們并不是 Word2vec 的精髓,只是它的訓(xùn)練技巧,但也不是它獨(dú)有的訓(xùn)練技巧。 Hierarchical softmax只是 softmax 的一種近似形式(詳見參考資料7.),而 negative sampling
也是從其他方法借鑒而來。</p>\n<p>為什么要用訓(xùn)練技巧呢? 如我們剛提到的,Word2vec
本質(zhì)上是一個(gè)語言模型,它的輸出節(jié)點(diǎn)數(shù)是 V 個(gè),對應(yīng)了 V
個(gè)詞語,本質(zhì)上是一個(gè)多分類問題,但實(shí)際當(dāng)中,詞語的個(gè)數(shù)非常非常多,會(huì)給計(jì)算造成很大困難,所以需要用技巧來加速訓(xùn)
練。</p>\n<p>這里我總結(jié)了一下這兩個(gè) trick
的本質(zhì),有助于大家更好地理解,在此也不做過多展開,有興趣的同學(xué)可以深入閱讀參考資料
1.~7.</p>\n<ul><li>hierarchical
softmax<ul><li>本質(zhì)是把 N 分類問題變成
log(N)次二分類</li>\n</ul></li>\n<li>negative
sampling<ul><li>本質(zhì)是預(yù)測總體類別的一個(gè)子集</li>\n</ul><
/li>\n</ul><h3>3.4.
擴(kuò)展</h3>\n<p>很多時(shí)候,當(dāng)我們面對林林總總的模型、方法時(shí),我們總希望總結(jié)出一些本質(zhì)的、共性的東西,以構(gòu)建我們的
知識(shí)體系,比如我在前作『分類和回歸的本質(zhì)』里,原創(chuàng)性地梳理了分類模型和回歸模型的本質(zhì)聯(lián)系,比如在詞嵌入領(lǐng)域,除了
Word2vec之外,還有基于共現(xiàn)矩陣分解的 GloVe
等等詞嵌入方法。</p>\n<p>深入進(jìn)去我們會(huì)發(fā)現(xiàn),神經(jīng)網(wǎng)絡(luò)形式表示的模型(如
Word2vec),跟共現(xiàn)矩陣分解模型(如 GloVe),有理論上的相通性,這里我推薦大家閱讀參考資料5.
——來斯惟博士在它的博士論文附錄部分,證明了 Skip-gram 模型和 GloVe 的 cost fucntion
本質(zhì)上是一樣的。是不是一個(gè)很有意思的結(jié)論? 所以在實(shí)際應(yīng)用當(dāng)中,這兩者的差別并不算很大,尤其在很多 high-level 的 NLP
任務(wù)(如句子表示、命名體識(shí)別、文檔表示)當(dāng)中,經(jīng)常把詞向量作為原始輸入,而到了 high-level
層面,差別就更小了。</p>\n<p>鑒于詞語是 NLP
里最細(xì)粒度的表達(dá),所以詞向量的應(yīng)用很廣泛,既可以執(zhí)行詞語層面的任務(wù),也可以作為很多模型的輸入,執(zhí)行 high-level
如句子、文檔層面的任務(wù),包括但不限于:</p>\n<ul><li>計(jì)算相似
度<ul><li>尋找相似詞</li>\n<li>信息檢索</li>\n<
/ul></li>\n<li>作為 SVM/LSTM
等模型的輸入<ul><li>中文分詞</li>\n<li>命名體識(shí)別</li>
\n</ul></li>\n<li>句子表示<ul><li>情感分析<
/li>\n</ul></li>\n<li>文檔表示<ul><li>文檔主題判
別</li>\n</ul></li>\n</ul><h2>4.
實(shí)戰(zhàn)</h2>\n<p>上面講了這么多理論細(xì)節(jié),其實(shí)在真正應(yīng)用的時(shí)候,只需要調(diào)用 Gensim (一個(gè) Python
第三方庫)的接口就可以。但對理論的探究仍然有必要,你能更好地知道參數(shù)的意義、模型結(jié)果受哪些因素影響,以及舉一反三地應(yīng)用到其他問題當(dāng)中,甚至更改源
碼以實(shí)現(xiàn)自己定制化的需求。</p>\n<p>這里我們將使用 Gensim 和 NLTK
這兩個(gè)庫,來完成對生物領(lǐng)域的相似詞挖掘,將涉及:</p>\n<ul><li>解讀 Gensim 里
Word2vec 模型的參數(shù)含義</li>\n<li>基于相應(yīng)語料訓(xùn)練 Word2vec
模型,并評估結(jié)果</li>\n<li>對模型結(jié)果調(diào)優(yōu)</li>\n</ul><p>語
料我已經(jīng)放出來了,可以關(guān)注我的公眾號(hào)『數(shù)據(jù)挖掘機(jī)養(yǎng)成記』,并回復(fù) Sherlocked
獲取語料,包含5000行生物醫(yī)學(xué)領(lǐng)域相關(guān)文獻(xiàn)的摘要(英文)</p><br><p>我將在下一篇文章里詳細(xì)講解實(shí)
戰(zhàn)步驟,敬請關(guān)注本人公眾號(hào)。友情建議:請先自行安裝 Gensim 和 NLTK 兩個(gè)庫,并建議使用 jupyter notebook
作為代碼運(yùn)行環(huán)境</p><br><p><i><b>歡迎各路大神猛烈拍磚,共同交
流</b></i></p><br><p>====評論區(qū)答疑節(jié)選====</p&
gt;<p>Q1. gensim 和 google的 word2vec 里面并沒有用到onehot
encoder,而是初始化的時(shí)候直接為每個(gè)詞隨機(jī)生成一個(gè)N維的向量,并且把這個(gè)N維向量作為模型參數(shù)學(xué)習(xí);所以word2vec結(jié)構(gòu)中不存在文章圖中
顯示的將V維映射到N維的隱藏層。</p><p>A1. 其實(shí),本質(zhì)是一樣的,加上 one-hot encoder
層,是為了方便理解,因?yàn)檫@里的 N 維隨機(jī)向量,就可以理解為是 V 維 one-hot encoder 輸入層到 N
維隱層的權(quán)重,或者說隱層的輸出(因?yàn)殡[層是線性的)。每個(gè) one-hot encoder 里值是 1 的那個(gè)位置,對應(yīng)的 V
個(gè)權(quán)重被激活,其實(shí)就是『從一個(gè)V*N的隨機(jī)詞向量矩陣?yán)?#xff0c;抽取某一行』。學(xué)習(xí) N 維向量的過程,也就是優(yōu)化 one-hot encoder
層到隱含層權(quán)重的過程</p><p>Q2. hierarchical softmax
獲取詞向量的方式和原先的其實(shí)基本完全不一樣,我初始化輸入的也不是一個(gè)onehot,同時(shí)我是直接通過優(yōu)化輸入向量的形式來獲取詞向量?如果用了
hierarchical 結(jié)構(gòu)我應(yīng)該就沒有輸出向量了吧?<br></p><br><p>A2.
初始化輸入依然可以理解為是 one-hot,同上面的回答;確實(shí)是只能優(yōu)化輸入向量,沒有輸出向量了。具體原因,我們可以梳理一下不用
hierarchical (即原始的 softmax) 的情形:</p><blockquote>隱含層輸出一個(gè) N
維向量 x, 每個(gè)x 被一個(gè) N 維權(quán)重 w 連接到輸出節(jié)點(diǎn)上,有 V 個(gè)這樣的輸出節(jié)點(diǎn),就有 V 個(gè)權(quán)重 w,再套用 softmax
的公式,變成 V 分類問題。這里的類別就是詞表里的 V 個(gè)詞,所以一個(gè)詞就對應(yīng)了一個(gè)權(quán)重 w,從而可以用 w
作為該詞的詞向量,即文中的輸出詞向量。<br><br>PS. 這里的 softmax 其實(shí)多了一個(gè)『自由度』,因?yàn)?V
分類只需要 V-1 個(gè)權(quán)重即可</blockquote><p>我們再看看 hierarchical softmax
的情形:</p><blockquote>隱含層輸出一個(gè) N 維向量 x, 但這里要預(yù)測的目標(biāo)輸出詞,不再是用
one-hot 形式表示,而是用 huffman tree 的編碼,所以跟上面 V 個(gè)權(quán)重同時(shí)存在的原始 softmax 不一樣, 這里 x
可以理解為先接一個(gè)輸出節(jié)點(diǎn),即只有一個(gè)權(quán)重 w1 ,輸出節(jié)點(diǎn)輸出 1/1+exp(-w*x),變成一個(gè)二分類的 LR,輸出一個(gè)概率值
P1,然后根據(jù)目標(biāo)詞的 huffman tree 編碼,將 x 再輸出到下一個(gè) LR,對應(yīng)權(quán)重 w2,輸出 P2,總共遇到的 LR
個(gè)數(shù)(或者說權(quán)重個(gè)數(shù))跟 huffman tree 編碼長度一致,大概有 log(V) 個(gè),最后將這 log(V) 個(gè) P
相乘,得到屬于目標(biāo)詞的概率。但注意因?yàn)橹挥?log(V) 個(gè)權(quán)重 w 了,所以跟 V 個(gè)詞并不是一一對應(yīng)關(guān)系,就不能用 w
表征某個(gè)詞,從而失去了詞向量的意義<br><br>PS. 但我個(gè)人理解,這 log(V)
個(gè)權(quán)重的組合,可以表示某一個(gè)詞。因?yàn)?huffman tree
構(gòu)建的時(shí)候,可以理解成是一個(gè)不斷『二分』的過程,不斷二分到只剩一個(gè)詞為止。而每一次二分,都有一個(gè) LR
權(quán)重,這個(gè)權(quán)重可以表征該類詞,所以這些權(quán)重拼接在一起,就表示了『二分』這個(gè)過程,以及最后分到的這個(gè)詞的『輸出詞向
量』。<br><br>我舉個(gè)例子:<br><br>假設(shè)現(xiàn)在總共有
(A,B,C)三個(gè)詞,huffman tree 這么構(gòu)建:<br>第一次二分: (A,B), (C)<br>假如我們用的LR 是二分類 softmax 的情形(比常見 LR 多了一個(gè)自由度),這樣 LR 就有倆權(quán)重,權(quán)重 w1_1 是屬于 (A,B)
這一類的,w1_2 是屬于 (C) 的, 而 C 已經(jīng)到最后一個(gè)了,所以 C 可以表示為
w1_2<br><br>第二次二分: (A), (B)<br>假設(shè)權(quán)重分別對應(yīng) w2_1 和 w2_2,那么A 就可以表示為 [w1_1, w2_1], B 可以表示為 [w1_1, w2_2]<br><br>這樣,
A,B,C 每個(gè)詞都有了一個(gè)唯一表示的詞向量(此時(shí)他們長度不一樣,不過可以用 padding
的思路,即在最后補(bǔ)0)<br><br>當(dāng)然了,一般沒人這么干。。。開個(gè)腦洞而
已</blockquote><br><br><p>Q3.
待
續(xù)</p>","updated":"2017-04-11T13:07:12.000Z","canComment":false,"commentPermission":"anyone","commentCount":37,"likeCount":169,"state":"published","isLiked":false,"slug":"26306795","isTitleImageFullScreen":false,"rating":"none","sourceUrl":"","publishedTime":"2017-04-11T21:07:12+08:00","links":
{"comments":"/api/posts/26306795/comments"},"url":"/p
/26306795","titleImage":"https://pic4.zhimg.com/v2-
a1a73c063b32036429fbd8f1ef59034b_r.png","summary":"","href":"/api/posts
/26306795","meta":
{"previous":null,"next":null},"snapshotUrl":"","commentsCount":37,"likesCount":169},"27728292":
{"title":"意識(shí)流——寫在第n次卸載王者榮耀之
后","author":"DataTerminatorX","content":"<a href=\"#_2\"
data-editable=\"true\" data-title=\"前言\">前言</a><a
href=\"#_3\" data-editable=\"true\"
data-title=\"引子\">引子</a><a href=\"#_4\"
data-editable=\"true\" data-title=\"元?jiǎng)恿">元?jiǎng)恿?lt;/a><a
href=\"#_5\" data-editable=\"true\"
data-title=\"小議『折騰』\">小議『折騰』</a><a href=\"#_6\"
data-editable=\"true\" data-title=\"心流\">心流</a><a
href=\"#_7\" data-editable=\"true\"
data-title=\"自控\">自控</a><a href=\"#_8\"
data-editable=\"true\" data-title=\"接納自己\">接納自己</a><a
href=\"#_9\" data-editable=\"true\"
data-title=\"遠(yuǎn)離誘惑\">遠(yuǎn)離誘惑</a><a href=\"#_10\"
data-editable=\"true\" data-title=\"觀察者角度\">觀察者角度</a><a
href=\"#_11\" data-editable=\"true\"
data-title=\"正確的積累\">正確的積累</a><a href=\"#_12\"
data-editable=\"true\" data-title=\"后記\">后記</a><a
href=\"#bonus\" data-editable=\"true\"
data-title=\"Bonus\">Bonus</a><h2>前言</h2>\n<p&
gt;最近在探究技術(shù)問題的同時(shí),不免思考些形而上的東西。畢竟埋頭做事的同時(shí),也要抬頭看路,這是技術(shù)人員必須學(xué)會(huì)的。但思考來思考去,也只是些碎片化
的觀點(diǎn),比較淺顯,不成體系。在這里跟大家分享一下,我會(huì)盡量按照一定的邏輯梳理我的觀點(diǎn),并且結(jié)合我的實(shí)踐,給出可行性建
議。</p>\n<p>首先聲明,我絕非要像人生導(dǎo)師般灌輸雞湯(那是李開復(fù)們、卡耐基們的使命),以我的資質(zhì)遠(yuǎn)不夠格,只是想
通過我的公眾號(hào)平臺(tái),跟大家分享觀點(diǎn),產(chǎn)生共鳴或者觀點(diǎn)碰撞最好,<strong>歡迎留言</strong><
/p>\n<p>另外我也是受到很多大神觀點(diǎn)的啟發(fā),比如很早之前我推薦過劉未鵬的『暗時(shí)間』、Brown的『學(xué)會(huì)提問——批判性思維
指南』,以及網(wǎng)上諸多高質(zhì)量回答(如
黃白小貓、肥肥貓、科學(xué)家種太陽等知名答主),還有身邊對我產(chǎn)生重要影響的朋友,所
以:</p>\n<blockquote><p><strong>本文受眾<
/strong>:<br>跟我一樣不時(shí)會(huì)迷茫、會(huì)慵懶、會(huì)放縱自己,希望能改變當(dāng)前生活和工作狀態(tài)的朋友<
/p>\n</blockquote>\n<h2>引子</h2>\n<p>說起來慚愧,在奔三
的路上已走了一半了,卻還經(jīng)常會(huì)沉迷游戲美劇,會(huì)由著性子做事情,會(huì)鉆牛角尖。相信像我這樣的朋友,不在少數(shù)(看每天深夜時(shí)分
王者榮耀的好友在線數(shù)就知道了…)。當(dāng)屏幕關(guān)掉的那一刻,不知是否突然會(huì)感覺到,空虛和慌張?</p>\n<p>而你我的身邊,
可能都會(huì)有這樣的同事/同學(xué):他們每天高效地學(xué)習(xí)、工作,把時(shí)間安排得井井有條,每天都有提升,并會(huì)階段性產(chǎn)生質(zhì)變——比如paper一篇接一篇、項(xiàng)目突
破性進(jìn)展、快速升職加薪、創(chuàng)業(yè)公司上市、生活質(zhì)量提升…
人生仿佛開掛。</p>\n<p>你很羨慕,很向往,于是你開始模仿,開始看成功學(xué)給自己打雞血,開始學(xué)習(xí)各種花式時(shí)間管理方法
——卻發(fā)現(xiàn)不得要領(lǐng)——why?
——因?yàn)殡u湯永遠(yuǎn)是泛泛而談,知乎live大多是收割智商稅。因?yàn)樗鼈儾粫?huì)去了解你,了解你的性格,了解你的背景和資源,了解你的優(yōu)缺點(diǎn),了解你的智商、
能力上限,但這不怪他們——了解你的人,永遠(yuǎn)只有你自己。</p>\n<h2>元?jiǎng)恿?lt;/h2>
\n<p>劉未鵬提到過一個(gè)觀點(diǎn),叫『元認(rèn)知』,我把這個(gè)概念移植到本文,叫『<strong>元?jiǎng)?力</strong>』。顧名思義,元?jiǎng)恿κ且磺袆?dòng)力的基礎(chǔ),沒有元?jiǎng)恿?#xff0c;其他都是扯淡。</p>\n<p>而這個(gè)
元?jiǎng)恿?#xff0c;我認(rèn)為就是</p>\n<blockquote><p>你想成為怎樣的人</p>\n<
/blockquote>\n<p>是不是非常沒創(chuàng)意?多么爛俗的一個(gè)問題——屢屢見于各類雞湯、成功學(xué)。但,他們都沒有給出,你真正
想要的答案,對么?</p>\n<p>對這個(gè)問題,你可能會(huì)給出非常多維的回答:</p>
\n<ul><li>我想在事業(yè)上有成就,賺大錢,娶個(gè)秀外慧中的姑娘,走上人生巔峰</li>
\n<li>我想平平淡淡安安穩(wěn)穩(wěn)過日子,買個(gè)房子慢慢還貸,娶個(gè)老婆經(jīng)濟(jì)適用,退休后下棋打牌,跟三五老友不時(shí)走
動(dòng)。</li>\n</ul><p>但我覺得,這些回答賦予了人生太多意義——要知道,人生本無意義(參見前作『寫
在入職一周年』),人生只是一種經(jīng)歷。所以對于這個(gè)問題,我個(gè)人把它等價(jià)轉(zhuǎn)換
成:</p>\n<blockquote><p>你是否愿意折騰人生</p>\n<
/blockquote>\n<img src=\"v2-0995ed7f0723af70c2099ee1c461a2db.jpg\"data-rawwidth=\"500\"
data-rawheight=\"276\"><br><p>——依然很寬泛,有雞湯的嫌疑。但至此,我們已經(jīng)大大簡化
問題,cut掉很多維度(事業(yè)、賺錢、娶妻生子、買房…),只留下唯一一個(gè)維度——是否愿意折騰</p>\n<p>先不急著回答
這個(gè)問題。前段時(shí)間在知乎上看到一個(gè)熱門問題——『是不是大部分男性到了 40
歲,活著特沒意思?』——滿屏的答案看著讓人絕望,原來大多數(shù)人到中年,都已泯然眾人平庸無奇。
其實(shí)也在意料之中,我們不妨去觀察下我們的父輩,90后的父輩基本分布在45~55歲的區(qū)間,去看看他們的人生經(jīng)歷是怎樣的——從自己最親近的人身上,往
往能感受到強(qiáng)烈的情感代入和性格、背景上的共性,能更直觀地找到我們的答案——你是想活成父輩的樣子,還是想走一條不同的路?——當(dāng)然,除此外,你還得結(jié)
合你自己的性格、人生大背景,來尋找這個(gè)問題的答案。</p>\n<p>至于我為什么要極度簡化這個(gè)問題?因?yàn)?#xff0c;維度太廣,就相
當(dāng)于給你的人生設(shè)立了太多目標(biāo),這不現(xiàn)實(shí)——就如前作『寫在入職一周年』所說,設(shè)定目標(biāo)時(shí),要選好主干,刪減枝干,認(rèn)準(zhǔn)了走下
去。</p>\n<p>一旦你回答完這個(gè)問題,那恭喜你,你就有了『元?jiǎng)恿Α?#xff0c;從而:</p>
\n<blockquote><p>如果選擇折騰,那你以后的人生選擇,要盡量去豐富自己的經(jīng)歷;如果選擇穩(wěn)定,那你每次的人生
選擇,都要最小化自己承受的風(fēng)險(xiǎn)。</p>\n</blockquote>\n<p>愿意折騰與甘心穩(wěn)定,客觀講并
沒有高下之分,重要的是你能接納自己這樣的想法,認(rèn)同自己就是想成為這樣的人。
當(dāng)然,本文更多地是為前者準(zhǔn)備的,畢竟他們,才是人類中的nobelman(沒錯(cuò),我是社會(huì)達(dá)爾文主義者)</p>\n<img
src=\"v2-427993b88c7521051abe22604f8fb860.jpg\" data-rawwidth=\"183\"
data-rawheight=\"179\"><br><p>所以,接下來你人生的每時(shí)每刻,都要被這股元?jiǎng)恿︱?qū)使。如
果失去了元?jiǎng)恿?#xff0c;一切都是扯淡,你就形同走尸,隨波逐流。至于怎么保持元?jiǎng)恿Α獰o解,就好比數(shù)學(xué)里的公理,就這么存在著,一旦沒了,整個(gè)體系就瓦解
了。</p>\n<h3>小議『折騰』</h3>\n<p>這里我專門擴(kuò)展下『折騰』的外延,畢竟短短
兩個(gè)字無法概括其精髓。我認(rèn)為人生的『折騰』不是簡單地改變現(xiàn)狀,人為制造 hard 模式,而是合理評估和利用自己手頭的資源,為階段性目標(biāo)躍進(jìn)。
比如讀研讀博,不應(yīng)該是隨個(gè)大流覺得將來也許會(huì)有用,而是基于你目前了解到的信息,認(rèn)定這個(gè)研究方向是你感興趣的,或者對將來找工作有幫助的;比如跳槽,
不應(yīng)該是賭氣地覺得呆了不爽拍拍屁股走人,而是要能讓自己的競爭力、不可替代性
上一個(gè)臺(tái)階;再如前幾年很火的創(chuàng)業(yè)熱潮,不應(yīng)該是一時(shí)腦熱一腔熱血要實(shí)現(xiàn)財(cái)富自由大步快上,而是在這個(gè)領(lǐng)域有了深厚的資源積累,對自己的公司的定位、做什
么樣的產(chǎn)品,有清晰認(rèn)知,也能承擔(dān)失敗的風(fēng)險(xiǎn),想真正做點(diǎn)事情。</p>\n<p>但每一次折騰,或者說每一次選擇,都帶有很多
不確定性,所以要最大化保證確定性的部分在你能handle的范圍內(nèi)(比如明知這個(gè)選擇需要雄厚的政治資源做依托,那平民出身的你就不要硬上了),然后去
坦然接受不確定性,并且留一個(gè) plan B
作為退路。</p>\n<h2>心流</h2>\n<p>如果說『元?jiǎng)恿Α淮笾鹿蠢粘隽四闳松闹鞲陕?徑,那如何一直沿著這條主干前行而不跑偏,則是另一個(gè)話題。這種『一直沿著主干前行不跑偏』的狀態(tài),我借用劉未鵬提到的、其實(shí)是心理學(xué)里的概念,叫做——
『<strong>心流</strong>』</p>\n<img
src=\"v2-ad44d86d0c5a19a58419a1e670cbd732.jpg\" data-rawwidth=\"300\"
data-rawheight=\"165\"><br><p>回到開頭描述的,那些人生開掛的大神。在我身邊就有這樣的
同事和朋友,我也有幸觀察過交流過,我發(fā)現(xiàn),雖然他們的性格背景各異,但他們都有一個(gè)共性——保持著良好的工作生活狀態(tài),形成一種慣性,即便外界有小擾動(dòng)
(如回家?guī)Ш⒆印㈤_無聊的會(huì)議、日常應(yīng)酬),依然能迅速回到主線。這種狀態(tài),就是『心流』。我曾經(jīng)也有過這樣的體驗(yàn),就仿佛自己的思維沉浸在深海里,縱使
海上時(shí)不時(shí)來一陣暴風(fēng)雨,思維依然巋然不動(dòng),穩(wěn)定潛行。</p>\n<p>為了避免變成雞湯,我需要進(jìn)一步發(fā)問<
/p>\n<blockquote><p>如何保持這種持續(xù)不斷的心流狀態(tài)呢?</p>\n<
/blockquote>\n<p>個(gè)人認(rèn)為就兩點(diǎn)</p>
\n<blockquote><ol><li>專注</li>\n<li>階段性正反饋
</li>\n</ol></blockquote>\n<p>具體方式因人而異、因行業(yè)而已,說幾個(gè)
我自己實(shí)踐過的做法吧,為了保持專注,我會(huì)把手機(jī)扔一邊,回想我今天要搞明白的問題,然后帶著問題有針對性地去搜相關(guān)paper和博客(這樣就避免自己漫
無目的地逛知乎),搜到之后打印想看的paper,盡量搞明白理論細(xì)節(jié),慢慢沉浸在這個(gè)領(lǐng)域里。但僅停留在專注的程度還不夠,專注只是前戲,并不能給你
high的感覺,只有當(dāng)你運(yùn)行出一段代碼得到結(jié)果、改進(jìn)一個(gè)算法、獨(dú)立推導(dǎo)出一個(gè)公式時(shí),你才能真正high起來,大腦會(huì)給自己分泌多巴胺作為獎(jiǎng)勵(lì),讓你
繼續(xù)專注、正反饋、專注,形成良性循環(huán)。但是要注意兩
點(diǎn)</p>\n<blockquote><ol><li>不要把反饋時(shí)間拖得太久,否則會(huì)慢慢喪失動(dòng)
力,所以強(qiáng)調(diào)『階段性』</li>\n<li>不要high完后投入到其他無聊事情上,而是開啟新的挑戰(zhàn),持續(xù)找high
點(diǎn)</li>\n</ol></blockquote>\n<p>然而問題來了,玩王者榮耀也能讓我們
保持專注(全身心地投入戰(zhàn)斗)和階段性反饋(收割人頭、晉升段位、榮膺mvp),那為何我們大部分人關(guān)上手機(jī)只有疲憊和空虛,沒有滿足感
呢?</p>\n<p>我想了想,大概是因?yàn)椤鹤钥亍?lt;/p>\n<br><h2>自
控</h2>\n<p>再次覺得慚愧,這么大把年紀(jì)了,還在糾結(jié)這種低級話題。但無奈,這就是現(xiàn)實(shí)——這個(gè)社會(huì)上,很多人包括我
自己,都有『巨嬰』的傾向,心智的成熟度、對自我的掌控,跟不上年齡的增長。</p>\n<p>所以我必須要再次思考這個(gè)問題,
拿玩游戲舉例,為什么我們專注過、high過,卻沒有心流體驗(yàn),沒有滿足感和充實(shí)感呢?——
因?yàn)?#xff0c;它拉低了你high的閾值,擊垮了你的自控能力。</p>\n<p>之前在知乎上看到過一種說法,出處忘了,大意
是</p>\n<blockquote><p>任何不需要太多努力就能獲得快感的事物,都容易讓人上癮<
/p>\n</blockquote>\n<p>這句話非常直接,極端情況就是——毒品,看過很多戒毒者分享自己的親身經(jīng)
歷,很多類型的毒品通過讓你的機(jī)體分泌多巴胺,來直接獲得精神上的愉悅感,覺得自己是 king of the
world,而一旦這個(gè)愉悅感過了,你回到真實(shí)世界,發(fā)現(xiàn)自己其實(shí)是個(gè)大寫的
LOSER,怎甘心回到現(xiàn)實(shí)呢?——所以吸毒人員復(fù)吸率接近100%就不難理解了。被戲稱為『精神鴉片』的游戲亦然,對于我們大部分非職業(yè)玩家來說,我們
玩游戲只是消遣,并不需要投入很多腦力體力去深度思考分析,所以看上去的『專注』,不過是表象而已,但獲得的反饋,比如擊殺的人頭數(shù)、閃瞎眼的段位星星、
朋友圈的排名等,卻是狡猾的游戲設(shè)計(jì)者實(shí)打?qū)嵉爻尸F(xiàn)給你的。而多輪游戲過后,你終于疲憊了,于是你內(nèi)心默默吐槽,怒己不爭——靠,小爺連這點(diǎn)自制力都沒
有!進(jìn)而自我懷疑、甚至滑向棄療的深淵。</p>\n<p>所以為了不讓自己輕易上癮,你一定要控記住你記幾,努力提高h(yuǎn)igh
的閾值,避免游戲結(jié)束后的寂寞,身體一抖后的空虛。</p>\n<img
src=\"v2-e54d82f4f5bf327bd9df12fb99f32faa.jpg\" data-rawwidth=\"690\"
data-rawheight=\"690\"><br><p>聽起來很雞湯是不是?所以我必須進(jìn)一步發(fā)問</p&
gt;\n<blockquote><p>如何控制自己?</p>\n</blockquote>
\n<p>我個(gè)人結(jié)合自身經(jīng)歷,總結(jié)了三點(diǎn)循序漸進(jìn)的可執(zhí)行方案</p>
\n<blockquote><ol><li>接納自己</li>\n<li>遠(yuǎn)離誘
惑</li>\n<li>觀察者角度</li>\n</ol></blockquote>
\n<h3>接納自己</h3>\n<p>我從不認(rèn)為『自控』是刻意強(qiáng)迫自己不去做什么,因?yàn)檫@有違人性,也不長
久,因?yàn)槟銢]真正想明白。</p>\n<p>所以,你首先要認(rèn)識(shí)和接納自己。回到我們講的『元?jiǎng)恿Α?#xff0c;如果你選擇折騰人生,對自
己高要求,那顯然,沉迷游戲,既耗費(fèi)時(shí)間,又沒實(shí)質(zhì)收獲,是在浪費(fèi)你的生命。但如果你就是想平平淡淡過日子,或者說,玩游戲不會(huì)讓你覺得空虛,而是有趣,
那很好——自己開心就好。所以說到底,接納自己的弱點(diǎn),同時(shí)接納自己的野心。</p>\n<img
src=\"v2-01e821324207b36e37a7fa361c9fa21b.jpg\" data-rawwidth=\"600\"
data-rawheight=\"517\"><br><p>接納自己還包括,不要給自己太多的壓力和負(fù)擔(dān),放縱過就過
去了,接受自己有過這樣經(jīng)歷的現(xiàn)實(shí),而且也不能一刀切,比如難得跟好朋友開黑一次,這樣的經(jīng)歷以后不一定會(huì)有,那這就值得去做。這里又牽扯到一
個(gè)<strong>未來遺憾最小化理論</strong>,不過不在本意識(shí)流的討論范圍內(nèi),就不展開了。<
/p>\n<h3>遠(yuǎn)離誘惑</h3>\n<p>套句爛俗的話:凝視深淵的人,必將被深淵所凝視。我擅自解讀
下就是,如果你總是在跟你很難拒絕的誘惑做斗爭,那你遲早會(huì)陷進(jìn)去(比如本人已卸載n次王者榮耀)。所
以:</p>\n<blockquote><p>永遠(yuǎn)不要高估自己的控制力</p>\n<
/blockquote>\n<p>懶惰、貪婪、縱欲等等,七宗罪也好,三毒也罷,都是人性,很少有人能對抗本性變成弗洛伊德所說的
『超我』。所以不要把自己想的太牛逼,在沒有形成自控的慣性前,盡量遠(yuǎn)離那些容易上癮的事物,最好能再給自己定一些底線——比如不在工作時(shí)間玩游戲、不輕
易欺瞞朋友、不出軌等等,堅(jiān)守住自己設(shè)定的底線,不給它們滋生的環(huán)境。</p>\n<p>另外給一個(gè)切實(shí)可行的小建議,就是定一
些獎(jiǎng)勵(lì)機(jī)制,比如寫完這個(gè)算法跑出結(jié)果,再獎(jiǎng)勵(lì)自己看一部電影,否則就繼續(xù)攻破難題,從而慢慢形成抵制誘惑的慣
性。</p>\n<h3>觀察者角度</h3>\n<p>這是我獨(dú)創(chuàng)的一個(gè)概念。解釋一下,就是當(dāng)你做
一件跟你主干背離的事情時(shí)(比如無目的地上網(wǎng)、陌陌上撩妹、沉迷打游戲、yp、泡吧、吸毒…),你的內(nèi)心其實(shí)是有點(diǎn)抗拒的,但強(qiáng)大的慣性和脆弱的人性讓你
身體變得很誠實(shí)。所以,當(dāng)你的內(nèi)心哪怕有一絲猶豫和抗拒時(shí),千萬努力用力奮力提醒自己,讓自己抽身成一個(gè)<strong>觀察
者</strong>——即
從一個(gè)旁觀者的角度,看待你現(xiàn)在的行為,并推測這個(gè)旁觀者的心理活動(dòng)。比如你看到一個(gè)在上班時(shí)間狂刷微博淘寶的人,你會(huì)吐槽一句,真是個(gè)混日子的水貨!
你看到一個(gè)長相平庸的猥瑣男在陌陌上撩妹撩得樂不可支時(shí),你內(nèi)心充滿了鄙視;你看到兩個(gè)空虛寂寞的肉體在沒有任何感情維系的情況下啪啪啪時(shí),你仿佛看到了
大街上隨處野合的流浪狗。。。 </p>\n<img
src=\"v2-22c6382a5eea490d27563a99ebe08316.jpg\" data-rawwidth=\"600\"
data-rawheight=\"553\"><br><p>這個(gè)概念很像我前段時(shí)間看過的一部還不錯(cuò)的國產(chǎn)劇情片
——<記憶大師>,其中有個(gè)『首次去除記憶』的橋段——并不是真的把你的記憶銷毀,而是剝離你作為當(dāng)事人在這段回憶里所產(chǎn)生
的情感,以一個(gè)旁觀者的角度來看待這一切,你就沒有了主觀上的喜怒哀樂,而是很客觀冷靜地看著這一切。</p>\n<p>這里也
一樣,我認(rèn)為,我們之所以會(huì)對某種事物上癮,是因?yàn)樗屛覀兊玫綕M足感,從而沉浸在自我的世界,放大了主觀情感,所以適時(shí)抽身出來,以一個(gè)旁觀者的角度,
客觀理性地看待自己,看到的將不再是自我的世界。</p>\n<p>當(dāng)然,毫無疑問,這些需要刻意練習(xí),而練習(xí)的動(dòng)力,主要就是
來自『元?jiǎng)恿Α?lt;/p>\n<h2>正確的積累</h2>\n<p>好,有了元?jiǎng)恿?#xff0c;有了自制力,形成
了心流,然后呢?又回到雞湯的套路?只要不停地努力,加倍地努力,就一定會(huì)有所收獲,不虛此生?——當(dāng)然是扯淡。世間不如意之事,十之八九,努力沒收獲的
事情多了去了,這套理論只適合搞傳銷的。</p>\n<p>所以,培養(yǎng)出自制力和良好的心流狀態(tài),只是保證了人生路上的馬力,在
具體操作層面,還要想清楚努力的方向。知乎上黃白小貓舉過一個(gè)學(xué)英語的例子,大意是,說很多人花大量時(shí)間去背單詞,根本沒想清楚目的是什么,會(huì)不會(huì)用到,
這種努力是白折騰。我非常贊同,這也就是我開頭說的,『埋頭做事,抬頭看路』,得時(shí)刻推演,推演現(xiàn)在做的事情,能否對未來產(chǎn)生有效影響,或者說,未來有個(gè)
目標(biāo),反推現(xiàn)在要做哪些儲(chǔ)備。</p>\n<p>所以,努力說白了就是進(jìn)行資源的積累,而我們得時(shí)刻復(fù)盤自己的經(jīng)歷,結(jié)合當(dāng)前自
身情況和外部環(huán)境,看看哪些是無用的資源,哪些是有效的資源。這方面我有些零碎的觀點(diǎn),稍作個(gè)總
結(jié)</p>\n<blockquote><ol><li>時(shí)間最寶貴,避免低回報(bào)高耗時(shí)的行為(比如大
學(xué)生兼職發(fā)傳單),必要時(shí)候以金錢換時(shí)間,而不是以時(shí)間換金錢</li>\n<li>勿投入太多精力在超出自己理解能力的非理性
群體行為(如全民炒股,萬眾創(chuàng)業(yè),福島核電事故瘋狂買鹽,瘋狂炒房)</li>\n<li>Matter what
really matters. 這是我在 Ted
聽一個(gè)哈德遜航班事故幸存者演講反復(fù)提到的,就不翻譯了</li>\n<li>自己深愛的至親、愛人、子女,是可以無條件付出大
量金錢、時(shí)間、精力的</li>\n<li>人生起步階段,應(yīng)該多在自己擅長的領(lǐng)域深耕,用爛俗的話叫『投資自己』<
/li>\n<li>基于上一點(diǎn),不要迷信什么『人脈』,不用刻意攀附level比你高的人,反面例子請參考芮成鋼同學(xué)。<
/li>\n</ol></blockquote>\n<p>以上是我給大家分享的一點(diǎn)人生經(jīng)驗(yàn)。<
/p>\n<img src=\"v2-37874bc7b05581642d277561f844f685.jpg\"
data-rawwidth=\"480\"
data-rawheight=\"480\"><br><p>順便,我想了想<strong>自己寫公眾號(hào)
的動(dòng)機(jī)</strong>,雖然更新不頻繁,但其實(shí)前前后后已經(jīng)投入了非常多的精力,我沒真正想過它能給我?guī)硎裁?#xff0c;也許,分享我的觀點(diǎn)、技
術(shù)文章,對我而言,本身就是一種純粹的快樂吧,或者用本文的話說就是——折騰人生,豐富經(jīng)歷。</p>\n<h2>后記<
/h2>\n<p>近一年來,腦海里一直在盤旋這些觀點(diǎn),或完善或推倒。三個(gè)月前『寫在入職一周年』一文里,我分享過一些,但并不深
入,今天終于好好展開了,一字一字地寫下這些觀點(diǎn)。也許以我的年齡和文筆,這些話顯得稚嫩和說教,甚至口口聲聲說杜絕雞湯,但還是有雞湯的嫌疑。但無所
謂,這就是成長。有意識(shí)地思考,總比渾渾噩噩或惶惶不可終日要好。如果能給大家?guī)硪稽c(diǎn)啟發(fā),也算是做了一點(diǎn)微小的
貢…</p>\n<br>","updated":"2017-07-06T05:58:50.000Z","canComment":false,"commentPermission":"anyone","commentCount":11,"likeCount":13,"state":"published","isLiked":false,"slug":"27728292","isTitleImageFullScreen":false,"rating":"none","sourceUrl":"","publishedTime":"2017-07-06T13:58:50+08:00","links":
{"comments":"/api/posts/27728292/comments"},"url":"/p
/27728292","titleImage":"https://pic3.zhimg.com
/v2-1654ee477b6081ddc26eb836a698936e_r.jpg","summary":"","href":"/api
/posts/27728292","meta":
{"previous":null,"next":null},"snapshotUrl":"","commentsCount":11,"likesCount":13}},"User":
{"DataTerminatorX":{"isFollowed":false,"name":"穆文","headline":"老和山渣碩下山,
剛摸到DM的門, 給Jack馬搬過磚, 給三石打過雜,
現(xiàn)在教機(jī)器說話","avatarUrl":"https://pic2.zhimg.com
/v2-7e6a8fac68529b7c0856d6bd7d8c16b1_s.jpg","isFollowing":false,"type":"people","slug":"DataTerminatorX","bio":"
自由意志,
公眾號(hào):數(shù)據(jù)挖掘機(jī)養(yǎng)成
記","hash":"c7cdf56b61d269758b8ddcc8c212a6d5","uid":28142592851968,"isOrg":false,"description":"
老和山渣碩下山, 剛摸到DM的門, 給Jack馬搬過磚, 給三石打過雜,
現(xiàn)在教機(jī)器說話","profileUrl":"https://www.zhihu.com/people
/DataTerminatorX","avatar":
{"id":"v2-7e6a8fac68529b7c0856d6bd7d8c16b1","template":"https://pic2.zhimg.com
/{id}_{size}.jpg"},"isOrgWhiteList":false}},"Comment":{},"favlists":
{}},"me":{},"global":{},"columns":{"DataMiner-X":{"pins":
[],"followersCount":541,"creator":{"bio":"自由意志,
公眾號(hào):數(shù)據(jù)挖掘機(jī)養(yǎng)成
記","isFollowing":false,"hash":"c7cdf56b61d269758b8ddcc8c212a6d5","uid":28142592851968,"isOrg":false,"slug":"DataTerminatorX","isFollowed":false,"description":"
老和山渣碩下山, 剛摸到DM的門, 給Jack馬搬過磚, 給三石打過雜,
現(xiàn)在教機(jī)器說話","name":"穆文","profileUrl":"https://www.zhihu.com/people
/DataTerminatorX","avatar":
{"id":"v2-7e6a8fac68529b7c0856d6bd7d8c16b1","template":"https://pic2.zhimg.com
/{id}_{size}.jpg"},"isOrgWhiteList":false},"topics":[{"url":"https:
//www.zhihu.com/topic/19559450","id":"19559450","name":"機(jī)器學(xué)習(xí)"},
{"url":"https://www.zhihu.com/topic/19553534","id":"19553534","name":"數(shù)據(jù)
挖掘"},{"url":"https://www.zhihu.com/topic
/19552832","id":"19552832","name":"Python"}],"activateState":"activated","href":"
/api/columns/DataMiner-
X","acceptSubmission":true,"firstTime":false,"postTopics":
[{"postsCount":1,"id":350,"name":"人工智能"},
{"postsCount":1,"id":1546,"name":"人生"},
{"postsCount":1,"id":3084,"name":"機(jī)器學(xué)習(xí)"},
{"postsCount":1,"id":3279,"name":"自然語言處理"},
{"postsCount":1,"id":163534,"name":"王者榮耀"}],"pendingName":"","avatar":
{"id":"v2-7a3874bffded4f3cd86047890905dddd","template":"https://pic2.zhimg.com/{id}_{size}.jpg"},"canManage":false,"description":"select『優(yōu)質(zhì)文章』 from
公眾號(hào)『數(shù)據(jù)挖掘機(jī)養(yǎng)成記』","pendingTopics":
[],"nameCanEditUntil":0,"reason":"","banUntil":0,"slug":"DataMiner-
X","name":"數(shù)據(jù)挖掘機(jī)養(yǎng)成記","url":"/DataMiner-X","intro":"歡迎來到我的 Mind
Palace","topicsCanEditUntil":0,"activateAuthorRequested":"none","commentPermission":"anyone","following":false,"postsCount":2,"canPost":false,"FULLINFO":true}},"columnPosts":{"DataMiner-X":{"entity":["27728292","26306795"]}},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[]},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{}}
《新程序員》:云原生和全面數(shù)字化實(shí)踐 50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔 為你收集整理的秒懂词向量Word2vec的本质 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。