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

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

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

栗子 發自 凹非寺

量子位 出品 | 公眾號 QbitAI

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

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

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

“關于word2vec,你所知道的一切都是錯的?!?/strong>

“關于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) ,用偽代碼的部分,和實現的差別到底在哪,也會詳細說明。后來,人們便開始走遠了。有些論文的算法,要么是工作原理不像描述那樣,要么是效率低到沒法用??丛创a的時候也會發現,不是論文說的那回事。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技術和產品新動態

版權所有,未經授權不得以任何形式轉載及使用,違者必究。
国产精品久久久久久久免费大片 | 欧美精品入口蜜桃| 国产成人精品一区二区在线| 丁香一区二区三区| 国产v亚洲v天堂无码久久久| 亚洲国产一区二区三区四区| 亚洲精品成人电影| 国产av熟女一区二区三区| 9191精品国产综合久久久久久 | 国产成人午夜视频网址| 日韩福利视频网| 亚洲精品天堂成人片av在线播放| 欧美一区二区三区四区高清| 日批视频免费观看| 亚洲一区二区三区加勒比| 午夜av区久久| 丝袜美腿小色网| 国产精品对白刺激久久久| 亚洲图片一区二区| 羞羞影院体验区| 中文字幕色一区二区| 精品人伦一区二区色婷婷| 特黄视频在线观看| 视频区 图片区 小说区| 国产91色在线免费| 欧美日韩裸体免费视频| 国产精品欧美久久久久天天影视 | 精品久久久久久久久久久久久久久| 国产三级自拍视频| 乱子伦视频在线看| 久久久久久亚洲精品中文字幕| 91在线国产观看| 中文字幕在线有码| 成人在线视频一区二区三区| 日韩在线激情视频| 亚洲免费观看高清完整| av天堂一区二区三区| 1314成人网| 精品国产_亚洲人成在线| 精品国产乱码久久久久久夜甘婷婷 | 中文字幕乱码久久午夜不卡 | 欧美日韩在线观看一区二区 | 国产精品123| 韩国女同性做爰三级| 亚洲自拍另类欧美丝袜| 亚洲精品国产精品国自产在线 | 欧美一区二区三区免费视| 亚洲成人自拍网| 欧美一级片免费在线观看| 亚洲综合av一区| 性欧美xxxx交| 欧美精选午夜久久久乱码6080| 久久99热国产| 国产成人在线观看网站| 少妇一级淫免费放| eeuss一区二区三区| 亚洲精品中文字幕av| 91蝌蚪国产九色| 丰满熟妇乱又伦| 一级性生活免费视频| 六月婷婷在线视频| 91久久久精品| 久久视频免费观看| 91麻豆精品国产91久久久久| 国产精品丝袜91| 农村少妇久久久久久久| 国产主播在线播放| 国产精品嫩草影视| 色涩成人影视在线播放| 欧美肥婆姓交大片| 911精品国产一区二区在线| 亚洲视频每日更新| 国产成人综合亚洲网站| 精品二区在线观看| 紧身裙女教师波多野结衣| 日韩毛片在线免费看| 成人av影视在线| 爱福利视频一区| 在线观看91精品国产入口| 久久美女高清视频| 国产黄色一区二区| caoporn91| 亚洲一区精品视频在线观看| 亚洲美女自拍偷拍| 国产乱码精品一区二区三区日韩精品 | 青娱乐国产91| 亚洲iv一区二区三区| 性色av一区二区三区| 最近中文字幕日韩精品| 精品国产亚洲在线| 欧美日韩国产综合视频在线观看| 亚洲成人综合视频| 亚洲欧美中日韩| 99亚偷拍自图区亚洲| 国产精品一二三四区| 久久99精品一区二区三区三区| 五月天婷婷视频| av动漫在线看| 国产精品一区久久| 性欧美暴力猛交69hd| 亚洲色图第三页| 日韩亚洲电影在线| 欧洲精品一区二区| 一级中文字幕一区二区| 中文字幕免费观看一区| 国产在线麻豆精品观看| 狠狠狠色丁香婷婷综合久久五月| 亚洲AV无码国产成人久久| 中文字幕乱码一区| 在线观看国产免费视频| 国产乱了高清露脸对白| 美女被到爽高潮视频| 女同久久另类69精品国产| 欧美黑人性猛交xxx| 91视频综合网| 五月天婷婷综合网| 亚洲中文一区二区三区| 亚洲av无码一区二区三区性色| 国产农村妇女毛片精品| 国产成人三级一区二区在线观看一| 亚洲天堂avav| 一本色道久久综合熟妇| 亚洲av无码乱码国产精品fc2| 免费中文字幕在线| 毛片在线免费视频| 国产伦精品一区二区三区视频痴汉| 国产视频在线观看视频| 天堂成人免费av电影一区| 国产精一品亚洲二区在线视频| av在线播放成人| 樱花影视一区二区| 欧美影院午夜播放| 精品呦交小u女在线| 久久69精品久久久久久久电影好| 欧美激情亚洲视频| 国产精品com| 国产精品入口尤物| 2022国产精品| 99热在线播放| 亚洲一区三区在线观看| xxxx一级片| 精品人妻中文无码av在线| 国产乡下妇女做爰毛片| av网站免费播放| 日韩中文字幕区一区有砖一区| 久久久午夜电影| 欧美人与禽zozo性伦| 久久精品国产69国产精品亚洲| 国产精品视频在线观看| 亚洲欧洲日韩精品| 日韩av片网站| 精品国产视频在线观看| 亚洲国产精品无码久久| 99re热视频这里只精品| 色哟哟国产精品免费观看| 在线视频中文亚洲| 国产精品专区第二| 日本公妇乱淫免费视频一区三区| 精品久久一二三| 白白色免费视频| 婷婷综合激情网| 亚洲欧美福利一区二区| 日韩精品亚洲视频| 国产精品中文字幕久久久| 999久久欧美人妻一区二区| 国产伦精品一区二区三区88av| 亚洲36d大奶网| jizz国产在线观看| 91在线porny国产在线看| 欧美刺激午夜性久久久久久久| 欧洲中文字幕国产精品| 国产精品无码乱伦| 青青青视频在线播放| 日本不卡免费在线视频| 欧美在线免费观看亚洲| 国产精品久久久久国产a级| 丁香婷婷激情网| 中文字幕在线看人| 久久午夜羞羞影院免费观看| 亚洲第五色综合网| 国产成人精品自拍| 超碰在线资源站| 激情五月俺来也| 无码免费一区二区三区| av成人免费在线| 精品国产乱码久久久久久影片| 日韩免费观看网站| 波多结衣在线观看| 国产ts变态重口人妖hd| 国产精品素人一区二区| 日日骚久久av| 欧美日韩性生活片| 国产强伦人妻毛片| 欧洲中文字幕精品| 97自拍视频| 狠狠人妻久久久久久综合蜜桃| 人人精品人人爱| 亚洲成人教育av| 性欧美18一19内谢| 69视频免费在线观看| 亚洲欧洲99久久| 国产精品电影网站| 中文字幕一区三区久久女搜查官| 国产一区二区在线观看免费| 日韩电影中文字幕| 日韩国产精品一区二区三区| 国产jizz18女人高潮| 国产精品自拍网站| 日韩在线观看免费全| 免费看一级大黄情大片| 欧美性猛交 xxxx| 亚洲成人激情视频| 2019中文字幕免费视频| 国产欧美久久久久| 日韩精品一区二区三区国语自制| 成人午夜视频福利| 精品国产欧美一区二区三区成人| 日韩精品综合在线| 一本色道久久综合精品婷婷| 国产精品成人免费| 亚洲japanese制服美女| 中文天堂资源在线| 亚洲欧美另类久久久精品| 3d动漫啪啪精品一区二区免费| 久久精品在线观看视频| 中文字幕欧美日韩一区| 亲爱的老师9免费观看全集电视剧| 蜜桃福利午夜精品一区| 麻豆精品久久精品色综合| 国产亚洲人成网站在线观看| 欧美中文字幕在线观看视频| 国产伦精品一区二区三区免.费| 欧美一区二区三区免费视频| 四虎4hu永久免费入口| 人人妻人人玩人人澡人人爽| 亚洲欧美另类在线观看| gogogo高清免费观看在线视频| 国产乱一区二区| 久久免费视频网| 黑人巨大精品欧美| 亚洲精品网站在线观看| 狠狠色综合欧美激情| 国产99免费视频| 日韩精品一区二区三区swag | 午夜精品久久久久久久久久久久久 | 91超碰在线免费观看| 中文字幕+乱码+中文乱码www| 精品视频在线播放免| 日本免费色视频| 欧美激情一区二区三区蜜桃视频| 成人在线国产精品| 无码人妻精品一区二区三区蜜桃91| 日韩欧美在线视频观看| 亚洲一区二区精品在线观看| 久久电影网电视剧免费观看| 国产精品自在线| 999久久久久久| 欧美激情欧美激情| 久久久久国产精品夜夜夜夜夜| 91福利区一区二区三区| 亚洲国产精品久久久久婷蜜芽| 成人高清在线视频| 国产在线一区二区三区播放| 日本熟女毛茸茸| 精品中文字幕在线观看| 免费不卡亚洲欧美| 五月天婷婷网站| 日韩精品免费在线观看| 日本在线不卡一区二区| 精品久久久久久久久久ntr影视| 欧美成人高潮一二区在线看| 久久色.com| 日韩精品久久一区| 蜜桃精品视频在线| 精品国产电影| 久久一夜天堂av一区二区三区| 成人在线观看www| 国产一区二区在线观看视频| 久精品国产欧美| 国产一本一道久久香蕉| 欧美在线日韩精品| 狠狠色伊人亚洲综合成人| 波多野结衣久草一区| 国产成人av电影在线| 国产av不卡一区二区| 亚洲精品成a人| 老司机av网站| 91精品国产丝袜白色高跟鞋| 国产成人免费在线观看视频| 日韩综合中文字幕| 一区二区 亚洲| 国产欧美精品日韩| 成人黄色在线观看视频| 超碰在线观看97| 久久久国产精品不卡| 国产九九热视频| 色综合一个色综合亚洲| 亚洲一级Av无码毛片久久精品| 欧美一区二区美女| 免费网站观看www在线观| 欧美激情aaaa| 日本不卡一区二区三区| 亚洲精品蜜桃久久久久久| 一本大道久久a久久精品综合| 97人妻人人揉人人躁人人| 日韩电影中文 亚洲精品乱码| 波多野结衣绝顶大高潮| 国产精品女主播| 99久久er热在这里只有精品15 | 18成人在线| 成人av第一页| 欧美在线a视频| 一区二区福利视频| 国产一区二区网站| 欧美日韩一区二区三区在线观看免 | 精品一区二区日韩| 成年人网站大全| 在线不卡的av| 一级特黄免费视频| 不卡视频一区二区三区| 亚洲黄色小说网站| 1024手机在线观看你懂的| 久久久久久久成人| av成人老司机| 中文人妻一区二区三区| 午夜精品久久久久久久白皮肤| 国产一区二区三区在线观看免费| 久久久久久久久久久99| 精品国产1区二区| 99久久国产热无码精品免费| 天堂资源在线亚洲视频| 91.麻豆视频| 亚洲精品喷潮一区二区三区 | 欧美专区日韩专区| 中文字幕乱伦视频| 亚洲成人第一| 91精品国产黑色紧身裤美女| 伊人亚洲综合网| 欧美变态另类刺激| 欧美成人激情视频免费观看| 国产不卡视频一区二区三区| 国产熟女高潮一区二区三区 | 成人黄色av播放免费| 一区二区成人在线| 国产一卡二卡三卡| 久久精品在线免费视频| 一个色综合导航| 久久综合狠狠综合久久激情| 日韩三级在线观看视频| 国产九区一区在线| 欧美一区在线视频| 麻豆国产精品官网| 91玉足脚交白嫩脚丫| 亚洲自拍偷拍色片视频| 亚洲高清不卡在线观看| 国产精品乱码一区二区视频| avav在线播放| 国产一区二区av| 国产欧美精品国产国产专区| 久久久久久亚洲av无码专区| 日本黄大片一区二区三区| 亚洲福利小视频| 激情欧美日韩一区二区| 91九色蝌蚪porny| 青青草国产精品一区二区| 亚洲国产日韩在线一区模特| 精品久久国产视频| 国产调教打屁股xxxx网站| 欧美一级片一区| 一区二区三区久久| 欧美在线 | 亚洲| 精品一区二区三区蜜桃在线| 亚洲欧洲精品在线| 日韩中文字幕在线视频播放| 99re热这里只有精品免费视频| 欧美成人午夜精品免费| 99视频免费观看蜜桃视频| 欧美日韩国产首页| 日韩国产欧美一区二区三区| 国产传媒视频在线 | 亚洲四区在线观看| 国产精品久久久久久免费免熟| 亚洲欧美高清在线| 麻豆精品传媒视频| 欧美另类第一页| 亚洲成a人片综合在线| 国内外成人在线视频| 欧产日产国产69| 日韩av无码一区二区三区不卡 | 草视频在线观看| 三年中国国语在线播放免费| 国产综合欧美在线看| 亚洲片在线资源| 中文字幕一区二区在线观看| 99产精品成人啪免费网站| 波多野结衣办公室双飞 | 久久精品国内一区二区三区| 国产福利视频网站| 国产精品裸体瑜伽视频| 精品一区二区久久久久久久网站| 亚洲精品动漫久久久久| 国产精品日日摸夜夜摸av| 国产裸体无遮挡| 少妇真人直播免费视频| 国产精品久久久毛片| 欧洲一区二区日韩在线视频观看免费 | 国产欧美亚洲日本| 日韩中文在线视频| 91精品国产综合久久精品app| 日韩一区有码在线|