日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

06_1.Pytorch中如何表示字符串、word embedding、One - hot、Embedding(Word2vec、BERT、Glove)【学习总结】

發(fā)布時(shí)間:2024/9/27 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 06_1.Pytorch中如何表示字符串、word embedding、One - hot、Embedding(Word2vec、BERT、Glove)【学习总结】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.6.1.如何表示字符串
1.6.1.1.word embedding
1.6.1.1.1.文本表示(Representation)
1.6.1.1.2.獨(dú)熱編碼 | one-hot representation
1.6.1.1.3.整數(shù)編碼
1.6.1.1.4.什么是詞嵌入 | word embedding ?
1.6.1.1.5. 2中主流的word embedding算法
1.6.1.1.6.百度百科和維基百科
1.6.1.1.7.維基百科版本
1.6.1.2.One - hot
1.6.1.2.1.文本數(shù)據(jù)向量化
1.6.1.2.2.ont-hot編碼
1.6.1.2.3.one-hot散列技巧
1.6.1.3.Embedding
1.6.1.3.1.Word2vec
1.6.1.3.1.1.什么是Word2vec
1.6.1.3.1.2.Word2vec的2中訓(xùn)練模式
1.6.1.3.1.3.Word2vec的優(yōu)缺點(diǎn)
1.6.1.3.1.4.百度百科
1.6.1.3.2.BERT
1.6.1.3.3.Glove
1.6.1.3.3.1.什么是GloVe?
1.6.1.3.3.2.GloVe是如何實(shí)現(xiàn)的?
1.6.1.3.3.4.Glove與LSA、word2vec的比較
1.6.1.3.3.5.公式推導(dǎo)

1.6.1.如何表示字符串

主要參考博文:
https://www.bilibili.com/read/cv4053575/
https://easyai.tech/ai-definition/word-embedding/
https://easyai.tech/ai-definition/word2vec/
https://easyai.tech/ai-definition/bert/

在深度學(xué)習(xí)中字符串不好表示,要通過以下的方式來表示。

1.6.1.1.word embedding

本文轉(zhuǎn)自:https://easyai.tech/ai-definition/word-embedding/

1.6.1.1.1.文本表示(Representation)

文本是一種非結(jié)構(gòu)化的數(shù)據(jù)信息,是不可以直接被計(jì)算的。

文本表示的作用就是將這些非結(jié)構(gòu)化的信息轉(zhuǎn)化為結(jié)構(gòu)化的信息,這樣就可以針對(duì)文本信息做計(jì)算,來完成我們?nèi)粘K姷降奈谋痉诸?#xff0c;情感分析等任務(wù)。

文本表示的方法有很多種,下面只介紹3類方式:
1.獨(dú)熱編碼 | one-hot representation
2.整數(shù)編碼
3.詞嵌入 | word embedding

1.6.1.1.2.獨(dú)熱編碼 | one-hot representation

假設(shè)我們要計(jì)算的文本中一共出現(xiàn)了4個(gè)詞:貓、狗、牛、羊。向量里每一個(gè)位置都代表一個(gè)詞。所以用one-hot來表示就是:
貓: [ 1, 0 ,0 ,0 ]
狗: [ 0, 1, 0, 0 ]
牛: [ 0, 0, 1, 0 ]
羊: [ 0, 0, 0, 1 ]

但是在實(shí)際情況中,文本中很可能出現(xiàn)成千上萬個(gè)不同的詞,這時(shí)候向量就會(huì)非常長。其中99%以上都是0。

one-hot的缺點(diǎn)如下:
1.無法表達(dá)詞語之間的關(guān)系。
2.這種過于稀疏的向量,導(dǎo)致計(jì)算和存儲(chǔ)的效率都不高。

1.6.1.1.3.整數(shù)編碼

這種方法也非常好理解,用一種數(shù)字來代表一個(gè)詞,上面的例子則是:
貓: 1
狗: 2
牛: 3
羊: 4

將句子里的每個(gè)詞拼起來就是可以表示一句話的向量。
整數(shù)編碼的缺點(diǎn)如下:
1.無法表達(dá)詞語之間的關(guān)系
2.對(duì)于模型解釋而言,整數(shù)編碼可能具有挑戰(zhàn)性。

1.6.1.1.4.什么是詞嵌入 | word embedding ?

word embedding 是文本表示的一類方法。跟one-hot編碼和整數(shù)編碼的目的一樣,不過他有更多的優(yōu)點(diǎn)。

詞嵌入并不特指某個(gè)具體的算法,跟上面2種方式相比,這種方法有幾個(gè)明顯的優(yōu)勢(shì):
1.他可以將文本通過一個(gè)低維向量來表示,不像one-hot那么長。
2.語意相似的詞在向量空間上也會(huì)比較相近。
3.通用性很強(qiáng),可以用在不同的任務(wù)中。

在回顧上面的例子:

1.6.1.1.5. 2中主流的word embedding算法


?Word2vec
這是一種基于統(tǒng)計(jì)方法來獲得詞向量的方法,他是 2013 年由谷歌的 Mikolov 提出了一套新的詞嵌入方法。

這種算法有2種訓(xùn)練模式:
1.通過上下文來預(yù)測當(dāng)前詞。
2.通過當(dāng)前詞來預(yù)測上下文。

?GloVe
Glove是對(duì)Word2vec方法的擴(kuò)展,它將全局統(tǒng)計(jì)和Word2vec的基于上下文的學(xué)習(xí)結(jié)合了起來。

想要了解GloVe的三步實(shí)現(xiàn)方法、訓(xùn)練方法、和w2c的比較。

1.6.1.1.6.百度百科和維基百科

詞向量(Word embedding),又叫Word嵌入式自然語言處理(NLP)中的一組語言建模和特征學(xué)習(xí)技術(shù)的統(tǒng)稱,其中來自詞匯表的單詞或短語被映射到實(shí)數(shù)的向量。從概念上講,它涉及從每個(gè)單詞一維的空間到具有更低維度的連續(xù)向量空間的數(shù)學(xué)嵌入。

生成這種映射的方法包括神經(jīng)網(wǎng)絡(luò),單詞共生矩陣的降維,概率模型,可解釋的知識(shí)方法,和術(shù)語的顯示表示 單詞出現(xiàn)的背景。

當(dāng)用做底層輸入表示時(shí),單詞和短語嵌入已經(jīng)被證明可以提高NLP任務(wù)的性能,例如語法分析和情感分析。

1.6.1.1.7.維基百科版本

Word embedding 是自然語言處理中的重要環(huán)節(jié),它是一些語言處理模型的統(tǒng)稱,并不具體指某種算法或模型。Word embedding 的任務(wù)是把詞轉(zhuǎn)換成可以計(jì)算的向量 。從概念上講,它涉及從每個(gè)單詞一維的空間到具有更低維度的連續(xù)向量空間的數(shù)學(xué)嵌入。

生成這種映射的方法包括神經(jīng)網(wǎng)絡(luò),單詞共生矩陣的降維,概率模型,可解釋的知識(shí)庫方法,和術(shù)語的顯式表示單詞出現(xiàn)的上下文。

當(dāng)用作底層輸入表示時(shí),單詞和短語嵌入已經(jīng)被證明可以提高NLP任務(wù)的性能,例如句法分析和情感分析。

1.6.1.2.One - hot

參考博文:https://www.bilibili.com/read/cv4053575/

1.6.1.2.1.文本數(shù)據(jù)向量化

文本數(shù)據(jù)的格式是一個(gè)序列數(shù)據(jù),常見的有單詞和字符序列。如果需要應(yīng)用到深度學(xué)習(xí)網(wǎng)絡(luò)模型中,就需要將將這些序列進(jìn)行有效編碼。
這里所謂的編碼其實(shí)就將這些單詞或者字符進(jìn)行向量化
向量化:就是將文本信息轉(zhuǎn)化為數(shù)據(jù)張量信息。主要的方法如下:

?將文本分割為單詞,并將每個(gè)單詞轉(zhuǎn)換為一個(gè)向量。
?將文本分割為字符,并將每個(gè)字符轉(zhuǎn)換為一個(gè)向量。
?提取單詞或字符的 n-gram,并將每個(gè) n-gram 轉(zhuǎn)換為一個(gè)向量。n-gram 是多個(gè)連續(xù)單詞或字符的集合(n-gram 之間可重疊)。

上面的整個(gè)過程就是將文本信息進(jìn)行單元分割。這里有幾個(gè)概念:
標(biāo)記(token): 將文本分解而成的單元(單詞、字符或 n-gram)
分詞(tokenization): 將文本分解成標(biāo)記的過程
向量編碼: 將向量與標(biāo)記相關(guān)聯(lián)的方法

?one-hot編碼(one-hot encoding)
?標(biāo)記嵌入[token embedding] 詞嵌入(word embedding)

總結(jié)文本數(shù)據(jù)向量化的三個(gè)過程:
?原始文本(原始數(shù)據(jù))
?將文本分解成標(biāo)記(標(biāo)記)
?將標(biāo)記進(jìn)行編碼(向量編碼)
如下圖所示:

n-gram是從一個(gè)句子中提取的N個(gè)(或更少)連續(xù)單詞(或字符)的集合。
例如:“The cat sat on the mat.”
二元語法(2-gram)集合:

{"The", "The cat", "cat", "cat sat", "sat", "sat on", "on", "on the", "the", "the mat", "mat"}

三元語法(3-gram)集合:

{"The", "The cat", "cat", "cat sat", "The cat sat", "sat", "sat on", "on", "cat sat on", "on the", "the", "sat on the", "the mat", "mat", "on the mat"}

以上的集合又稱為詞袋,處理的是標(biāo)記組成的集合.一般它往往被用于淺層的語言處理模型,而不是深度學(xué)習(xí)模型.

在使用輕量級(jí)的淺層文本處理模型時(shí)(比如 logistic 回歸和隨機(jī)森林),n-gram 是一種功能強(qiáng)大、不可或缺的特征工程工具。

1.6.1.2.2.ont-hot編碼

one-hot編碼是將標(biāo)記轉(zhuǎn)換為向量的最常用、最基本的方法。

它將每個(gè)單詞與一個(gè)唯一的整數(shù)索引相關(guān)聯(lián),然后將這個(gè)整數(shù)索引 i 轉(zhuǎn)換為長度為 N 的二進(jìn)制向量(N 是詞表大小),這個(gè)向量只有第 i 個(gè)元素是 1,其余元素都為 0。

單詞向量化

# -*- coding: UTF-8 -*-import numpy as np# 初始化數(shù)據(jù),每個(gè)"樣本"一個(gè)條目 samples = ['The cat sat on the mat.', 'The dog ate my homework.']# 首先,構(gòu)建數(shù)據(jù)中所有token的索引 token_index = {}for sample in samples:# 通過'split'方法對(duì)樣本進(jìn)行標(biāo)記。實(shí)際使用時(shí)還會(huì)從樣本中刪除標(biāo)點(diǎn)符號(hào)和特殊字符for word in sample.split():# 可以參考如下去掉非字符的'''word = word.lower()# 去掉非字母字符if not word.isalpha():new_word = filter(str.isalpha(), word)word = ''.join(list(new_word))'''# 添加索引if word not in token_index:token_index[word] = len(token_index) + 1# 接下來,對(duì)樣本進(jìn)行矢量化 # 對(duì)樣本進(jìn)行分詞。只考慮每個(gè)樣本前max_length個(gè)單詞 max_length = 5# 用于存儲(chǔ)結(jié)果 results = np.zeros((len(samples), max_length, max(token_index.values()) + 1)) for i , samples in enumerate(samples):for j , word in list(enumerate(sample.split()))[:max_length]:index = token_index.get(word)results[i, j , index] = 1print(token_index) print(results)

輸出結(jié)果:

{'The': 1, 'cat': 2, 'sat': 3, 'on': 4, 'the': 5, 'mat.': 6, 'dog': 7, 'ate': 8, 'my': 9, 'homework.': 10} [[[0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.][0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.][0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.][0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]][[0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.][0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.][0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.][0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]]

字符向量化

# -*- coding: UTF-8 -*- import numpy as np import stringsamples = ['The cat sat on the mat.', 'The dog ate my homeword.']characters = string.printable token_index = dict(zip(characters, range(1, len(characters) + 1)))max_length = 50 results = np.zeros((len(samples), max_length, max(token_index.values()) + 1)) for i ,samples in enumerate(samples):for j, characters in enumerate(samples[: max_length]):index = token_index.get(characters)results[i, j ,index] = 1print(token_index) print(results)

輸出結(jié)果:

{'0': 1, '1': 2, '2': 3, '3': 4, '4': 5, '5': 6, '6': 7, '7': 8, '8': 9, '9': 10, 'a': 11, 'b': 12, 'c': 13, 'd': 14, 'e': 15, 'f': 16, 'g': 17, 'h': 18, 'i': 19, 'j': 20, 'k': 21, 'l': 22, 'm': 23, 'n': 24, 'o': 25, 'p': 26, 'q': 27, 'r': 28, 's': 29, 't': 30, 'u': 31, 'v': 32, 'w': 33, 'x': 34, 'y': 35, 'z': 36, 'A': 37, 'B': 38, 'C': 39, 'D': 40, 'E': 41, 'F': 42, 'G': 43, 'H': 44, 'I': 45, 'J': 46, 'K': 47, 'L': 48, 'M': 49, 'N': 50, 'O': 51, 'P': 52, 'Q': 53, 'R': 54, 'S': 55, 'T': 56, 'U': 57, 'V': 58, 'W': 59, 'X': 60, 'Y': 61, 'Z': 62, '!': 63, '"': 64, '#': 65, '$': 66, '%': 67, '&': 68, "'": 69, '(': 70, ')': 71, '*': 72, '+': 73, ',': 74, '-': 75, '.': 76, '/': 77, ':': 78, ';': 79, '<': 80, '=': 81, '>': 82, '?': 83, '@': 84, '[': 85, '\\': 86, ']': 87, '^': 88, '_': 89, '`': 90, '{': 91, '|': 92, '}': 93, '~': 94, ' ': 95, '\t': 96, '\n': 97, '\r': 98, '\x0b': 99, '\x0c': 100} [[[0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.]...[0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.]][[0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.]...[0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.][0. 0. 0. ... 0. 0. 0.]]]

keras實(shí)現(xiàn)的one-hot 編碼

from keras.preprocessing.text import Tokenizersamples = ['The cat sat on the mat.', 'The dog ate my homeword.']# 創(chuàng)建一個(gè)tokenizer,配置為只考慮前1000個(gè)最常用的單詞 tokenizer = Tokenizer(num_words=20)# 構(gòu)建單詞索引 tokenizer.fit_on_texts(samples)# 將字符串轉(zhuǎn)換為整數(shù)索引組成的列表 one_hot_results = tokenizer.texts_to_matrix(samples,mode='binary')# 找回單詞索引 word_index = tokenizer.word_index print('Found %s unique tokens.' % len(word_index)) print(one_hot_results)

輸出結(jié)果:

Found 9 unique tokens. [[0. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.][0. 1. 0. 0. 0. 0. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
1.6.1.2.3.one-hot散列技巧

如果詞表中唯一標(biāo)記的數(shù)量太大而無法直接處理,就可以使用這種技巧。

這種方法沒有為每個(gè)單詞顯式分配一個(gè)索引并將這些索引保存在一個(gè)字典中,而是將單詞散列編碼為固定長度的向量,通常用一個(gè)非常簡單的散列函數(shù)來實(shí)現(xiàn)。

優(yōu)點(diǎn) 它避免了維護(hù)一個(gè)顯式的單詞索引,從而節(jié)省內(nèi)存并允許數(shù)據(jù)的在線編碼
缺點(diǎn) 就是可能會(huì)出現(xiàn)散列沖突(hash collision),即兩個(gè)不同的單詞可能具有相同的散列值。

1.6.1.3.Embedding

1.6.1.3.1.Word2vec

以下轉(zhuǎn)自:https://easyai.tech/ai-definition/word2vec/

Word2vec是Word Embedding方式之一,屬于NLP領(lǐng)域。他是將此轉(zhuǎn)化為”可計(jì)算”、”結(jié)構(gòu)化”的向量的過程。

這種方式在2018年之前比較主流,但是隨著BERT、GPT2.0的出現(xiàn),這種方式已經(jīng)不算效果最好的方法了。

1.6.1.3.1.1.什么是Word2vec

?什么是Word Embedding?

在說明 Word2vec 之前,需要先解釋一下 Word Embedding。 它就是將”不可計(jì)算” , ”非結(jié)構(gòu)化” 的詞轉(zhuǎn)化為”可計(jì)算”, ”結(jié)構(gòu)化”的向量。

**這一步解決的是”將現(xiàn)實(shí)問題轉(zhuǎn)化為數(shù)學(xué)問題”,**是人工智能非常關(guān)鍵的一步。

將現(xiàn)實(shí)問題轉(zhuǎn)化為數(shù)學(xué)問題只是第一步,后面還需要求解這個(gè)數(shù)學(xué)問題。所以Word Embedding的模型本身并不重要,重要的是生成出來的結(jié)果----詞向量。因?yàn)樵诤罄m(xù)的任務(wù)中會(huì)直接用到這個(gè)詞向量。

?什么是Word2vec ?

Word2vec 是 Word Embedding 的方法之一。他是 2013 年由谷歌的 Mikolov 提出了一套新的詞嵌入方法。

Word2vec在整個(gè)NLP里面的位置可以用下圖表示:

在Word2vec 出現(xiàn)之前,已經(jīng)有一些 Word Embedding 的方法,但是之前的方法并不成熟,也沒有大規(guī)模的得到應(yīng)用。

1.6.1.3.1.2.Word2vec的2中訓(xùn)練模式

CBOW(Continuous Bag-of-Words Model)和Skip-gram (Continuous Skip-gram Model),是Word2vec 的兩種訓(xùn)練模式。下面簡單做一下解釋:

?CBOW
通過上下文來預(yù)測當(dāng)前值。相當(dāng)于一句話中扣掉一個(gè)詞,讓你猜這個(gè)詞是什么。

?Skip-gram
用當(dāng)前詞來預(yù)測上下文。相當(dāng)于給你一個(gè)詞,讓你猜前面和后面可能出現(xiàn)什么詞。

?優(yōu)化方法
為了提高速度,Word2Vec經(jīng)常采用2中加速方式:
1.Negative Sample(負(fù)采樣)
2.Hierarchical Softmax

1.6.1.3.1.3.Word2vec的優(yōu)缺點(diǎn)

需要說明的是:Word2vec 是上一代的產(chǎn)物(18 年之前),18 年之后想要得到最好的效果,已經(jīng)不使用 Word Embedding 的方法了,所以也不會(huì)用到 Word2vec。

優(yōu)點(diǎn):
1.由于 Word2vec 會(huì)考慮上下文,跟之前的 Embedding 方法相比,效果要更好(但不如 18 年之后的方法)
2.比之前的 Embedding方 法維度更少,所以速度更快
3.通用性很強(qiáng),可以用在各種 NLP 任務(wù)中

缺點(diǎn):
1.由于詞和向量是一對(duì)一的關(guān)系,所以多義詞的問題無法解決。
2.Word2vec是一種靜態(tài)的方法,雖然通用性強(qiáng),但是無法針對(duì)特定任務(wù)做動(dòng)態(tài)優(yōu)化。

1.6.1.3.1.4.百度百科

Word2vec,是一群用來產(chǎn)生詞向量的相關(guān)模型。這些模型為淺而雙層的神經(jīng)網(wǎng)絡(luò),用來訓(xùn)練以重新建構(gòu)語言學(xué)之詞文本。網(wǎng)絡(luò)以詞表現(xiàn),并且需猜測相鄰位置的輸入詞,在word2vec中詞袋模型假設(shè)下,詞的順序是不重要的。訓(xùn)練完成之后,word2vec模型可用來映射每個(gè)詞到一個(gè)向量,可用來表示詞對(duì)詞之間的關(guān)系,該向量為神經(jīng)網(wǎng)絡(luò)之隱藏層。

1.6.1.3.2.BERT

此部分來自:https://easyai.tech/ai-definition/bert/

BERT的全稱是Bidirectional Encoder Representation from Transformers,即雙向Transformer的Encoder,因?yàn)閐ecoder是不能獲要預(yù)測的信息的。模型的主要?jiǎng)?chuàng)新點(diǎn)都在pre-train方法上,即用了Masked LM和Next Sentence Prediction兩種方法分別捕捉詞語和句子級(jí)別的representation。

從現(xiàn)在的大趨勢(shì)來看,使用某種模型預(yù)訓(xùn)練一個(gè)語言模型看起來是一種比較靠譜的方法。從之前AI2的 ELMo,到 OpenAI的fine-tune transformer,再到Google的這個(gè)BERT,全都是對(duì)預(yù)訓(xùn)練的語言模型的應(yīng)用。BERT這個(gè)模型與其它兩個(gè)不同的是

1.它在訓(xùn)練雙向語言模型時(shí)以減小的概率把少量的詞替成了Mask或者另一個(gè)隨機(jī)的詞。我個(gè)人感覺這個(gè)目的在于使模型被迫增加對(duì)上下文的記憶。至于這個(gè)概率,我猜是Jacob拍腦袋隨便設(shè)的。
2.增加了一個(gè)預(yù)測下一句的loss。這個(gè)看起來就比較新奇了。

BERT模型具有以下兩個(gè)特點(diǎn):

1.是這個(gè)模型非常的深,12層,并不寬(wide),中間層只有1024,而之前的Transformer模型中間層有2048。這似乎又印證了計(jì)算機(jī)圖像處理的一個(gè)觀點(diǎn)——深而窄 比 淺而寬 的模型更好。
2.MLM(Masked Language Model),同時(shí)利用左側(cè)和右側(cè)的詞語,這個(gè)在ELMo上已經(jīng)出現(xiàn)了,絕對(duì)不是原創(chuàng)。其次,對(duì)于Mask(遮擋)在語言模型上的應(yīng)用,已經(jīng)被Ziang Xie提出了(我很有幸的也參與到了這篇論文中):[1703.02573] Data Noising as Smoothing in Neural Network Language Models。這也是篇巨星云集的論文:Sida Wang,Jiwei Li(香儂科技的創(chuàng)始人兼CEO兼史上發(fā)文最多的NLP學(xué)者),Andrew Ng,Dan Jurafsky都是Coauthor。但很可惜的是他們沒有關(guān)注到這篇論文。用這篇論文的方法去做Masking,相信BRET的能力說不定還會(huì)有提升。

?擴(kuò)展閱讀
入門類文章
深入淺出解析BERT原理及其表征的內(nèi)容(2019-8)
NLP新秀 : BERT的優(yōu)雅解讀(2019-2-18)
[NLP] Google BERT詳解]
[NLP自然語言處理]谷歌BERT模型深度解析

擴(kuò)展視野類文章
BERT王者歸來!Facebook推出RoBERTa新模型,碾壓XLNet 制霸三大排行榜(2019-7)

Bert 改進(jìn): 如何融入知識(shí)(2019-7)

詳解BERT閱讀理解(2019-7)

XLNet:運(yùn)行機(jī)制及和Bert的異同比較(2019-6)

站在BERT肩膀上的NLP新秀們(PART III)(2019-6)

站在BERT肩膀上的NLP新秀們(PART II)(2019-6)

站在BERT肩膀上的NLP新秀們(PART I)(2019-6)

BERT模型在NLP中目前取得如此好的效果,那下一步NLP該何去何從?(2019-6)

Bert時(shí)代的創(chuàng)新:Bert應(yīng)用模式比較及其它(2019-5)

進(jìn)一步改進(jìn)GPT和BERT:使用Transformer的語言模型(2019-5)

76分鐘訓(xùn)練BERT!谷歌大腦新型優(yōu)化器LAMB加速大批量訓(xùn)練(2019-4-3)

知乎-如何評(píng)價(jià) BERT 模型?

從Word Embedding到Bert模型—自然語言處理中的預(yù)訓(xùn)練技術(shù)發(fā)展史

BERT 論文

深度長文:NLP的巨人肩膀(上)

NLP 的巨人肩膀(下):從 CoVe 到 BERT

實(shí)踐類文章
美團(tuán)BERT的探索和實(shí)踐(2019-11)

加速 BERT 模型有多少種方法?從架構(gòu)優(yōu)化、模型壓縮到模型蒸餾最新進(jìn)展詳解!(2019-10)

BERT, RoBERTa, DistilBERT, XLNet的用法對(duì)比(2019-9)

一大批中文(BERT等)預(yù)訓(xùn)練模型等你認(rèn)領(lǐng)!(2019-6)

[GitHub] BERT模型從訓(xùn)練到部署全流程(2019-6)

Bert時(shí)代的創(chuàng)新:Bert在NLP各領(lǐng)域的應(yīng)用進(jìn)展(2019-6)

BERT fintune 的藝術(shù)(2019-5)

中文語料的 Bert finetune(2019-5)

BERT源碼分析PART III(2019-5)

BERT源碼分析PART II(2019-5)

BERT源碼分析PART I(2019-5)

【干貨】BERT模型的標(biāo)準(zhǔn)調(diào)優(yōu)和花式調(diào)優(yōu)

BERT fine-tune 終極實(shí)踐教程

詳解谷歌最強(qiáng)NLP模型BERT(理論+實(shí)戰(zhàn))

用BRET進(jìn)行多標(biāo)簽文本分類(附代碼)

1.6.1.3.3.Glove

轉(zhuǎn)自:http://www.fanyeong.com/2018/02/19/glove-in-detail/

1.6.1.3.3.1.什么是GloVe?

正如論文的標(biāo)題而言,GloVe的全稱叫Global Vectors for Word Representation,它是一個(gè)基于全局詞頻統(tǒng)計(jì)(count-based & overall statistics)的詞表征(word representation)工具,它可以把一個(gè)單詞表達(dá)成一個(gè)由實(shí)數(shù)組成的向量,這些向量捕捉到了單詞之間一些語義特性,比如相似性(similarity)、類比性(analogy)等。我們通過對(duì)向量的運(yùn)算,比如歐幾里得距離或者cosine相似度,可以計(jì)算出兩個(gè)單詞之間的語義相似性。

1.6.1.3.3.2.GloVe是如何實(shí)現(xiàn)的?

GloVe的實(shí)現(xiàn)分為以下三步:

1.6.1.3.3.3.GloVe是如何訓(xùn)練的?



這個(gè)圖一共采用了三個(gè)指標(biāo):語義準(zhǔn)確度,語法準(zhǔn)確度以及總體準(zhǔn)確度。那么我們不難發(fā)現(xiàn)Vector Dimension在300時(shí)能達(dá)到最佳,而context Windows size大致在6到10之間。

1.6.1.3.3.4.Glove與LSA、word2vec的比較

LSA(Latent Semantic Analysis)是一種比較早的count-based的詞向量表征工具,它也是基于co-occurance matrix的,只不過采用了基于奇異值分解(SVD)的矩陣分解技術(shù)對(duì)大矩陣進(jìn)行降維,而我們知道SVD的復(fù)雜度是很高的,所以它的計(jì)算代價(jià)比較大。還有一點(diǎn)是它對(duì)所有單詞的統(tǒng)計(jì)權(quán)重都是一致的。而這些缺點(diǎn)在GloVe中被一一克服了。而word2vec最大的缺點(diǎn)則是沒有充分利用所有的語料,所以GloVe其實(shí)是把兩者的優(yōu)點(diǎn)結(jié)合了起來。從這篇論文給出的實(shí)驗(yàn)結(jié)果來看,GloVe的性能是遠(yuǎn)超LSA和word2vec的,但網(wǎng)上也有人說GloVe和word2vec實(shí)際表現(xiàn)其實(shí)差不多。

1.6.1.3.3.5.公式推導(dǎo)


總結(jié)

以上是生活随笔為你收集整理的06_1.Pytorch中如何表示字符串、word embedding、One - hot、Embedding(Word2vec、BERT、Glove)【学习总结】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91精品国产色综合久久不卡电影 | av福利在线看 | 91精品国产自产91精品 | 成人网页 | 中文字幕av在线免费观看 | 国产毛片在线 | 免费日韩在线视频 | 亚洲区欧美 | 欧美国产精品久久 | 99re国产精品 | 日韩区欧美区 | 91资源在线播放 | 性色视频在线观看 | 色亚洲欧美 | 日本精品区 | 日本免费精品 | 日本乱偷中文字幕 | 麻豆精品国产传媒mv男同 | 美女靠逼app | 欧美亚洲天堂 | 精品国产一区二区在线观看 | www国产亚洲精品 | 果冻传媒18禁免费视频 | av.www| 在线亚洲欧美 | 91色综合 | 亚洲一区二区精品在线 | 免费一区二区三区 | 日本黄色xxxxx | 亚洲第一综合网站 | 天堂а√在线中文在线鲁大师 | 免费国产a级片 | 黄色性生活一级片 | 成人国产精品免费 | 超碰综合 | 国产色婷婷| 天堂中文字幕 | 性综艺节目av在线播放 | 久久一区二区三区视频 | 亚洲高清成人 | 久久av喷吹av高潮av萌白 | 韩国性猛交╳xxx乱大交 | 日产精品久久久久久久蜜臀 | 色天使在线视频 | 搡老熟女国产 | 欧美成人一区二区视频 | 久久人人插| 久久影业 | 无码人妻精品一区二区三区在线 | 色综合激情 | 天天摸天天操天天爽 | 色女人天堂| 高h放荡受浪受bl | 午夜精品视频一区 | 欧美天堂在线观看 | 色偷偷欧美 | 午夜精品一区二区三区在线 | 麻豆回家视频区一区二 | 日本h漫在线观看 | 6080亚洲精品一区二区 | 一区二区伦理 | 精品久久久久久亚洲综合网站 | 国产99精品 | 天天干夜夜爽 | 中文字幕 成人 | 国产精品一区二区三区在线免费观看 | 毛片一级在线观看 | 日韩aaa | 中国美女一级片 | 国产精品第13页 | 久久免费影院 | 国产又黄又硬又粗 | 日韩精品第一页 | 黄色aaaa | 中文字幕少妇在线三级hd | 日本黄色片视频 | 欧美日韩性生活视频 | 欧美大片在线看免费观看 | 黄色一级大片在线免费看国产一 | 亚洲一区在线免费观看 | 爱情岛亚洲论坛入口 | 国产激情视频一区二区 | 亚洲二三区| 国产第六页| 玉米地疯狂的吸允她的奶视频 | 一本大道伊人av久久综合 | 免费日皮视频 | 丁香婷婷九月 | 操碰在线视频 | 日韩视频免费在线播放 | 国产日韩第一页 | 97免费在线视频 | 国产一区二区三区四区三区四 | 91av成人| 日韩黄色一级大片 | 91成人在线观看喷潮蘑菇 | 成年人黄色网址 | 91精品婷婷国产综合久久竹菊 | 国产丝袜视频 |