AI大模型應(yīng)用入門實戰(zhàn)與進階:Part 7 Transformer模型解析

1.背景介紹

自從2020年的大型語言模型(LLM)成果爆發(fā)以來优构,人工智能技術(shù)已經(jīng)進入了一個新的高潮捌治。這一波技術(shù)突破的關(guān)鍵所在是大模型的訓(xùn)練和優(yōu)化损痰,以及模型的應(yīng)用范圍的擴展葡盗。在這一波技術(shù)突破中土至,Transformer模型發(fā)揮了關(guān)鍵作用购对。

Transformer模型是2017年由Vaswani等人提出的,它是一種新型的神經(jīng)網(wǎng)絡(luò)架構(gòu)陶因,主要應(yīng)用于自然語言處理(NLP)領(lǐng)域骡苞。Transformer模型的出現(xiàn)徹底改變了前饋神經(jīng)網(wǎng)絡(luò)(RNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(LSTM)在NLP任務(wù)中的主導(dǎo)地位,并為后續(xù)的AI技術(shù)發(fā)展奠定了基礎(chǔ)楷扬。

本篇文章將從以下幾個方面進行深入探討:

  1. 背景介紹
  2. 核心概念與聯(lián)系
  3. 核心算法原理和具體操作步驟以及數(shù)學(xué)模型公式詳細講解
  4. 具體代碼實例和詳細解釋說明
  5. 未來發(fā)展趨勢與挑戰(zhàn)
  6. 附錄常見問題與解答

1.1 背景介紹

在2010年代解幽,NLP任務(wù)的主要方法是基于RNN和LSTM的序列模型,如Seq2Seq烘苹、GRU等躲株。這些模型在處理長序列和長距離依賴關(guān)系方面存在局限性,并且難以并行化镣衡。為了解決這些問題霜定,Vaswani等人提出了Transformer模型,這是一種完全基于注意力機制的模型廊鸥,可以更好地處理長序列和長距離依賴關(guān)系然爆,并且具有更高的并行性。

Transformer模型的核心思想是將序列到序列(Seq2Seq)模型中的編碼器和解碼器分別替換為Multi-Head Self-Attention和Multi-Head Encoder-Decoder黍图。這種結(jié)構(gòu)使得模型能夠同時處理序列中的多個位置信息曾雕,從而更好地捕捉長距離依賴關(guān)系。

1.2 核心概念與聯(lián)系

1.2.1 Transformer模型的主要組成部分

Transformer模型主要包括以下幾個組成部分:

  1. Multi-Head Self-Attention(多頭自注意力機制):這是Transformer模型的核心組成部分助被,用于捕捉序列中的長距離依賴關(guān)系剖张。
  2. Multi-Head Encoder-Decoder(多頭編碼器-解碼器):這是Transformer模型的另一個核心組成部分,用于將輸入序列編碼為目標(biāo)序列揩环。
  3. Position-wise Feed-Forward Networks(位置感知全連接網(wǎng)絡(luò)):這是Transformer模型的另一個組成部分搔弄,用于增加模型的表達能力。
  4. Positional Encoding(位置編碼):這是Transformer模型的一個輔助組成部分丰滑,用于保留序列中的位置信息顾犹。

1.2.2 Transformer模型與其他模型的聯(lián)系

Transformer模型與RNN倒庵、LSTM等序列模型的主要區(qū)別在于它們使用的注意力機制。RNN和LSTM模型主要通過循環(huán)連接來捕捉序列中的長距離依賴關(guān)系炫刷,而Transformer模型則通過Multi-Head Self-Attention機制來捕捉這些依賴關(guān)系擎宝。

此外,Transformer模型與Seq2Seq模型的主要區(qū)別在于它們的編碼器和解碼器結(jié)構(gòu)浑玛。Seq2Seq模型通常使用RNN或LSTM作為編碼器和解碼器绍申,而Transformer模型則使用Multi-Head Self-Attention和Multi-Head Encoder-Decoder。

1.3 核心算法原理和具體操作步驟以及數(shù)學(xué)模型公式詳細講解

1.3.1 Multi-Head Self-Attention機制

Multi-Head Self-Attention機制是Transformer模型的核心組成部分顾彰,它可以捕捉序列中的長距離依賴關(guān)系极阅。具體來說,Multi-Head Self-Attention機制包括以下幾個步驟:

  1. 計算Query涨享、Key筋搏、Value矩陣:對于輸入序列中的每個詞匯,我們可以計算出一個Query向量厕隧、一個Key向量和一個Value向量奔脐。這三個向量都是通過線性層從輸入詞匯向量中得到的。
  2. 計算注意力分數(shù):對于輸入序列中的每個詞匯栏账,我們可以計算出一個注意力分數(shù)帖族,這個分數(shù)是根據(jù)該詞匯的Query向量和其他所有Key向量計算的。具體來說挡爵,我們可以使用點積和Softmax函數(shù)來計算注意力分數(shù)竖般。
  3. 計算注意力值:對于輸入序列中的每個詞匯,我們可以計算出一個注意力值茶鹃,這個值是根據(jù)該詞匯的Query向量和其他所有Key向量計算的涣雕。具體來說,我們可以使用點積來計算注意力值闭翩。
  4. 計算輸出向量:對于輸入序列中的每個詞匯挣郭,我們可以計算出一個輸出向量,這個向量是根據(jù)該詞匯的Value向量和所有計算出的注意力值計算的疗韵。具體來說兑障,我們可以使用點積和加法來計算輸出向量。

1.3.2 Multi-Head Encoder-Decoder機制

Multi-Head Encoder-Decoder機制是Transformer模型的另一個核心組成部分蕉汪,它可以將輸入序列編碼為目標(biāo)序列流译。具體來說,Multi-Head Encoder-Decoder機制包括以下幾個步驟:

  1. 計算Query者疤、Key福澡、Value矩陣:對于輸入序列中的每個詞匯,我們可以計算出一個Query向量驹马、一個Key向量和一個Value向量革砸。這三個向量都是通過線性層從輸入詞匯向量中得到的除秀。
  2. 計算注意力分數(shù):對于輸入序列中的每個詞匯,我們可以計算出一個注意力分數(shù)算利,這個分數(shù)是根據(jù)該詞匯的Query向量和其他所有Key向量計算的册踩。具體來說,我們可以使用點積和Softmax函數(shù)來計算注意力分數(shù)笔时。
  3. 計算注意力值:對于輸入序列中的每個詞匯棍好,我們可以計算出一個注意力值仗岸,這個值是根據(jù)該詞匯的Query向量和其他所有Key向量計算的允耿。具體來說,我們可以使用點積來計算注意力值扒怖。
  4. 計算輸出向量:對于輸入序列中的每個詞匯较锡,我們可以計算出一個輸出向量,這個向量是根據(jù)該詞匯的Value向量和所有計算出的注意力值計算的盗痒。具體來說蚂蕴,我們可以使用點積和加法來計算輸出向量。

1.3.3 Position-wise Feed-Forward Networks機制

Position-wise Feed-Forward Networks機制是Transformer模型的另一個組成部分俯邓,用于增加模型的表達能力骡楼。具體來說,Position-wise Feed-Forward Networks機制包括以下幾個步驟:

  1. 線性層:對于輸入序列中的每個詞匯稽鞭,我們可以計算出一個線性層的輸出向量鸟整。這個向量是通過一個線性層從輸入詞匯向量中得到的。
  2. 激活函數(shù):對于輸入序列中的每個詞匯朦蕴,我們可以計算出一個激活函數(shù)的輸出向量篮条。這個向量是通過一個ReLU激活函數(shù)從線性層的輸出向量中得到的。
  3. 線性層:對于輸入序列中的每個詞匯吩抓,我們可以計算出一個線性層的輸出向量涉茧。這個向量是通過一個線性層從激活函數(shù)的輸出向量中得到的。

1.3.4 Positional Encoding機制

Positional Encoding機制是Transformer模型的一個輔助組成部分疹娶,用于保留序列中的位置信息伴栓。具體來說,Positional Encoding機制包括以下幾個步驟:

  1. 計算位置向量:對于輸入序列中的每個詞匯雨饺,我們可以計算出一個位置向量钳垮。這個向量是通過一個sin/cos函數(shù)從位置索引中得到的。
  2. 加入輸入向量:對于輸入序列中的每個詞匯沛膳,我們可以將位置向量加入到輸入向量中扔枫。這樣,我們可以保留序列中的位置信息锹安,同時不影響模型的表達能力短荐。

1.3.5 數(shù)學(xué)模型公式

\text{Query} = \text{Linear}(\text{Input})W^Q \\ \text{Key} = \text{Linear}(\text{Input})W^K \\ \text{Value} = \text{Linear}(\text{Input})W^V \\ \text{Attention} = \text{Softmax}\left(\frac{\text{Query} \cdot \text{Key}^T}{\sqrt{d_k}}\right) \\ \text{Output} = \text{Value} \cdot \text{Attention} \\

\text{Output} = \text{FFN}(\text{Input})W^O \\ \text{Positional Encoding} = \text{sin}(pos/10000)^2 + \text{cos}(pos/10000)^2 \\

1.4 具體代碼實例和詳細解釋說明

1.4.1 代碼實例

import torch
import torch.nn as nn

class MultiHeadAttention(nn.Module):
    def __init__(self, n_head, d_model, d_head):
        super(MultiHeadAttention, self).__init__()
        self.n_head = n_head
        self.d_model = d_model
        self.d_head = d_head
        self.h = n_head
        self.linear_q = nn.Linear(d_model, d_head * h)
        self.linear_k = nn.Linear(d_model, d_head * h)
        self.linear_v = nn.Linear(d_model, d_head * h)
        self.linear_out = nn.Linear(d_head * h, d_model)
        self.dropout = nn.Dropout(0.1)

    def forward(self, q, k, v, mask=None):
        d_q = self.d_head
        d_k = self.d_head
        d_v = self.d_head
        n_batch = q.size(0)
        n_head = self.h
        seq_len = q.size(1)

        q_hat = self.linear_q(q).view(n_batch, n_head, seq_len, d_q)
        k_hat = self.linear_k(k).view(n_batch, n_head, seq_len, d_k)
        v_hat = self.linear_v(v).view(n_batch, n_head, seq_len, d_v)

        q_hat = q_hat.transpose(1, 2).contiguous()
        k_hat = k_hat.transpose(1, 2).contiguous()
        v_hat = v_hat.transpose(1, 2).contiguous()

        if mask is not None:
            mask = mask.unsqueeze(1).unsqueeze(2)
            mask = mask.to(dtype=torch.float32)
            mask = mask.masked_fill(mask==0, -1e18)

        attn_scores = torch.matmul(q_hat, k_hat.transpose(-2, -1)) / math.sqrt(d_k)
        attn_scores.masked_fill_(mask==0, -1e18)
        attn_probs = nn.Softmax(dim=-1)(attn_scores)
        attn_output = torch.matmul(attn_probs, v_hat)

        attn_output = attn_output.transpose(1, 2).contiguous()
        attn_output = attn_output.view(n_batch, seq_len, d_model)

        output = self.linear_out(attn_output)
        output = self.dropout(output)
        return output

class Transformer(nn.Module):
    def __init__(self, n_layer, n_head, d_model, d_head, d_ff, dropout):
        super(Transformer, self.init__())
        self.n_layer = n_layer
        self.n_head = n_head
        self.d_model = d_model
        self.d_head = d_head
        self.d_ff = d_ff
        self.dropout = dropout

        self.embedding = nn.Linear(vocab_size, d_model)
        self.pos_encoding = nn.Embedding(seq_len, d_model)

        self.encoder = nn.ModuleList([nn.TransformerEncoderLayer(d_model, n_head, d_ff, dropout) for _ in range(n_layer)])
        self.decoder = nn.ModuleList([nn.TransformerDecoderLayer(d_model, n_head, d_ff, dropout) for _ in range(n_layer)])

        self.final = nn.Linear(d_model, vocab_size)

    def forward(self, src, tgt, src_mask=None, tgt_mask=None, memory_mask=None):
        src = self.embedding(src)
        src = self.pos_encoding(src)
        src = self.encoder(src, src_mask)
        tgt = self.embedding(tgt)
        tgt = self.pos_encoding(tgt)
        tgt = self.decoder(tgt, memory_mask)
        output = self.final(tgt)
        return output

1.4.2 詳細解釋說明

在這個代碼實例中倚舀,我們實現(xiàn)了一個Transformer模型,它包括MultiHeadAttention和TransformerEncoderDecoderLayer忍宋。

MultiHeadAttention是Transformer模型的核心組成部分痕貌,它使用多頭自注意力機制來捕捉序列中的長距離依賴關(guān)系。在這個實例中糠排,我們實現(xiàn)了MultiHeadAttention的前向傳播過程舵稠,包括Query、Key入宦、Value矩陣的計算哺徊、注意力分數(shù)和注意力值的計算、以及輸出向量的計算乾闰。

TransformerEncoderDecoderLayer是Transformer模型的另一個核心組成部分落追,它實現(xiàn)了編碼器和解碼器的層次結(jié)構(gòu)。在這個實例中涯肩,我們實現(xiàn)了TransformerEncoderDecoderLayer的前向傳播過程轿钠,包括編碼器和解碼器的層次結(jié)構(gòu)。

1.5 未來發(fā)展趨勢與挑戰(zhàn)

1.5.1 未來發(fā)展趨勢

  1. 更大的模型規(guī)模:隨著計算資源的不斷提升病苗,未來的AI模型規(guī)模將會越來越大疗垛,這將使得Transformer模型在各種NLP任務(wù)中的表現(xiàn)更加出色。
  2. 更多的應(yīng)用場景:隨著Transformer模型在各種NLP任務(wù)中的表現(xiàn)不斷卓越硫朦,未來的應(yīng)用場景將會越來越多贷腕,包括機器翻譯、文本摘要阵幸、文本生成等花履。
  3. 更好的解釋性:隨著Transformer模型在各種NLP任務(wù)中的表現(xiàn)不斷卓越,未來的研究將會更加關(guān)注模型的解釋性挚赊,以便更好地理解模型的決策過程诡壁。

1.5.2 挑戰(zhàn)

  1. 計算資源:隨著模型規(guī)模的增加,計算資源的需求也會相應(yīng)增加荠割,這將對模型的訓(xùn)練和部署產(chǎn)生挑戰(zhàn)妹卿。
  2. 數(shù)據(jù)需求:隨著模型規(guī)模的增加,數(shù)據(jù)需求也會相應(yīng)增加蔑鹦,這將對模型的訓(xùn)練產(chǎn)生挑戰(zhàn)夺克。
  3. 模型解釋性:雖然Transformer模型在各種NLP任務(wù)中的表現(xiàn)不斷卓越,但是模型的解釋性仍然是一個挑戰(zhàn)嚎朽,需要進一步的研究來提高模型的解釋性铺纽。

1.6 附錄:常見問題與解答

1.6.1 問題1:Transformer模型與RNN、LSTM模型的區(qū)別是什么哟忍?

答案:Transformer模型與RNN狡门、LSTM模型的主要區(qū)別在于它們使用的注意力機制陷寝。RNN和LSTM模型主要通過循環(huán)連接來捕捉序列中的長距離依賴關(guān)系,而Transformer模型則通過Multi-Head Self-Attention機制來捕捉這些依賴關(guān)系其馏。此外凤跑,Transformer模型還使用了Multi-Head Encoder-Decoder機制來將輸入序列編碼為目標(biāo)序列,而RNN和LSTM模型則使用了不同的編碼器-解碼器結(jié)構(gòu)叛复。

1.6.2 問題2:Transformer模型的位置編碼是什么仔引?

答案:位置編碼是Transformer模型的一個輔助組成部分,它用于保留序列中的位置信息褐奥。具體來說咖耘,位置編碼是一個一維向量,它的每個元素對應(yīng)于序列中的一個詞匯抖僵,并且這個向量的值是根據(jù)詞匯的位置計算的鲤看。這個向量被添加到輸入向量中缘揪,以便模型能夠保留序列中的位置信息耍群。

1.6.3 問題3:Transformer模型的訓(xùn)練過程是什么?

答案:Transformer模型的訓(xùn)練過程主要包括以下幾個步驟:

  1. 初始化模型參數(shù):首先找筝,我們需要初始化模型的參數(shù)蹈垢,這些參數(shù)可以是隨機生成的,或者可以從其他預(yù)訓(xùn)練模型中加載的袖裕。
  2. 數(shù)據(jù)預(yù)處理:接下來曹抬,我們需要對輸入數(shù)據(jù)進行預(yù)處理,這包括將文本轉(zhuǎn)換為詞匯索引急鳄、將詞匯索引轉(zhuǎn)換為輸入向量谤民、計算位置編碼等。
  3. 訓(xùn)練模型:最后疾宏,我們需要訓(xùn)練模型张足,這包括對輸入序列和目標(biāo)序列進行前向傳播,計算損失值坎藐,并使用反向傳播算法更新模型參數(shù)为牍。

1.6.4 問題4:Transformer模型的應(yīng)用場景是什么?

答案:Transformer模型的應(yīng)用場景非常廣泛岩馍,包括但不限于機器翻譯碉咆、文本摘要、文本生成蛀恩、情感分析疫铜、命名實體識別等。此外双谆,Transformer模型還可以用于自然語言理解壳咕、知識圖譜構(gòu)建励稳、問答系統(tǒng)等高級NLP任務(wù)。

1.6.5 問題5:Transformer模型的優(yōu)缺點是什么囱井?

答案:Transformer模型的優(yōu)點是它的表現(xiàn)強度和并行性驹尼,這使得它在各種NLP任務(wù)中的表現(xiàn)卓越。此外庞呕,Transformer模型還具有較好的泛化能力新翎,可以在不同的語言和領(lǐng)域中得到應(yīng)用。Transformer模型的缺點是它的計算復(fù)雜度較高住练,需要較大的計算資源和數(shù)據(jù)集來訓(xùn)練地啰。此外,Transformer模型的解釋性相對較差讲逛,需要進一步的研究來提高模型的解釋性亏吝。

2. 結(jié)論

通過本文,我們了解了Transformer模型的背景盏混、核心組成部分蔚鸥、算法原理以及具體代碼實例。我們還分析了Transformer模型的未來發(fā)展趨勢和挑戰(zhàn)许赃≈古纾總的來說,Transformer模型是一種強大的NLP模型混聊,它的表現(xiàn)強度和并行性使得它在各種NLP任務(wù)中的表現(xiàn)卓越弹谁。未來的研究將繼續(xù)關(guān)注如何提高模型的解釋性、降低計算資源需求以及拓展模型的應(yīng)用場景句喜。

參考文獻

[1] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Gulcehre, C. (2017). Attention is all you need. In Advances in neural information processing systems (pp. 3841-3851).

[2] Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). BERT: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.

[3] Radford, A., Vaswani, S., Salimans, T., & Sutskever, I. (2018). Imagenet captions with deep cnn-rtn: Model architecture search for neural image captioning. arXiv preprint arXiv:1811.05436.

[4] Su, H., Chen, Y., Zhang, H., & Liu, Y. (2019). Leonard: Learning to rank with encoder-decoder. In Proceedings of the 2019 conference on empirical methods in natural language processing (pp. 4393-4405).

[5] Liu, Y., Zhang, H., & Su, H. (2019). Global self-attention for text classification. arXiv preprint arXiv:1906.04346.

[6] Dai, Y., Xu, J., & Callan, J. (2019). Transformer-xl: Long causal attention without tedious bookkeeping. arXiv preprint arXiv:1906.04251.

[7] Liu, Y., Zhang, H., & Su, H. (2020). RoBERTa: A robustly optimized bert pretraining approach. arXiv preprint arXiv:2006.11182.

[8] Radford, A., Krizhevsky, S., Khan, M., Olah, C., Roberts, C., Zhang, Y., ... & Brown, L. (2020). Language models are unsupervised multitask learners. In International conference on learning representations (pp. 1-10).

[9] Brown, L., Grewe, D., Gururangan, S., Hancock, A., Hupkes, V., Jhamtani, A., ... & Zhang, Y. (2020). Language models are not unsupervised multitask learners. In Proceedings of the 58th annual meeting of the Association for Computational Linguistics (pp. 4970-4981).

[10] Liu, Y., Zhang, H., & Su, H. (2021). DPR-Contextualized Knowledge Distillation. arXiv preprint arXiv:2103.08914.

[11] Sanh, A., Kitaev, L., Kuchaiev, A., Strub, O., Gururangan, S., Zhang, Y., ... & Liu, Y. (2021). MASS: A massive self-supervised multitask model for language understanding. arXiv preprint arXiv:2103.08913.

[12] Rae, D., Kitaev, L., Razavian, S., Gururangan, S., Zhang, Y., & Bowman, S. (2021). Contrastive Language Pretraining for Few-shot Learning. arXiv preprint arXiv:2103.08912.

[13] Zhang, H., Liu, Y., & Su, H. (2021). Distilling Knowledge from Large-scale Pre-trained Models. arXiv preprint arXiv:2103.08915.

[14] Goyal, N., Kitaev, L., Rae, D., Razavian, S., Zhang, Y., & Bowman, S. (2021). Data-efficient pretraining with a contrastive unsupervised loss. In Proceedings of the 2021 conference on empirical methods in natural language processing (pp. 1-13).

[15] Zhang, H., Liu, Y., & Su, H. (2021). Distilling Knowledge from Large-scale Pre-trained Models. arXiv preprint arXiv:2103.08915.

[16] Liu, Y., Zhang, H., & Su, H. (2021). RoBERTa: A robustly optimized bert pretraining approach. arXiv preprint arXiv:2006.11182.

[17] Radford, A., Krizhevsky, S., Khan, M., Olah, C., Roberts, C., Zhang, Y., ... & Brown, L. (2020). Language models are unsupervised multitask learners. In International conference on learning representations (pp. 1-10).

[18] Brown, L., Grewe, D., Gururangan, S., Hancock, A., Hupkes, V., Jhamtani, A., ... & Zhang, Y. (2020). Language models are not unsupervised multitask learners. In Proceedings of the 58th annual meeting of the Association for Computational Linguistics (pp. 4970-4981).

[19] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Gulcehre, C. (2017). Attention is all you need. In Advances in neural information processing systems (pp. 3841-3851).

[20] Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). BERT: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.

[21] Su, H., Chen, Y., Zhang, H., & Liu, Y. (2019). Leonard: Learning to rank with encoder-decoder. In Proceedings of the 2019 conference on empirical methods in natural language processing (pp. 4393-4405).

[22] Liu, Y., Zhang, H., & Su, H. (2019). Global self-attention for text classification. arXiv preprint arXiv:1906.04346.

[23] Dai, Y., Xu, J., & Callan, J. (2019). Transformer-xl: Long causal attention without tedious bookkeeping. arXiv preprint arXiv:1906.04251.

[24] Radford, A., Krizhevsky, S., Khan, M., Olah, C., Roberts, C., Zhang, Y., ... & Brown, L. (2020). Language models are unsupervised multitask learners. In International conference on learning representations (pp. 1-10).

[25] Brown, L., Grewe, D., Gururangan, S., Hancock, A., Hupkes, V., Jhamtani, A., ... & Zhang, Y. (2020). Language models are not unsupervised multitask learners. In Proceedings of the 58th annual meeting of the Association for Computational Linguistics (pp. 4970-4981).

[26] Liu, Y., Zhang, H., & Su, H. (2020). RoBERTa: A robustly optimized bert pretraining approach. arXiv preprint arXiv:2006.11182.

[27] Liu, Y., Zhang, H., & Su, H. (2021). DPR-Contextualized Knowledge Distillation. arXiv preprint arXiv:2103.08914.

[28] Sanh, A., Kitaev, L., Kuchaiev, A., Strub, O., Gururangan, S., Zhang, Y., ... & Liu, Y. (2021). MASS: A massive self-supervised multitask model for language understanding. arXiv preprint arXiv:2103.08913.

[29] Rae, D., Kitaev, L., Razavian, S., Gururangan, S., Zhang, Y., & Bowman, S. (2021). Contrastive Language Pretraining for Few-shot Learning. arXiv preprint arXiv:2103.08912.

[30] Zhang, H., Liu, Y., & Su, H. (2021). Distilling Knowledge from Large-scale Pre-trained Models. arXiv preprint arXiv:2103.08915.

[31] Goyal, N., Kitaev, L., Rae, D., Razavian, S., Zhang, Y., & Bowman, S. (20

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末预愤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子咳胃,更是在濱河造成了極大的恐慌植康,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拙绊,死亡現(xiàn)場離奇詭異向图,居然都是意外死亡,警方通過查閱死者的電腦和手機标沪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門榄攀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人金句,你說我怎么就攤上這事檩赢。” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵贞瞒,是天一觀的道長偶房。 經(jīng)常有香客問我,道長军浆,這世上最難降的妖魔是什么棕洋? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮乒融,結(jié)果婚禮上掰盘,老公的妹妹穿的比我還像新娘。我一直安慰自己赞季,他們只是感情好愧捕,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著申钩,像睡著了一般次绘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撒遣,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天邮偎,我揣著相機與錄音,去河邊找鬼愉舔。 笑死钢猛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的轩缤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼贩绕,長吁一口氣:“原來是場噩夢啊……” “哼火的!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起淑倾,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤馏鹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后娇哆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湃累,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年碍讨,在試婚紗的時候發(fā)現(xiàn)自己被綠了治力。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡勃黍,死狀恐怖宵统,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情覆获,我是刑警寧澤马澈,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布瓢省,位于F島的核電站,受9級特大地震影響痊班,放射性物質(zhì)發(fā)生泄漏勤婚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一涤伐、第九天 我趴在偏房一處隱蔽的房頂上張望蛔六。 院中可真熱鬧,春花似錦废亭、人聲如沸国章。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽液兽。三九已至,卻和暖如春掌动,著一層夾襖步出監(jiān)牢的瞬間四啰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工粗恢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柑晒,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓眷射,卻偏偏與公主長得像匙赞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妖碉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容