分子排列不同会导致_生物信息遇上Deep learning(7): ReLeaSE--强化学习做药物分子设计...
前言
這篇論文來自北卡羅來納大學的醫學團隊的一篇使用強化學習(reinforment learning,RL)技術做藥物分子設計的文章,這篇文章和基因組學的關聯并不是太大,因為目前在各大期刊上還沒找到將強化學習運用到生物信息學或者基因組學的文章,奔著想學習強化學習,就找了這篇分子結構生成的文章。目前這個分子合成的是基于GANs和圖網絡的方法比較多。
相關鏈接:
論文地址 :https://advances.sciencemag.org/content/4/7/eaap7885, 在2018年中旬發表在了Science Advances上
源碼地址:https://github.com/isayev/ReLeaSE,代碼是基于pytorch寫的,其中還用到JAK2和SMILES等用于生成分析序列的工具,作者給了三個demo,我也實現了網絡部分stack-rnn和reinforment learning 部分的代碼
Motivation
作者提出人工智能在藥物設計已經具有一定的發展,例如分子相互作用(molecular docking), 轉錄組學(transcriptomics), 分子能量預測(molecular energy prediction)等等諸多子領域, 而目前從已知的structure-activity relationship (SAR) 數據中挖掘或者合成新型結構的藥物是藥物設計中的關鍵步驟,而作者希望利用深度學習技術從零(de novo)設計具有特定物理化學性質的新型的藥物分子,從而有效地加快新型藥物研制的速度。
通過學習170 萬種已知生物活性分子化學結構詞匯背后的句法和語言規則,使用RL技術來創造未出現過的新型分子。
強化學習
強化學習隸屬于機器學習的一個分支,目前機器學習可以分為三類:有監督的機器學習算法、無監督的機器學習算法和強化學習。而近年來比較火熱的深度學習中的強化學習算法,比如Alphago和Deep Mind中dota2戰勝人類的是屬于深度強化學習(deep reinforment learning, DRL),是采用深度神經網絡和強化學習技術相結合的方法。
強化學習的思想是來自于人大腦學習事物的思想,我覺得是一種“嘗試錯誤”思想,當學習一件事物或者做決策的時候,當我們作出正確的選擇,環境會給我們獎勵,而錯誤的選擇則會導致懲罰,然后建模學習決策的過程。
上面過程可以抽象成幾個狀態,狀態(state) 、動作(action)、以及執行該動作所接受的瞬時獎賞(reward),而輸入可以看作離散的序列數據。
- reward 表示在某個動作過后,或者一系列動作后的獎賞值,算法的目的是最大化累積reward期望
- state 表示玩家(agent)所處的位置, policy會記錄到達該狀態的行進的路徑
- action 表示從一個狀態轉移到另外一個狀態的行動,每個行動都會產生reward
RL的核心就是最大化一個value function, 使得rewardk的值最大化,基于以上的基本思想,強化學習也發展出不同的分支:下面就是比較基本的分類:
這個圖是來自與openAI Spinning Up的劃分, 地址在這:https://spinningup.openai.com/en/latest/spinningup/rl_intro2.html#citations-below
主要分成了Model-Free 和 Model-Based兩種
- Model-Free 就是在真實的環境中進行學習,學習策略優化,不需要對環境進行建模,一些分支比如Q learning, Sarsa, Policy Gradients 都是從環境中得到反饋然后從中學習
- Model-Based 就是在模擬的環境中學習,把整個學習過程變成了環境模擬學習+策略優化,比如AlphaZero就是在很多模擬的數據場景,給定了訓練模型中學習
根據獎勵策略不同還可以分成Policy-based 和 Value-based
- Policy-based 得到的reward并不是一個獎懲值,而是一個概率,會逐漸增加reward概率高的action的選中概率,作者在ReLeaSE中使用的 Policy Gradients就是基于概率的reward。
- Value-based 的到是獎勵得到的reward期望,根據期望的高低選擇行動,Q-learning就是基于value得到計算reward的
Q-learning
Q-learning中Q表示Q(s, a)就是在當前狀態s(state)下,采取動作a (action)動作能夠獲得reward的期望值,不同的行動a會獲得不同的reward,并用一個Q table來存儲,選擇最大期望后更新Q table,計算流程:
Q table的初始值一般為0, 在一定次數的episode(初始化的過程)后,隨機選擇起始點,在未到達終點之前,計算不同action獲得的reward,選擇最優的路徑單步更新(代碼中會加入隨機的游走概率),更新Q table,其中Q table更新如下:
$
代表學習率,r 表示當前的 表示最大獎勵的衰減系數,更新方式是時間差分法TD, 類似于馬爾可夫鏈計算狀態轉移期望的更新,表示如下:Q learning 是一種貪婪算法,通過最大化Q函數(特定狀態和動作下的未來獎勵期望),通過Q table獲取選擇最優路徑, 同時不斷更新Q table,得到最優近似。
DQN
DQN(deep Q-learning network) 是DRL的一種,DQN不用Q table記錄Q值,而是用神經網絡來預測Q值,并通過不斷更新神經網絡從而學習到最優的行動路徑,解決狀態和行動過多導致Q table 維度和索引爆炸問題,網絡的輸入為state和action的顯式或隱式表達,輸出為對應的Q值Q(s,a),反向傳播過程(MSE loss):
Policy Gradients
Policy Gradients 是Policy Based的RL方法,優點:
- 建模非離散&連續的動作
- 克服隨機策略問題
- 連續空間有高的計算效率(高維max函數耗時)
思想:參考反向傳播,無確定label下,reward代表action的置信度,高reward->增加action概率,低reward->降低action概率,即最大化帶衰減reward的累加期望:
目標函數無法直接優化
ReLeaSE
論文框架:
該部分包括兩個子模型,生成器(generative model)和預測器(predictive model),generative model由一個預訓練的棧式GRU構成,輸入和輸出具有相同維度,輸出新的SMILES字符串作為預測器的輸入,預測器通過policy gradient的算法計算reward,反饋給生成器,并微調兩個網絡其中Policy gradient loss計算如下:
Ri 是在i時刻獲得的reward,
是 discount 因子,$? 是特定前綴下的似然概率, 也就是生成器得到的歸一化logits.Generator
網絡結構:
- 生成器由一個stack-GRU構成,生成的前綴字符串輸入,輸出字符 table全概率,softmax 損失函數
- 預訓練:ChEMBL21 database, 包含1.5 million的SMILES序列->學習分子的排列性質
- 比較預訓練的產生的分子序列和dataset的重合度低,采用SAS驗證化學性質的有效性
- 分析棧式結構相比單層結構生成更優的分子序列
- 生成階段:生成器參數不更新,前綴字符作為輸入,連續預測字符排列,相當于做評估,RL階段會使用Policy Gradients 更新
Predictor
網絡結構:
- 輸入是 SMILES的字符串序列,網絡結構是一個單層的LSTM網絡,包括ont-hot輸入->低維embedding層->LSTM層->全連接層,最后得到一個歸一化的值作為reward。
- 使用OpenChem toolkit進行預訓練,這個是用于評判一個序列的實際性能的工具,預訓練結果作為RL階段的true label
RL training
- 聯合訓練=訓練一個RL框架,生成器相當于agent,生成具有一定化學性質的SMILEs字符串,預測器作為環境反饋,每次對于agent的aciton輸出reward,最終使用policy gradient最小化訓練loss,也就是最大化reward的概率得分。
torch 的policy gradient loss計算:
discounted_reward = reward total_reward += reward for p in range(len(trajectory)-1):output, hidden, stack = self.generator(trajectory_input[p], hidden, stack)log_probs = F.log_softmax(output, dim=1)top_i = trajectory_input[p+1]# 只選取了TOP-N,不是全類別#discounted_reward-> 更新的rewardrl_loss -= (log_probs[0, top_i]*discounted_reward)discounted_reward = discounted_reward * gamma# Doing backward pass and parameters updaterl_loss = rl_loss / n_batchtotal_reward = total_reward / n_batchrl_loss.backward()實驗分析
最后為了驗證整個RL框架的有效性,將輸出的SMILES string進行了很多方面的效果評估,都是用一些現成的獨立工具,和網絡的訓練沒有關系,例如用T-SNE進行分子聚類分析,可視化的化學子結構分析,PIC50分析等等,化學的我不太懂,就不去查了,有興趣可以去看看實驗部分,我們主要目的是為了學習深度強化學習。
可視化分析本部分結束
歡迎大家關注我的知乎專欄:從零開始生物信息學
相同內容也可以關注我的微信公眾號: 壹讀基因:
總結
以上是生活随笔為你收集整理的分子排列不同会导致_生物信息遇上Deep learning(7): ReLeaSE--强化学习做药物分子设计...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 导出滴滴行程单_身穿统一的绿马甲!滴滴货
- 下一篇: 二叉树为空意味着二叉树_程序员的进阶课-