自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TensorFlow中的候選采樣

開發(fā) 開發(fā)工具
在從事深度學(xué)習(xí)過程中,如果我們想訓(xùn)練一個(gè)類別非常多的分類器,正常的訓(xùn)練過程將非常緩慢。為了解決這個(gè)問題,人們發(fā)明了候選采樣的技巧,每次只評(píng)估所有類別的一個(gè)很小的子集。

在從事深度學(xué)習(xí)過程中, 如果我們想訓(xùn)練一個(gè)類別非常多的分類器 (比如一個(gè)擁有巨大詞匯庫的語言模型), 正常的訓(xùn)練過程將非常緩慢。這是由于在訓(xùn)練過程中,所有的類別都需要進(jìn)行評(píng)估。為了解決這個(gè)問題,人們發(fā)明了候選采樣的技巧,每次只評(píng)估所有類別的一個(gè)很小的子集。深度學(xué)習(xí)庫 TensorFlow (TF) 實(shí)現(xiàn)了候選采樣技巧, 并提供了一些 API。

TensorFlow

1. 候選采樣函數(shù)

候選采樣函數(shù),從巨大的類別庫中,按照一定原則,隨機(jī)采樣出類別子集。TF 提供下面幾個(gè)候選采樣函數(shù), 其中前面三個(gè)的參數(shù)和返回值是一致的,第四個(gè)也很類似。具體參數(shù)和返回值可以移步 TF 文檔。

(1) tf.nn.uniform_candidate_sampler

均勻地采樣出類別子集。

(2) tf.nn.log_uniform_candidate_sampler

按照 log-uniform (Zipfian) 分布采樣。

log-uniform (Zipfian) 分布采樣

這個(gè)函數(shù)主要用于處理詞作類別的情況。在語言學(xué)中,詞按照出現(xiàn)頻率從大到小排序之后,服從 Zipfian 分布。在使用這個(gè)函數(shù)之前,需要對(duì)類別按照出現(xiàn)頻率從大到小排序。

(3) tf.nn.learned_unigram_candidate_sampler

按照訓(xùn)練數(shù)據(jù)中類別出現(xiàn)分布進(jìn)行采樣。具體實(shí)現(xiàn)方式:1)初始化一個(gè) [0, range_max] 的數(shù)組, 數(shù)組元素初始為1; 2) 在訓(xùn)練過程中碰到一個(gè)類別,就將相應(yīng)數(shù)組元素加 1;3) 每次按照數(shù)組歸一化得到的概率進(jìn)行采樣。

(4) tf.nn.fixed_unigram_candidate_sampler

按照用戶提供的概率分布進(jìn)行采樣。

如果類別服從均勻分布,我們就用uniform_candidate_sampler;如果詞作類別,我們知道詞服從 Zipfian, 我們就用 log_uniform_candidate_sampler; 如果我們能夠通過統(tǒng)計(jì)或者其他渠道知道類別滿足某些分布,我們就用 nn.fixed_unigram_candidate_sampler; 如果我們實(shí)在不知道類別分布,我們還可以用 tf.nn.learned_unigram_candidate_sampler。

其實(shí)我蠻好奇 tf 內(nèi)部怎么實(shí)現(xiàn)快速采樣的,特別是

tf.nn.learned_unigram_candidate_sampler 概率分布在變的情況下,我知道最快的采樣算法也是 O(n) 的。不知道 tf 有沒有更快的算法。

2. 候選采樣損失函數(shù)

候選采樣函數(shù)生成類別子集。類別子集需要送給候選采樣損失函數(shù)計(jì)算損失,最小化候選采樣損失便能訓(xùn)練模型。TF 提供下面兩個(gè)候選采樣損失函數(shù)。這兩個(gè)采樣損失函數(shù)的參數(shù)和返回值是一致的, 具體參數(shù)和返回值可以移步 TF 文檔。

(1) tf.nn.sampled_softmax_loss

這個(gè)函數(shù)通過 模型的交叉熵?fù)p失。候選類別子集由采樣類別 和真實(shí)類別 組成,即 。模型***一層輸出是 , 經(jīng)過 softmax 激活函數(shù)轉(zhuǎn)成模型輸出的概率 , 得 。

因?yàn)橹挥泻蜻x類別子集 , 沒有類別全集 L,我們無法計(jì)算 ,進(jìn)而計(jì)算交叉熵?fù)p失。通過候選類別子集,我們只能計(jì)算 。那么怎么優(yōu)化 相關(guān)的損失函數(shù),得到 呢?我們有。

其中 K 是和 y 無關(guān)的數(shù)。我們得到概率計(jì)算公式和交叉熵?fù)p失。

最小化 J 訓(xùn)練模型。

(2) tf.nn.nce_loss

NCE Loss 和 Sampled Softmax Loss 的出發(fā)點(diǎn)是一致, 都是想使得模型輸出 。它們的不同點(diǎn)在于 Sampled Softmax Loss 只支持 Single-Label 分類,而 NCE 支持 Multi-Label 分類。候選類別子集 由采樣類別 和真實(shí)類別 組成,即 。對(duì)于候選類別子集中的每一個(gè)類別,都建立一個(gè) Logistic 二分類問題,其損失函數(shù)為

最小化 J 訓(xùn)練模型。

3. 候選采樣限制

很多時(shí)候, 負(fù)類別由問題給定。比如我們訓(xùn)練分類器玩斗地主撲克, 下面幾個(gè)性質(zhì):

  • 斗地主中所有可能的出牌動(dòng)作非常多;
  • 對(duì)于一副牌局, 所有可選動(dòng)作至多只有幾百個(gè);
  • 對(duì)于一副牌局, 我們選擇人類高手出牌動(dòng)作為正類別,我們將人類高手沒有選擇的出牌動(dòng)作作為負(fù)樣本;
  • 按照當(dāng)前牌局構(gòu)建出的訓(xùn)練樣本, 正類別只有一個(gè), 負(fù)類別至多幾百個(gè)而且由當(dāng)前牌局決定。

在上述問題中, 不同牌局的候選動(dòng)作的個(gè)數(shù)不一樣, 我們無法使用候選采樣的方法進(jìn)行訓(xùn)練。候選采樣只能采樣出相同個(gè)數(shù)的類別。一方面 TF 的基本單元是 Tensor, 要求各個(gè)維度一致。另一方面是由于候選采樣為了 Word2Vec 中的 Negative sampling 等場(chǎng)景設(shè)計(jì), 這些場(chǎng)景只需要挑選一些負(fù)類別反映非正類別的特性。

4. 總結(jié) 

候選采樣加速了類別數(shù)量巨大的訓(xùn)練過程。TF 提供了候選采樣相關(guān) API,方便人們使用。

【本文為51CTO專欄作者“李立”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過51CTO獲取聯(lián)系和授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2017-05-03 22:05:48

深度學(xué)習(xí)候選采樣深度學(xué)習(xí)庫

2022-08-03 07:50:15

射頻IQ采樣信號(hào)處理

2023-03-03 08:00:00

重采樣數(shù)據(jù)集

2010-01-12 09:13:09

Firefox 3.6下載

2020-05-19 14:29:50

機(jī)器學(xué)習(xí)TensorFlow

2024-04-03 08:00:00

gSASRec推薦算法

2011-04-28 15:53:03

Android MarAndroid

2020-07-15 13:51:48

TensorFlow數(shù)據(jù)機(jī)器學(xué)習(xí)

2017-08-02 10:43:39

深度學(xué)習(xí)TensorFlowRNN

2017-09-21 12:29:58

深度學(xué)習(xí)TensorFlow智能終端

2013-05-20 10:52:23

Linux Mint Linux Mint

2022-11-14 14:08:39

計(jì)算機(jī)模型

2012-06-17 13:28:16

JBoss ToolsDeveloper SJava

2020-01-15 07:43:45

架構(gòu)redis開發(fā)

2013-12-09 13:52:20

Linux MintLinux Mint

2014-04-21 13:34:26

紅帽

2017-04-26 15:00:00

機(jī)器學(xué)習(xí)TensorFlow模型部署

2017-09-11 06:47:59

TensorFlowAPI數(shù)據(jù)集

2009-08-07 08:47:15

Windows 7歐洲候選瀏覽器

2012-03-26 10:09:27

Windows 8RC候選版
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)