1. 程式人生 > >Word2Vec的一些個人學習心得

Word2Vec的一些個人學習心得

本文只從原理上進行推導公式,儘量使用通俗易懂的語言進行講解。

預備知識

詳見word2vec中的數學原理詳解
- sigmoid函式
- logistics迴歸
- Bayes公式
- Huffman編碼

詞向量的理解

在NLP任務中,我們將自然語言交給機器學習演算法來處理,但是機器無法直接理解文字語言,我們要做的工作就是將語言數學化,簡單來說,就是為每個詞進行唯一的編碼,這個唯一編碼也稱之為詞向量。有兩種詞向量的表示方法:

  • One-hot represention。
    基本思想是:通過訓練將某種語言中的每一個詞對映成一個固定長度的短向量,這個短向量除了某一維為1之外,其他元素全部為0。
  • Distributed represention。
    基本思想與One-hot represention相似,但是每個短向量有大量非零分量。Distributed represention其實就是把一起稀疏矩陣變成了一個稠密矩陣。

詞向量,通俗來講,就是對語料庫中每個詞的編碼

統計語言模型

統計語言模型是用來計算一個句子出現的概率的概率模型。假設W=wT1:=(w1,w2,,wT) 表示有T個詞w1,w2,,wT 按順序構成一個句子,則w1,w2,,wT 的聯合概率密度

p(W)=p(wT1)=p(w1,w2,,wT)
利用Bayes公式,上式可以被鏈式分解為
p
(wT1)=p(w1)(w2|w1)(w3|w21)p(wT|wT11)

其中的概率p(w1),p(w2|w1),,p(wT|wT11) 就是語言模型的引數,給定一個句子wT1 就可以很快地算出相應的p(wT1)
接下來是怎麼計算這些引數的問題了,常見的方法有n-gram模型、決策樹、最大熵模型、最大熵馬爾科夫模型、條件隨機場、神經網路等方法。
我們先考慮n-gram模型。

n-gram模型

考慮p(wk|wk11)(k>1) 的計算。利用Bayes公式,有

p(wk|wk11)=p(wk1)p(wk11)(1)
根據大數定理,當語料庫足夠大的時候,p
(w1|wk11)
可近似地表示為p(w1|wk11)=count(wk1)count(wk11)
其中count(wk1)count(wk11) 分別表示詞串wk1wk11 在語料庫中出現的次數。
這樣計算雖然簡單了許多,但是依舊很耗時,接下來應該是n-gram模型出場了。
從公式(1)我們可以看出,一個詞出現的概率與它前面所有的詞都相關。我們可不可以假定一個詞出現的概率只與它前面固定數目的詞相關呢?根據n-1階的Markov假設,認為一個詞的出現概率只與它前面的n-1個詞相關,即p(wk|wk11)p(wk1kn+1)
於是,p(wk|wk11)count(wk

相關推薦

Word2Vec一些個人學習心得

本文只從原理上進行推導公式,儘量使用通俗易懂的語言進行講解。 預備知識 詳見word2vec中的數學原理詳解 - sigmoid函式 - logistics迴歸 - Bayes公式 - Huffman編碼 詞向量的理解

JavaScript個人學習心得

以下為本人學習JS的一些個人心得    Js全稱JavaScript,是一門主要負責網頁行為的指令碼語言(指令碼語言就是隻能依託於其他語言才能產生作用,無法獨立使用的語言)。相關有DOM模型 ,即document object model(文件物件模型),一個HTML在JS

與WCAG相關的一些學習心得

mis text 閃爍 wave 什麽 inf blog 行動 ... 1.什麽是 WCAG? WCAG全稱Web Content Accessibility Guidelines 網頁內容無障礙瀏覽準則,簡單的說就是為了方便殘障人士(包括低視患者,盲人,聾人,學習障礙,行

QT | 一些學習心得

能夠 柵格 post central 位置 you get http 中控 1. 如何使控件隨著窗口大小變化而自動填充? 選中控件中最外層的那個控件,如centralWidget(不要去選中內部的小控件,這樣能夠保證內部的相對位置) 然後對centralWidget選擇布局

【知識小結】Git 個人學習筆記及心得

art over round TP 緩存 PE QQ 的區別 rda https://mp.weixin.qq.com/s/D96dXYfu3XAA4ac456qo0g git架構 工作區:就是你在電腦裏能看到的目錄。 版本庫:工作區有一個隱藏目錄.git,,而是

馬哥學習----李洋個人筆記----ansible學習心得

server books 出錯 pts images 此外 .com handlers play 自動運維化工具 ansible LINUX發展趨勢:越來越強大的工具,通過子命令來實現,而不是通過選項。 ANSIBLE擁有上千個模塊(子命令),ANSIBLE適用於200臺機

馬哥學習----李洋個人筆記----DNS學習心得

完整 client dom 回復 can 保存 lib 外網 更新 DNS服務 DNS:Domain Name Service 是應用層協議 基於C/S(客戶端/服務端來實現),共有2個端口分別是 53/udp以及 53/tcp BIND:Bekerley Internat

關於分散式系統的一些學習心得-筆記

分散式系統(distributed system)是建立在網路之上的軟體系統。處理各項協助的任務,然後整合出結果 分散式系統是一個複雜且寬泛的研究領域,學習分散式系統通常要從兩個方面來入手 1. 近些年分散式系統領域都在做些什麼。2. 為什麼現在投入分散式系統的學習和研究是值得的。

分享雲及人工智慧的一些學習資源和學習心得

    很久沒寫新的東西了。這段時間除了適應新的工作,其他時間都獻給了各種學習~ 在這個提倡終身學習的年代,面對急劇更新的IT行業,不學點雲端計算和人工智慧啥的,總感覺會被時代拋棄。     所以,終於找到個空閒時間,在有WiFi的“復興號”上開始一

web開發中webpack的一些個人心得

一.webpack是什麼? webpack是一個現代js應用程式的靜態模組打包器; 它的功能是:分析專案結構,找到js模組以及其他一些瀏覽器不能直接執行的拓展語言(sass,TypeScript,less),並將它們打包為合適的格式以供瀏覽器使用。 構建: 就

【邱石的專欄】愛生活,愛分享,愛家人,愛自學。本人從2013年6月開始自學java Android至今,隨著學習的深入,自己的技術也慢慢增強,在這裡與大家分享個人學習心得,望共進步。

邱石的專欄 愛生活,愛分享,愛家人,愛自學。本人從2013年6月開始自學java Android至今,隨著學習的深入,自己的技術也慢慢增強,在這裡與大家分享個人的學習心得,望共進步。...

個人FPGA學習心得

FPGA目前非常火,各個高校也開了FPGA的課程,但是FPGA並不是每個人都適合,FPGA講究的是一個入道,入什麼道,入電子設計的道,就是說,這個過程,你得從電子設計開始,然後再學FPGA,而不是先從VHDL開始,直接跳過數電模電.這一點非常重要,這涉及到你以後的

Java的一些學習心得

俗話說的好,勤能補拙。這話放到Java學習中非常適用,眾所周知,專業的培訓都是高強度的培訓,想要吸收一天的學習內容也並非容易,但是確實有人可以做到。是誰?勤奮的人!勤奮的人可以利用課下時間梳理所學知識,整理學習問題,每天比別人都多學一點點,多鞏固一點點,日積月累自然比周邊懶惰的人優越,更有就業優勢。

Git 個人學習筆記及心得

一、認識 GitHub Git 是個版本控制系統,說明白點就是進行程式碼的各種管理,比如你寫錯程式碼回滾啊、追尋 bug 是哪個傢伙造成的啊(邪惡臉)、合併別人程式碼等等,達到協同進行軟體的開發工作。再多說幾句,版本管理控制系統分為「集中式版本控制系統」和「分

SVM的一些學習心得及案例(Python程式碼)實現

1、基本概念 向量的內積即一個向量在另一個向量上的投影乘上被投影向量的模,上圖不管是a投影在b上,還是b投影在a上,其結果是一樣的,原理參照 B站上 a∙b = (a1e1 + a2e2)∙(b1e1 + b2e2)            = a1b1e1e1 

關於個人學習開發SharePoint的一些資源

開始學習sharepoint後,我決定將我的個人電腦上也部署一套開發系統,這樣回家也可以學習些東西。因此寫點關於部署sharepoint需要資源的文字供初學sharepoint的童鞋一起進步,以避免各位跟我一樣下很多無用軟體,走很多彎路!我這裡提供的都是我正在使用的可用的資

關於Netty的一些學習心得

最近開始學習一個新的框架,為了防止自己學過之後就忘的壞習慣,所以寫一些心得在這裡。1.首先Netty是個什麼東西呢?假設你正在為一個重要的大型公司開發一款全新的任務關鍵型的應用程式。在第一次會議上,你得知該系統必須要能夠擴充套件到支撐 150 000 名併發使用者,並且不能有

學習演算法的心得個人學習的重要里程碑)

                                     學習演算法的心得之-------模板 何為模板?為什麼要總結模板?模板需要像語文一樣背誦嗎?運用模板不就意味著自己做了很多道題

個人學習c語言的一些經驗!

對於一些想學習程式的朋友來說,剛剛開始學習程式的時候,是要走挺多彎路的,因為程式這一塊的確學習下來要吃挺多的苦,還要有研究和攻克問題的決心,對於c語言,相信很多朋友都感覺到很熟悉,因為在學習程式的時候,開始就要接觸c語言,因為c語言,確實與很多語言有更多相同點,同時學習了c

Python爬蟲初步個人學習心得

自從畢設開始搞了Python之後就覺得這個東西值得研究。但是畢設的東西非常的淺顯,個人覺得最值得訓練的還是Python的爬蟲,謹以此開篇,作為學習和練習Python的起步。——————————學習分割線————————————第一次學習的是Python爬取圖片資訊。網上有很多