色综合中文综合网_性猛交娇小69hd_久久精品99久久久久久_欧美日韩精品一区二区三区四区 _97视频色精品_国产高清精品久久久久_日日鲁鲁鲁夜夜爽爽狠狠视频97 _国产成人免费视频精品含羞草妖精 _熟女少妇在线视频播放_精品人妻一区二区三区麻豆91 _久久女同性恋中文字幕_一区二区福利视频

“關于word2vec都是錯的”:論文和代碼天壤之別,是普遍現象了?

在他看來,論文里的算法解釋,和代碼實現一比,講的根本是兩回事。

栗子 發自 凹非寺

量子位 出品 | 公眾號 QbitAI

word2vec是谷歌2013年開源的語言工具。

兩層網絡,就能把詞變成向量,在NLP領域舉足輕重,是許多功能實現的基礎。

可是現在,有一位叫做bollu (簡稱菠蘿) 的程序員,大聲對世界說:

“關于word2vec,你所知道的一切都是錯的。”

“關于word2vec都是錯的”:論文和代碼天壤之別,是普遍現象了?

在他看來,論文里的算法解釋,和代碼實現一比,講的根本是兩回事。

是不是只要開源了代碼,論文寫不寫清楚都沒關系?

一番仔細的論述,引起了許多人的討論和共鳴,不出半日Hacker News熱度已近300點:

“關于word2vec都是錯的”:論文和代碼天壤之別,是普遍現象了?

那么,菠蘿的世界觀是怎樣崩塌的,他眼里真實的word2vec是什么樣子呢?

不一樣的天空

word2vec有種經典解釋?(在Skip-Gram里、帶負采樣的那種) ,論文和數不勝數的博客都是這樣寫的:

“關于word2vec都是錯的”:論文和代碼天壤之別,是普遍現象了?

只能看出有兩個向量。

可程序員說,看了word2vec最原本的C語言實現代碼,就會發現完全不一樣。

(多數用word2vec做詞嵌入的人類,要么是直接調用C實現,要么是調用gensim實現。gensim是從C實現上翻譯過來的,連變量的名字都不變。)

C實現長這樣

每個單詞有兩個向量,分別有不同的角色:

一個表示這個詞作為中心詞?(Focus Word) 時的樣子。

一個表示它作為另一個中心詞的上下文?(Context Word) 時的樣子。

菠蘿說:耳熟吧,GloVe就是借用了這里的思路,只是沒有誰明確說出來而已。

在C語言的源代碼里,設定已經非常完好,這些向量由兩個數組?(Array) 分別負責:

syn0數組,負責某個詞作為中心詞時的向量。是隨機初始化的。

syn1neg數組,負責這個詞作為上下文時的向量。是零初始化的。

https://github.com/tmikolov/word2vec/blob/20c129af10659f7c50e86e3be406df663beff438/word2vec.c#L369
for (a = 0; a < vocab_size; a++) for (b = 0; b < layer1_size; b++) {
next_random = next_random * (unsigned long long)25214903917 + 11;
syn0[a * layer1_size + b] = 
 (((next_random & 0xFFFF) / (real)65536) - 0.5) / layer1_size;
 }

訓練的話,要先選出一個中心詞。在正、負樣本訓練的時候,這個中心詞就保持不變 (Constant) 了。

中心詞向量的梯度?(Gradients) ,會在緩沖器 (Buffer) 里累積起來。經過正、負樣本的作用之后,這些梯度會被應用到中心詞上:

1if (negative > 0) for (d = 0; d < negative + 1; d++) {
 2 // if we are performing negative sampling, in the 1st iteration,
 3 // pick a word from the context and set the dot product target to 1
 4 if (d == 0) {
 5 target = word;
 6 label = 1;
 7 } else {
 8 // for all other iterations, pick a word randomly and set the dot
 9 //product target to 0
10 next_random = next_random * (unsigned long long)25214903917 + 11;
11 target = table[(next_random >> 16) % table_size];
12 if (target == 0) target = next_random % (vocab_size - 1) + 1;
13 if (target == word) continue;
14 label = 0;
15 }
16 l2 = target * layer1_size;
17 f = 0;
18
19 // find dot product of original vector with negative sample vector
20 // store in f
21 for (c = 0; c < layer1_size; c++) f += syn0[c + l1] * syn1neg[c + l2];
22
23 // set g = sigmoid(f) (roughly, the actual formula is slightly more complex)
24 if (f > MAX_EXP) g = (label - 1) * alpha;
25 else if (f < -MAX_EXP) g = (label - 0) * alpha;
26 else g = (label - expTable[(int)((f + MAX_EXP) * (EXP_TABLE_SIZE / MAX_EXP / 2))]) * alpha;
27
28 // 1. update the vector syn1neg,
29 // 2. DO NOT UPDATE syn0
30 // 3. STORE THE syn0 gradient in a temporary buffer neu1e
31 for (c = 0; c < layer1_size; c++) neu1e[c] += g * syn1neg[c + l2];
32 for (c = 0; c < layer1_size; c++) syn1neg[c + l2] += g * syn0[c + l1];
33}
34// Finally, after all samples, update syn1 from neu1e
35https://github.com/tmikolov/word2vec/blob/20c129af10659f7c50e86e3be406df663beff438/word2vec.c#L541
36// Learn weights input -> hidden
37for (c = 0; c < layer1_size; c++) syn0[c + l1] += neu1e[c];

那么問題來了,為什么是隨機初始化,為什么是零初始化

關于初始化

這些東西,也沒見論文和博客里講過,菠蘿只能自己推測了一下:

因為負樣本 (Negative Sample) 來自全文上下,并沒太根據詞頻來定權重,這樣選哪個單詞都可以,通常這個詞的向量還沒經過多少訓練。

而如果這個向量已經有了一個值,那么它就可以隨意移動 (Move Randomly) 中心詞了。

解決方法是,把所有負樣本設為零,這樣依賴只有那些比較高頻出現的向量,才會影響到另外一個向量的表征。

程序員說,如果是這樣,真的很巧妙。他也從來沒想過,初始化策略能有這么重要,讀論文也看不出。

直接看代碼,不相信論文了

“關于word2vec都是錯的”:論文和代碼天壤之別,是普遍現象了?

在這之前,菠蘿已經花了兩個月來復現word2vec,也讀了無數文章,就是不成功。

不管試了多少次,還是得不到論文說的分數。又不能認為分數是論文作者編的。

最后,他決定去仔細讀源代碼。初讀還以為打開方式錯了,因為和之前看過的資料都不一樣:

我不明白,為什么原始論文和網上的博客,都不去寫word2vec真正是怎么工作的。所以就想自己寫出來。

也是在這個過程中,他才像上文提到的那樣,發現GloVe給上下文 (Context) 一個單獨的向量這種做法,是從word2vec那里來的。

而GloVe的作者并沒有提到過這一點。

想到這里,程序員又有了新的質疑:

這樣不算學術不誠實?(Academic Dishonesty) 么?我也不知道算不算,但覺得至少是個很嚴重的問題。

傷感之余,菠蘿作出了一個機智的決定:以后先不看論文對算法的解釋,直接去讀源代碼

都是這種習慣么?

探討起論文和實現不一致的情況,一個用編譯器讀了40年論文的資深程序員 (DannyBee) ,占據了Hacker News評論區的頂樓。

他細數了這些年來,論文作者的習慣變化

早期許多算法的實現,原理都和描述相符,性能也和描述相符。只是論文會用偽代碼 (Pseudocode) ,用偽代碼的部分,和實現的差別到底在哪,也會詳細說明。后來,人們便開始走遠了。有些論文的算法,要么是工作原理不像描述那樣,要么是效率低到沒法用。看源碼的時候也會發現,不是論文說的那回事。SSAPRE就是一個典型。時至今日,大家讀起它的論文還是會覺得難懂。把源碼放進Open64編譯器去讀,也發現和論文大相徑庭 (Wildly Different) 。再后來,有了github這類社區,事情好像又朝著早期的健康方向發展了。在這樣的環境里,word2vec算個反例吧,可能他們覺得已經把代碼開源了,論文里寫不清也沒關系

緊接著,樓下便有人 (nullwasamistake) 表示,反例不止這一個:

我在實現一個哈希表排序算法的時候,發現一篇近期的論文也有類似的問題。論文里從來沒提到過,表格尺寸必須是2的n次方。而這篇研究的全部意義,似乎就是比現有的其他算法,內存效率更高。我做了2/3才發現,根本沒有比現有方法更高效,反而更差了,除非把表的尺寸調成2^n。雖然不是徹頭徹尾的騙人,但這個疏漏算是很有創意了

不過,當有人勸ta把那篇論文掛出來,這位吐槽的網友也實誠地表示:

現在批評科技巨頭有風險,以后可能還想去工作呢。

由此觀之,菠蘿是個有勇氣的少年。

傳送門

菠蘿對word2vec的完整意見發表在github上,有興趣可前去觀賞:

https://github.com/bollu/bollu.github.io

另外,還有Hacker News評論區,便于尋找更多同感:

https://news.ycombinator.com/item?id=20089515

— 完 —

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

?’?’ ? 追蹤AI技術和產品新動態

版權所有,未經授權不得以任何形式轉載及使用,違者必究。
亚洲成人免费视频| 国产一区二区丝袜高跟鞋图片| 我要看一级黄色录像| 欧美日韩免费在线观看| 杨幂一区二区国产精品| 欧美日韩国产在线看| 91免费国产精品| 国产精品福利影院| 日韩免费av一区二区三区| 国产亚洲一区字幕| 人禽交欧美网站免费| 国产精品青草久久| 只有这里有精品| 欧美日韩国产一区二区| 中文字幕第69页| 欧美黑人xxx| 18一19gay欧美视频网站| 中文在线一区二区三区| 国产亚洲视频在线观看| 天天综合天天做| 久久久久国产视频| 美女视频黄a大片欧美| 欧美中日韩免费视频| chinese国产精品| 亚洲自拍偷拍一区| 国v精品久久久网| 日本一区二区三区视频免费看| 国产精品福利一区二区| 亚洲一区二区三区蜜桃| 91超碰中文字幕久久精品| 国产一区二区伦理片| 日日躁夜夜躁aaaabbbb| 国产亚洲人成a一在线v站| 四虎免费在线视频| 91在线观看网站| 午夜久久福利影院| 久草视频在线观| 日韩久久久久久久久久久久久| 色婷婷综合久色| 亚洲一区二区天堂| 欧美日韩国产三区| 欧美精品一卡两卡| 日日夜夜精品免费| 国产超碰在线播放| 美女少妇精品视频| 日本一区二区三区dvd视频在线| 欧美性生交大片| 国产精品jizz视频| 日韩一级大片在线观看| 久久午夜影视| 黑人粗进入欧美aaaaa| 久久中文字幕在线视频| 中文字幕不卡在线| 波多野结衣电车痴汉| 亚洲成人av动漫| 日韩欧美一级二级三级久久久| 精品国产av一区二区三区| 国产高清精品在线观看| 欧美综合第一页| 色婷婷综合中文久久一本| 日本一本在线观看| 亚洲欧洲精品一区二区| 精品亚洲男同gayvideo网站| 国产成人在线免费观看| 国产乡下妇女做爰毛片| 婷婷五月色综合| 精品精品国产高清a毛片牛牛 | 2014亚洲精品| 精品亚洲va在线va天堂资源站| 手机看片一区二区| 日本69式三人交| 国产高清精品一区二区| 在线精品91av| 欧美日韩综合一区| 国产成人一区二区精品非洲| 99热这里是精品| 免费成人进口网站| 亚洲成人xxx| 一本大道久久a久久精品综合| 国产精品怡红院| 日本熟妇色xxxxx日本免费看| 日本不卡一二区| 美女100%无挡| 国产成人无码一区二区三区在线| 性欧美一区二区| 国产成人精品av久久| 久久精品99北条麻妃| 69堂成人精品免费视频| 麻豆tv在线播放| 成人精品视频一区| 国产精品视频最多的网站| 国产精品久久久久久无人区| 国产亚洲免费的视频看| 国产 高清 精品 在线 a| 丁香六月婷婷综合| 天天综合色天天| 日本a级片在线播放| 欧美成人黄色网| 免费不卡av网站| 狠狠爱免费视频| 久久激情综合网| 中文字幕精品一区二区精品| 2020国产精品久久精品不卡| 久久精品免费av| 久久99国产精品| 亚洲欧洲99久久| 老司机av福利| 夜夜嗨av一区二区三区四季av| 亚洲AV成人无码网站天堂久久| 久久久久99精品成人片| 1卡2卡3卡精品视频| 久久久成人精品视频| 自拍av一区二区三区| 人人澡人人澡人人看| 亚洲美女在线看| 国产精品suv一区二区| 91色在线视频| 激情av一区二区| 亚洲国产精品无码久久久久高潮 | 亚洲三级av在线| 蜜桃av免费看| 欧美一区二区三区四区五区| 欧美日韩免费一区二区| 欧美美女一区二区三区| 国产精品99久久免费黑人人妻| 久久精品亚洲热| 青青草成人免费视频| 91黄色激情网站| 亚洲成人动漫在线| 国产亚洲免费的视频看| 国产精品一区二区黑丝| 成人免费在线网| 亚洲欧美日韩高清| 国产成人精品www牛牛影视| 一级黄色特级片| 热久久这里只有| 丁香婷婷深情五月亚洲| 牛夜精品久久久久久久| 伊人激情综合网| 久久99国产乱子伦精品免费| 精品无码一区二区三区爱欲| 精品在线播放免费| 欧美久久久久久一卡四| 99视频精品在线| www.69av| 国产成人精品国内自产拍免费看| 中文字幕亚洲电影| 亚洲天堂成人av| 成人性生交xxxxx网站| 国产日韩欧美亚洲| 波多野结衣av一区二区全免费观看| 精品国产成人av| 亚洲成年人在线观看| 91国偷自产一区二区使用方法| 初高中福利视频网站| 在线免费一区三区| 涩视频在线观看| 国产精品av在线播放| 亚洲资源在线观看| 亚洲视频在线a| 亚洲国产精品久久| 一级黄色av片| www.一区二区三区| 国产www在线| 日韩资源av在线| 亚洲欧美一区二区三区在线| 亚洲欧美另类久久久精品| 国产精品一品二区三区的使用体验| 激情综合在线观看| 7777精品伊人久久久大香线蕉的 | 国产一二三四区在线观看| 日韩欧美成人激情| 免费看毛片网站| 无遮挡亚洲一区| 91精品国产综合久久精品| 亚洲人妻一区二区| 日韩欧美精品久久| 你真棒插曲来救救我在线观看| 在线观看免费亚洲| 午夜精品久久久久久久爽| 日韩成人手机在线| xxx一区二区| 人人妻人人澡人人爽久久av| 成人黄色av网| 亚洲在线观看av| 岛国视频一区免费观看| 狠狠色伊人亚洲综合成人| 在线免费观看日韩av| 亚洲aa在线观看| 国产中年熟女高潮大集合| 欧美人妖巨大在线| 一本加勒比北条麻妃| 国产精品免费av| 亚欧精品在线视频| 国产欧美日韩中文字幕| 天天综合天天做天天综合| www国产在线| 最近免费观看高清韩国日本大全| 国产视频精品免费播放| 欧美韩国日本综合| 国产伦一区二区| 国产精品九九视频| 日本在线xxx| 亚洲第一精品自拍| 国产精品1区2区| a级黄色免费视频| 一本色道久久综合亚洲精品婷婷| 日韩在线视频免费观看| 欧美午夜电影在线| 国外色69视频在线观看| 亚洲天堂中文在线| 91香蕉视频导航| 亚洲欧洲午夜一线一品| 99久久国产综合精品女不卡| www.国产福利| 国产成人精品在线| 色综合久久88色综合天天免费| 成人黄色在线观看视频| 丰满少妇一区二区三区| 欧洲精品亚洲精品| 欧美丰满片xxx777| 日本道精品一区二区三区| 国产精品伊人色| 毛片毛片女人毛片毛片| 午夜天堂在线视频| 欧美一区二区三区电影在线观看| 色偷偷噜噜噜亚洲男人的天堂| 亚洲国产精品久久一线不卡| 天堂av中文字幕| 国产精品九九九九九九| xxx国产在线观看| 91在线观看免费高清完整版在线观看 | 韩剧1988免费观看全集| 国产三级精品三级| 免费观看成人毛片| 日本久久久精品视频| 热久久视久久精品18亚洲精品| 欧美成人精品1314www| 国产欧美一区二区三区在线看蜜臀 | 亚洲男人天堂手机在线| 成人一区二区三区在线观看| 91tv国产成人福利| 奇米网一区二区| 国产av无码专区亚洲精品| 国产精品区免费视频| 九九热精品视频国产| 欧美v亚洲v综合ⅴ国产v| 99视频热这里只有精品免费| 中文字幕二区三区| 久久久久97国产| 亚洲午夜久久久久久久国产| 久久无码人妻一区二区三区| 日本中文不卡| 精品日本一区二区| 亚洲一区美女视频在线观看免费| 久久免费视频网站| 久久久成人av| 亚洲人成人99网站| 日韩精品在线视频美女| 7878成人国产在线观看| 国产精品视频一区二区三区不卡| 丰满人妻一区二区三区无码av| 中文字幕在线观看二区| 91热视频在线观看| 国产福利精品一区二区三区| 情侣黄网站免费看| 波多野结衣天堂| 一区二区三区四区五区视频| 欧美激情第六页| 97在线电影| 国产精品入口尤物| 亚洲永久免费观看| 国产91久久婷婷一区二区| 国产精品免费久久久久影院| 成人国产精品一区| 久久99精品国产一区二区三区| 五月天色一区| 69堂免费视频| 欧美日韩亚洲一| 国产中文字幕二区| 妺妺窝人体色777777| 天天干天天操天天做| 亚洲最大综合网| 国产主播中文字幕| 不许穿内裤随时挨c调教h苏绵| 37p粉嫩大胆色噜噜噜| 国产精品23p| 亚洲国产精品久久久久爰性色 | 国产乱码精品一品二品| 国产日韩亚洲欧美综合| 国产精品久久久久久久久动漫 | 亚洲国产精品久| 国内偷拍精品视频| 久久免费视频精品| 欧美视频一二区| 久久噜噜亚洲综合| 日本一区二区三区精品| 国产精品果冻传媒| 2021亚洲天堂| 高清在线观看日韩| 成人国产精品免费网站| 久久综合影音| 欧美国产成人在线| 亚洲福利视频一区二区| 欧美性一级生活| 久久亚洲综合国产精品99麻豆精品福利| 久久精品久久久久| 亚洲国产婷婷香蕉久久久久久| 欧美大片欧美激情性色a∨久久| 9a蜜桃久久久久久免费| 天堂在线资源视频| 国产精品2020| 国产一区二区三区日韩 | 女王人厕视频2ⅴk| 成人毛片18女人毛片| 9l国产精品久久久久麻豆| 91精品欧美综合在线观看最新| 夜夜躁日日躁狠狠久久88av| 国产中文欧美精品| 日韩欧美猛交xxxxx无码| 午夜国产福利一区二区| 精品一区二区免费在线观看| 激情成人中文字幕| 国产精品夫妻激情| 九一精品久久久| 黄色av网址在线| 国产精品亲子乱子伦xxxx裸| 亚洲欧美国产高清va在线播| 久久久99国产精品免费| 大胸美女被爆操| 成人av在线播放网站| 日韩精品一区二区三区四区 | 欧美国产激情二区三区| 九色成人免费视频| 日韩三级电影| 国产一区二区三区影院| 久久久不卡网国产精品一区| 日韩一区二区不卡| 日本欧美色综合网站免费| 国产一级在线播放| 国产99久久久国产精品| 久久精品久久久久久| 免费裸体美女网站| 亚洲av毛片成人精品| 精品国免费一区二区三区| 欧美13一14另类| 欧美日韩精品区| 亚洲综合丁香婷婷六月香| 久久久久久久久91| 久久久久免费精品| 美腿丝袜亚洲综合| 久久99久国产精品黄毛片入口| 超薄肉色丝袜足j调教99| 精品国产无码一区二区三区| 日韩欧美高清视频| 国产亚洲一区二区三区在线播放 | 男人在线观看视频| 亚洲一区二区欧美| 亚洲成人一区二区三区| 国产欧美一区二区三区视频在线观看| 天天综合天天做天天综合| 午夜精品一区二区三区四区 | 中文字幕在线不卡| 六十路精品视频| 亚洲欧美偷拍视频| 欧美精品成人一区二区三区四区| 日本在线xxx| 成人动漫中文字幕| 久久久久久午夜| 欧美黄色免费观看| 亚洲大片在线观看| 成人短视频在线观看免费| 精品一区二区三区视频在线观看| 亚洲欧美福利一区二区| 成人av在线天堂| 中文字幕电影av| 自拍偷拍亚洲在线| 在线xxxxx| 日本一区二区三区在线不卡| 欧美一级大片视频| 色婷婷粉嫩av| 亚洲伊人伊色伊影伊综合网| 狠狠色噜噜狠狠色综合久| 黄色片一区二区| 久久久久国产精品一区| 老司机精品免费视频| 亚洲综合一二三区| 国产视频在线视频| 亚洲欧美影音先锋| 国产小视频免费| 亚洲视频一区在线| 免费的一级黄色片| 国产精品对白交换视频| 久久亚洲国产成人精品无码区 | 亚洲综合在线免费观看| 成人不卡免费视频| 亚洲精品久久7777| 中国老女人av| 国产亚洲精品超碰| 日韩免费一级视频| 亚洲国产日韩a在线播放性色| 日韩精品免费播放| 91精品国产品国语在线不卡| 韩国三级hd中文字幕有哪些| 56国语精品自产拍在线观看| 亚洲综合婷婷久久| 亚洲国产精品一区二区久| 欧美在线观看不卡| 亚洲一区二区三区毛片| a在线播放不卡|