PyTorch開發新藥?哈佛出品,10行代碼訓練「藥神」模型

2020-08-31 量子位

蕭簫 編輯整理
量子位 報導 | 公眾號 QbitAI

最近,來自哈佛大學等機構的研究人員,開發出了一個AI「藥神」工具包,為加速新冠疫情下的新藥研發助力。

這款名為DeepPurpose的工具包,不僅包含COVID-19的生物測定數據集,還有56種前沿的AI模型

作為一個基於PyTorch的工具包,DeepPurpose只需要不到10行代碼,就能訓練出AI「藥神」模型。

這些模型不僅能完成虛擬篩選,還能挖掘出已有藥物的新功能(例如,高血壓藥物可治療阿爾茲海默症)

下面來看看它實現的原理。

56種前沿模型,功能齊全

DeepPurpose由兩個編碼器組成,分別用來生成藥物分子和蛋白質的嵌入(Embedding),也就是深度學習過程中的映射。

隨後,將這兩個編碼器串聯到解碼器中,用於預測二者的結合親和力,如下圖所示。

在這期間,模型的輸入是藥物靶標對(drug-target pair),輸出則是指示藥物-靶對的結合活性的分數。

當然,DeepPurpose畢竟是一個工具包,所以無論是藥物分子、還是蛋白質,它們的編碼器都不止一種類型

對於藥物分子,DeepPurpose提供了8種編碼器

在這些編碼器中,有用於構造分子結構圖的、有將繪製的分子轉換成二進位數的、也有用於獲取序列順序信息的等……模型各有不同。

而對於靶蛋白,DeepPurpose也提供了7種編碼器,相較於藥物的化學和信息學, 編碼器對靶蛋白的轉換更多地側重於生物學信息。

也就是說,DeepPurpose一共能提供7*8=56種模型,其中許多模型非常新穎前沿,值得入手。

那麼,DeepPurpose究竟該怎麼上手呢?

10步以內,上手AI「藥神」

事實上,訓練一個新藥研發模型,需要通過以下幾個步驟,每一步都只需要用1行代碼實現,所有這些步驟加起來,也不超過10步

來看看這個模型要經過的步驟:

1、數據加載
2、指定編碼器
3、分割數據集、編碼
4、生成模型配置文件
5、初始化模型
6、訓練模型
7、舊藥新用/虛擬篩選
8、模型保存/加載

其中,DeepPurpose最關鍵的兩個功能,舊藥新用虛擬篩選可以在訓練後實現。可以看見,DeepPurpose會自動生成藥物的親和度,並由低到高進行排序。

這樣,就能快速縮小高通量分子的篩選範圍(如果親和度為0,那真的不必考慮了)

至於虛擬篩選,也是類似的工作,會生成一個與上圖相似的排名列表。

不僅如此,這個AI模型還包含另外幾種案例,例如SARS-CoV2 3CLPro的舊藥新用方法、預訓練模型等。

此外,針對近期引發關注的新冠疫情,DeepPurpose也包含了MIT收集的COVID-19開源數據集

針對這些數據,工具包中有相應的函數,可以直接引用。

而這個工具包的框架,正是基於藥物研發的原理製作的。

靶蛋白:藥物作用對象

藥物篩選最根本的原理,通常是判斷藥物分子與靶蛋白(藥物作用的目標)親和性

為什麼是蛋白質?

事實上,這是因為部分疾病(例如癌症、腫瘤)產生的原因,通常與某一類蛋白質有關,如果能找到、並用藥物「調節」這種蛋白質,就能治癒疾病。

圖片來源於flickr

例如,細胞與細胞之間的交流,依靠的就是細胞膜上的糖蛋白。而某種疾病發生的原因,可能就是因為一類細胞上的糖蛋白過度表達

而這個糖蛋白,就被稱之為疾病過程中的靶蛋白

但能用來調節某種靶蛋白的藥物,並不好找,畢竟不是每種化合物都能很好地與靶蛋白「貼貼」。

在這樣的基礎上,研究人員開發了DeepPurpose,這個工具包能用於預測藥物分子與靶蛋白的親和度,專業學術名詞叫藥物-靶標相互作用(Drug-Target Interaction, DTI),簡稱DTI

之所以選擇用AI助力新藥研發,也有其背後的原因。

AI助新藥研發一臂之力

事實上,藥廠研發出一種新藥,需要15年左右,甚至更久。

而在這期間,光是研究開發的階段,就要花掉2-10年

研究開發的階段,目的是篩選出有治療潛力的新化合物,也就是說,每一種化合物都需要做實驗,去不斷試錯。

這一過程不僅枯燥無味,而且工程量巨大,人力財力都得砸。

如果用AI完成藥物篩選這一過程,對於新藥研發的加速將會起到不小的作用。

作者介紹

論文的第一作者黃柯鑫,本科於紐約大學獲得數學和計算機雙學位,目前在哈佛大學讀碩士,專業與醫療大數據有關。

黃柯鑫的研究方向,主要是圖神經網絡(GNN)在新藥研發和醫療文本(如電子病歷等)上的應用。

此外,Tianfan Fu、Lucas Glass、Marinka Zitnik、Cao Xiao和Jimeng Sun也共同參與了研究工作。

傳送門

論文連結:
https://arxiv.org/abs/2004.08919

項目連結:
https://github.com/kexinhuang12345/DeepPurpose

黃柯鑫主頁:
https://www.kexinhuang.com/

— 完 —

量子位 QbitAI · 頭條號籤約

關注我們,第一時間獲知前沿科技動態

相關焦點

  • PyTorch還能開發新藥?哈佛出品,10行代碼訓練「藥神」模型
    蕭簫 編輯整理量子位 報導 | 公眾號 QbitAI最近,來自哈佛大學等機構的研究人員,開發出了一個AI「藥神」工具包,為加速新冠疫情下的新藥研發助力。這款名為DeepPurpose的工具包,不僅包含COVID-19的生物測定數據集,還有56種前沿的AI模型。
  • 首個ML的生物醫藥大型數據集,3行代碼就能運行丨哈佛MIT等出品
    無論是查找、處理數據,還是驗證模型效果,之前的研究,都只能在幾個小型數據集、或是已經被反覆研究的幾個任務上進行。這極大地降低了ML在生物醫藥領域的應用進展。為此,一群來自哈佛、MIT、斯坦福等機構的研究人員,開發出了第一個ML領域的生物醫藥大型數據集TDC,還附帶最新的模型評估方法。這是個什麼樣的數據集?
  • 基於PyTorch的CV模型框架,北大學生出品TorchCV
    剛剛推出 1.3 正式版的 PyTorch 風頭正勁,人們已經圍繞這一深度學習框架開發出了越來越多的工具。最近,一個名為 TorchCV 的計算機視覺模型框架站上了 GitHub 趨勢榜。項目連結:https://github.com/donnyyou/torchcv該庫提供了基於深度學習的大部分 CV 問題研究的原始碼,對於使用者來說,調用最常用、最為先進的計算機模型從此可以變得更加容易。TorchCV 的作者 Donny You 來自北京大學,是機器感知與智能教育部重點實驗室的一名研三學生。
  • 一行代碼即可調用18款主流模型!PyTorch Hub輕鬆解決論文可復現性
    PyTorch Hub包含了一系列與圖像分類、圖像分割、生成以及轉換相關的預訓練模型庫,例如ResNet、BERT、GPT、VGG、PGAN、MobileNet等經典模型,PyTorch Hub試圖以最傻瓜的方式,提高研究工作的復現性。有多簡單呢?圖靈獎得主Yann LeCun發推表示,只需要一行代碼就可以調用所有倉庫裡的模型,通過一個pull請求來發布你自己的模型。
  • PyTorch最佳實踐,教你寫出一手風格優美的代碼
    這是一個開發的項目,歡迎其它讀者改進該文檔:https://github.com/IgorSusmelj/pytorch-styleguide 本文檔主要由三個部分構成:首先,本文會簡要清點 Python 中的最好裝備。接著,本文會介紹一些使用 PyTorch 的技巧和建議。
  • PyTorch中使用DistributedDataParallel進行多GPU分布式模型訓練
    分布式訓練是使用多個GPU和/或多個機器訓練深度學習模型的技術。 分布式訓練作業使您能夠克服單GPU內存瓶頸,通過同時利用多個GPU來開發更大,功能更強大的模型。這篇文章是使用torch.nn.parallel.DistributedDataParallel API在純PyTorch中進行分布式訓練的簡介。
  • PyTorch上也有Keras了,訓練模型告別Debug,只需專注數據和邏輯
    魚羊 發自 凹非寺量子位 報導 | 公眾號 QbitAI在開始一個新的機器學習項目時,難免要重新編寫訓練循環,加載模型,分布式訓練……然後在Debug的深淵裡看著時間譁譁流逝,而自己離項目核心還有十萬八千裡。
  • PyTorch 1.6來了:新增自動混合精度訓練、Windows版開發維護權移交...
    需要注意的是,Prototype 特性不包含在二進位包中,但可以通過使用 Nightly 從原始碼構建或通過編譯器標誌(compiler flag)來使用。此外,Facebook 還宣布,他們將把 Windows 版 PyTorch 的開發維護權移交給微軟。
  • 教程| 利用AllenNLP,百行Python代碼訓練情感分類器
    >作者:Masato Hagiwara機器之心編譯參與:Geek AI、路本文介紹了如何利用 AllenNLP,使用不到一百行代碼訓練情感分類器AllenNLP 是艾倫人工智慧研究院開發的開源 NLP 平臺。它的設計初衷是為 NLP 研究和開發(尤其是語義和語言理解任務)的快速迭代提供支持。它提供了靈活的 API、對 NLP 很實用的抽象,以及模塊化的實驗框架,從而加速 NLP 的研究進展。
  • 用Java實現目標檢測|PyTorch
    很多論文都選擇使用PyTorch去實現也證明了它在訓練方面的效率以及易用性。在PyTorch領域,儘管部署一個模型有很多選擇,可為Java開發人員準備的選項卻屈指可數。在過去,用戶可以用PyTorch C++ 寫JNI (Java Native Interface) 來實現這個過程。最近,PyTorch 1.4 也發布了試驗性的Java 前端。
  • PyTorch實現TPU版本CNN模型
    隨著深度學習模型在各種應用中的成功實施,現在是時候獲得不僅準確而且速度更快的結果。為了得到更準確的結果,數據的大小是非常重要的,但是當這個大小影響到機器學習模型的訓練時間時,這一直是一個值得關注的問題。為了克服訓練時間的問題,我們使用TPU運行時環境來加速訓練。為此,PyTorch一直在通過提供最先進的硬體加速器來支持機器學習的實現。
  • 用Java實現目標檢測 | PyTorch
    很多論文都選擇使用PyTorch去實現也證明了它在訓練方面的效率以及易用性。在PyTorch領域,儘管部署一個模型有很多選擇,可為Java開發人員準備的選項卻屈指可數。在過去,用戶可以用PyTorch C++ 寫JNI (Java Native Interface) 來實現這個過程。
  • Pytorch中的分布式神經網絡訓練
    經常,在訓練這些網絡時,深度學習從業人員需要使用多個GPU來有效地訓練它們。 在本文中,我將向您介紹如何使用PyTorch在GPU集群上設置分布式神經網絡訓練。通常,分布式訓練會在有一下兩種情況。在GPU之間拆分模型:如果模型太大而無法容納在單個GPU的內存中,則需要在不同GPU之間拆分模型的各個部分。跨GPU進行批量拆分數據。
  • PyTorch模型訓練特徵圖可視化(TensorboardX)
    0、前言本文所有代碼解讀均基於PyTorch 1.0,Python3;本文為原創文章,初次完成於2019.03,最後更新於2019.09;
  • PyTorch框架歷史和特性更迭與安裝過程
    截至本書寫作的時候,PyTorch的最新版本為1.3.0,所以本書敘述的歷史為PyTorch 1.3.0之前的特性更迭,本書後面的代碼將主要基於PyTorch 1.3.0。PyTorch是由Facebook公司開發的深度學習框架,其起源應該是Torch這個深度學習框架。Torch深度學習框架最初的開發可以追溯到2002年。
  • Pytorch中的分布式神經網絡訓練|pytorch|bat|拆分|調用_網易訂閱
    通常,分布式訓練會在有一下兩種情況。  1. 在GPU之間拆分模型:如果模型太大而無法容納在單個GPU的內存中,則需要在不同GPU之間拆分模型的各個部分。  1.跨GPU的模型拆分  跨GPU拆分模型非常簡單,不需要太多代碼更改。 在設置網絡本身時,可以將模型的某些部分移至特定的GPU。 之後,在通過網絡轉發數據時,數據也需要移動到相應的GPU。 下面是執行相同操作的PyTorch代碼段。
  • Keras 之父講解 Keras:幾行代碼就能在分布式環境訓練模型 |...
    我們有一組 10 秒短視頻組成的數據集,視頻內容是人從事各種活動。一個深度學習模型將會觀察這些視頻的每一幀畫面,進行理解,然後你可以用簡短的自然語言問它視頻內容。 把詞語序列導入內嵌層(embedding layer),生成矢量序列,再用 LSTM 層簡化為單一矢量。代碼演示下面是視頻編碼機器人的完整代碼,加起來只有幾行,非常簡潔。你從確認視頻輸入開始,高亮部分就是你的視頻輸入:
  • 雲計算學習:用PyTorch實現一個簡單的分類器
    主要流程分為以下三個部分:1,自定義生成一個訓練集,具體為在二維平面上的一些點,分為兩類;2,構建一個淺層神經網絡,實現對特徵的擬合,主要是明白在 pytorch 中網絡結構如何搭建;3,完成訓練和測試部分的工作,熟悉 pytorch 如何對網絡進行訓練和測試。1.
  • 新版PyTorch 1.2 已發布:功能更多、兼容更全、操作更快!
    (https://pytorch.org/docs/stable/jit.html)而現在,我們很高興地宣布我們已經成功開發了四個新版本,包括 PyTorch 1.2,torchvision 0.4,torchaudio 0.3 和 torchtext 0.4。
  • PyTorch 1.7發布,支持CUDA 11、Windows分布式訓練
    PyTorch 1.7 部分新特性,詳情參見 https://github.com/pytorch/pytorch/releases/tag/v1.7.0。開發者對 PyTorch 1.7 的態度有開發者對 PyTorch 1.7「支持 Windows 上的分布式訓練」這一新功能表示讚賞:以及樂見於「PyTorch 對 CUDA 11 的支持」:依然有人趁機表白 PyTorch,並列出偏好 PyTorch 的原因,如報錯易讀、代碼直觀、易於實驗。