醫(yī)學報告生成 Generating Radiology Reports via Memory-driven Transformer

Chen Z, Song Y, Chang T H, et al. Generating Radiology Reports via Memory-driven Transformer[C]//Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2020: 1439-1449.
代碼倉:R2Gen code

任務目標

輸入一張醫(yī)學影像狮崩,生成相應的報告飞蹂。


數據樣式,圖像+ 報告

難點

  1. 醫(yī)學報告句子很多集乔,使用常用的只生成一句話的Image Captioning models可能不足以生成醫(yī)學報告。
  2. 要求的精度也比較高辉词。

醫(yī)學報告也有特有的特征禽绪,圖片和報告的格式都高度模式化。目前的解決方案:

  1. retrieval-based. 大數據集的準備
  2. retrieval-based + generation-based + manually extracted templates. 模板的準備
  3. 本文使用的是 generation-based model

模型簡介

本文使用memory-dirven Transformer生成醫(yī)學報告侣肄。主要工作:

  1. 提出了relational memory (RM) 模塊記錄之前生成過程的信息旧困;
  2. 提出了memory-driven conditional layer normalization (MCLN) 把RM和Transformer結合起來。

模型結構:Visual Extractor + Encoder + Decoder + Relational Memory


模型結構

1. Visual Extractor

這一部分的主要任務就是把圖像轉化為序列數據稼锅,從而可以輸入到Encoder中吼具。使用常用的卷積神經網絡就可以,把最后的Linear去掉矩距,留有最后的patch feature以及fc_feature就可以拗盒。
例如本文使用ResNet101預訓練模型,每一組數據輸入的圖像為兩張彩色圖像锥债。

  • 輸入shape為(b, 2, c, h, w)
  • 視覺提取器分別對兩張圖進行特征提取陡蝇。
  • ResNet101去除掉最后一層Linear與Pooling層,輸入(b, c, h, w)哮肚,輸出(b, 2048, 7, 7)
  • 最后經過resize登夫,permutation,shape=(b, 49, 2048)
  • 兩張圖像的特征在axis=1上拼接允趟,得到patch_feature(b, 98, 2048)恼策。這個維度可以看作是batch * seq_len * embedding。
  • 第二組特征fc_feature是在patch_feature的基礎上再次Pooling生成的(b, 2048)拼窥,在axis=1上拼接后戏蔑,得到(b, 4096)。

2. Encoder

編碼器把視覺特征處理鲁纠,使用attention機制总棵,得到最終的特征,作為K改含,V輸入到decoder中情龄。

  • 首先有一個src_embedding,把視覺特征維度轉換為d_model=512,方便輸入Transformer骤视。(按理說這部分是在transformer里實現的鞍爱,但作者的代碼在CaptionModel里實現)
  • 數據x.shape=(b, seq_len, d_model)輸入后,作為query专酗,key睹逃,value輸入到attention中(這里d_model=head * d_k),最后又得到相同shape的輸出祷肯。

3. Relational Memory

這塊的設計是為了使模型可以學到更好的report patterns沉填,和retrieval-based 里面模板的準備差不多。RM使用矩陣存儲pattern information with each row佑笋,稱作memory slot翼闹。每步生成的過程,矩陣都會更新蒋纬。在第t步猎荠,矩陣M_{t-1}用作Q,和前一步輸出的embeddingy_{t-1}拼接起來作為K蜀备,V進入到MultiHeadAttention关摇。

Attention

這里的K Q V計算機制與Encoder里的稍有不同
Q = M_{t-1} \cdot W_q,K = [M_{t-1};y_{t-1}] \cdot W_k,V = [M_{t-1};y_{t-1}] \cdot W_v.
最終attention計算得到的結果記為Z。因為M是循環(huán)計算的琼掠,可能梯度消失或者爆炸拒垃,因此引入了residual connections 和 gate mechanism。

Residual connection

M的中間值為
\tilde{M_t} = MLP(Z + M_{t-1}) + Z + M_{t-1}瓷蛙。

Gate Mechanism

gate mechanism的結構如圖所示:

門機制示意圖

輸入門和遺忘門用來平衡M_{t-1}y_{t-1}悼瓮,為了方便計算,y_{t-1}被broadcast為矩陣Y_{t-1}, shape和M_{t-1}一樣艰猬。兩個門的表達式為
G_t^f = Y_{t-1} \cdot W^f + \text{tanh}(M_{t-1}) \cdot U^f, G_t^i = Y_{t-1} \cdot W^i + \text{tanh}(M_{t-1}) \cdot U^i.
其中的U和W都是可訓練參數横堡。最終gate的輸出為:
M_t = \sigma(G_t^f) \odot M_{t-1} + \sigma(G_t^i) \odot \tilde{M}_t
其中\sigma是sigmoid activation function,\odot 代表 Hardmard product冠桃,也就是pointwise product命贴。

Memory-driven Conditional Layer Normalization

常見的模型memory都在encoder部分,本文單獨設計并與decoder緊密聯系食听。與Attention中 LayerNorm對比胸蛛,提出了MCLN。把M_t用到了Norm里\gamma, \beta的計算上樱报。主要思路是葬项,把M_t拉成一個向量,再用MLP去預測\gamma, \beta的變化量迹蛤,最后再更新民珍。

4. Decoder

共有三個結構襟士,self_attention + src_attention + FFN
輸入參數有:

  1. 輸出序列的embedding:tgt,經過了embedding + positionalEncoding嚷量,輸入到self_attention中陋桂,得到的結果作為src_attention的Q,這里使用了tgt_mask
  2. encoder的輸出內容:src蝶溶,要用到src_attention中的K和V嗜历,這里使用了src_mask
  3. src_mask, tgt_mask 在attention 計算過程中用到
  4. RM的輸出結果memory,每一個t時刻的memory都被拉成了向量身坐,最后拼接在一起秸脱,在每一個MCLN中用到落包。

代碼理解

作者的R2Gen模型里EncoderDecoder模塊是最復雜的部蛇。

  1. 首先實現了CaptionModel類,可以調用函數咐蝇,分別執(zhí)行_forward()和_sample()涯鲁,實現了beam_search()。
  2. 然后AttModel繼承于CaptionModel類有序,實現了_sample()函數抹腿,在測試過程中用到。
  3. 最后EncoderDecoder又繼承于AttModel旭寿,實現了_forward()警绩,在訓練過程中用到。
  4. 最后的搜索過程盅称,也就是_sample() 函數根據不同的策略會有不同的實現肩祥。

本文的創(chuàng)新之處在于設計了Relational Memory 模塊,并使用到MCLN中缩膝。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末混狠,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子疾层,更是在濱河造成了極大的恐慌将饺,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痛黎,死亡現場離奇詭異予弧,居然都是意外死亡,警方通過查閱死者的電腦和手機湖饱,發(fā)現死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門掖蛤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人琉历,你說我怎么就攤上這事坠七∷祝” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵彪置,是天一觀的道長拄踪。 經常有香客問我,道長拳魁,這世上最難降的妖魔是什么惶桐? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮潘懊,結果婚禮上姚糊,老公的妹妹穿的比我還像新娘。我一直安慰自己授舟,他們只是感情好救恨,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著释树,像睡著了一般肠槽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奢啥,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天秸仙,我揣著相機與錄音,去河邊找鬼桩盲。 笑死寂纪,一個胖子當著我的面吹牛,可吹牛的內容都是我干的赌结。 我是一名探鬼主播捞蛋,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼姑曙!你這毒婦竟也來了襟交?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伤靠,失蹤者是張志新(化名)和其女友劉穎捣域,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體宴合,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡焕梅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了卦洽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贞言。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖阀蒂,靈堂內的尸體忽然破棺而出该窗,到底是詐尸還是另有隱情弟蚀,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布酗失,位于F島的核電站义钉,受9級特大地震影響,放射性物質發(fā)生泄漏规肴。R本人自食惡果不足惜捶闸,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拖刃。 院中可真熱鬧删壮,春花似錦、人聲如沸兑牡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽发绢。三九已至硬耍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間边酒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工狸窘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留墩朦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓翻擒,卻偏偏與公主長得像氓涣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陋气,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容