GIỚI THIỆU
Cải thiện cuộc sống của con người một cách bền vững là một trong các nhiệm vụ trọng tâm của kỹ thuật hóa học và ngành hóa học Nhằm đạt được điều này, các nhà hóa học và kỹ sư cần tìm ra các hợp chất hóa học hoặc vật liệu tốt hơn: ví dụ như phân tử thuốc có hiệu quả điều trị tốt nhưng độc tính thấp, vật liệu có hiệu suất chuyển đổi ánh sáng mặt trời sang năng lượng tốt hơn, Mặc dù vậy, không gian tìm kiếm có thể đến hơn 10 60 cấu trúc hóa học khác nhau,[6] và do đó, việc sàng lọc không gian gồm tất cả các cấu trúc hóa học chỉ với thực nghiệm là hoàn toàn không khả thi Thậm chí việc này là không thể hoàn thành chỉ với công cụ tính toán lý thuyết do các tính toán chất lượng cao cần rất nhiều thời gian và chi phí tính toán (computational cost) Một chiến thuật khôn ngoan để sàng lọc một cách hiệu quả là ta có thể xây dựng một trình tự sàng lọc hình chiếc phễu: các cấu trúc trong không gian tìm kiếm sẽ đi qua nhiều mô hình sàng lọc khác nhau và số lượng cấu trúc ra khỏi mỗi “sàng” sẽ ít hơn số lượng cấu trúc đi vào; mô hình sau sẽ có chi phí và thời gian tính toán nhiều hơn các mô hình trước Hay nói cách khác, quy trình sàng lọc sẽ cố gắng thu hẹp dần không gian tìm kiếm và các mô hình với chi phí thấp sẽ được sử dụng để sàng lọc các không gian tìm kiếm rộng lớn ban đầu Hình minh họa cho chiến lược này được cho ở hình 1.1 Đến đây ta có thể đặt câu hỏi: đâu là mô hình sàng lọc với chi phí thấp nhưng lại cho hiệu quả cao nhất? Câu trả lời có thể sẽ là machine learning và artificial intelligence (máy học và trí tuệ nhân tạo, ML/AI) Trước tiên, ML/AI cung cấp một giải pháp tính toán với chi phí tương đối thấp so với các phương pháp lí thuyết ab initio Thêm vào đó, các mô hình ML/AI có thể đạt độ chính xác cao hơn các phương pháp lý thuyết có cùng chi phí tính toán Trên thực tế, các mô hình ML/AI có thể
“học” được dữ liệu từ các tính toán chất lượng cao, và do đó, có thể đạt được độ chính xác của các mô hình này với khoảng sai số tương đối.[7, 8] Điều này khiến cho các công cụ ML/AI trở thành các công cụ xây dựng mô hình tiềm năng cho việc sàng lọc cấu trúc hóa học.[9]
Hình 1.1 Hình minh họa cho chiến thuật sàng lọc theo dạng phễu.[6]
Vật liệu bán dẫn hữu cơ (organic semiconductor) mở ra một kỉ nguyên mới cho công nghệ điện tử từ vật liệu hữu cơ Lớp vật liệu này được dự đoán sẽ thay thế vật liệu dựa trên silicon vốn được sử dụng nhiều cho các công nghệ điện tử Các vật liệu bán dẫn hữu cơ được chia thành 4 nhóm chính: diodes phát sáng hữu cơ (organic light-emitting diodes, OLEDs),[10] transistor hiệu ứng trường hữu cơ (organic field effect transistors),[11, 12] và quang điện hữu cơ (organic photovoltaics).[13, 14] Luận văn này sẽ tiếp nối những công trình trước của tác giả và nhóm nghiên cứu[1-
4] về việc xây dựng mô hình dự đoán tính chất điện tử bao gồm band gap, electron affinity (EA), và ionization potential (IP) cho các hợp chất đa vòng thơm bao gồm PAH, thienoacenes, và dẫn xuất có nhóm thế của PAH Tuy nhiên, ở đây, mô hình được sử dụng sẽ hoàn toàn là machine learning để đạt được mô hình tổng quát nhất Ngoài ra, lớp phân tử PAH có gắn nhóm thế NO2 sẽ được đưa vào việc mô hình hóa bên cạnh các lớp phân tử đã được mô hình hóa trong các công bố trước đó bao gồm PAH, thienoacenes, và CN-PAH
Xây dựng mô hình máy tính dựa trên thuật toán machine learning (học máy) có:
Input - Đầu vào: cấu trúc 2 chiều của Polycyclic Aromatic Hydrocarbon (PAH), thienoacenes, PAH có gắn nhóm thế -CN, -NO2
Quantum chemistry calculations predict electronic properties of molecules, including band gap, Electron Affinity (EA), and Ionization Potential (IP).
Mô hình sẽ được xây dựng bằng cách “huấn luyện” (train) nó với một bộ dữ liệu huấn luyện (training set)
Mô hình mục tiêu được minh họa trong flowchart của hình 1.2 Dữ liệu dùng để xây dựng và kiểm tra mô hình lấy từ các phép tính hóa lượng tử chất lượng cao
Hình 1.2 Sơ đồ mô tả mô hình machine learning cho việc dự đoán band gap của
TỔNG QUAN
Giới thiệu về vật liệu bán dẫn hữu cơ dựa trên phân tử đa vòng thơm
Ngày nay, các phân tử hữu cơ đa vòng thơm là một trong những ứng viên cho các ứng dụng “hữu cơ” vốn chỉ bao gồm vật liệu vô cơ trước đó như bán dẫn, transistor trường điện tử, diode phát sáng,[15] và vật liệu quang điện Tính chất đáng mong muốn của một phân tử đa vòng thơm sử dụng cho mục đích làm vật liệu bán dẫn hữu cơ có thể được tóm gọn bởi 3 ý như sau: 1/ có các tính chất (quang) điện tử liên quan tốt, 2/ có độ linh động điện tích (charge mobility) tốt, 3/ bền trước các tác nhân oxi hóa-khử và các phản ứng hóa học không mong muốn [1] Để có thể tìm được các phân tử thỏa cả các điều kiện này, ta có thể dựa vào các giá trị năng lượng của orbital phân tử cao nhất có chứa electron (Highest Occupied Molecular Orbital - HOMO) và năng lượng của orbital phân tử thấp nhất còn trống (Lowest Unoccupied Molecular Orbital – LUMO) và khoảng cách giữa 2 mức năng lượng này Cũng cần lưu ý rằng theo định lý Koopman, ta có thể xấp xỉ giá trị HOMO là thế ion hóa (Ionization Potential – IP), và giá trị LUMO là ái lực điện tử (Electron Affinity – EA).[16] Các giá trị năng lượng này đóng một vai trò quan trọng khi xem xét khả năng ứng dụng bán dẫn lượng tử của các phân tử đa vòng thơm Quan trọng nhất, HOMO, LUMO, và bandgap của một phân tử hữu cơ đa vòng thơm sẽ quyết định độ bền của chúng trước các phản ứng không mong muốn Các phản ứng này sẽ bao gồm phản ứng oxi hóa khử và phản ứng Diels-Alder.[17] Trên thực tế, một trong những rào cản và mối quan tâm lớn nhất khi lựa chọn phân tử cho ứng dụng bán dẫn hữu cơ chính là độ bền của chúng Các phân tử acene thẳng có nhiều vòng thơm hơn pentacene (cấu trúc B trong hình 2.1) sở hữu tính chất điện tử tốt hơn (ví dụ như độ linh động điện tích) cho ứng dụng dụng bán dẫn hữu cơ nhưng lại gặp phải vấn đề là chúng rất không ổn định do có IP thấp và band gap hẹp và do đó chúng rất dễ tham gia vào các phản ứng oxi hóa-khử, phản ứng quang hóa, hay Diels-Alder Về cơ bản, các acenes thẳng càng dài thì sẽ càng dễ tham gia phản ứng hóa học, với vòng ở giữa dễ trở thành tâm phản ứng, và do đó, sẽ không đủ ổn định cho ứng dụng làm vật liệu bán dẫn [11, 17] Thêm vào đó, các phân tử acene thẳng càng dài thì sẽ càng gây khó khăn trong việc tổng hợp các tinh thể tương ứng, ví dụ như khó hòa tan các phân từ này và đòi hỏi các nhóm thế giúp tăng độ hòa tan của phân tử.[11] Điều này đặt ra một trở ngại khi cố gắng cải thiện các phân tử acene thẳng như pentacene chỉ với cách nối dài hệ liên hợp với nhiều vòng thơm hơn Để cải tiến các phân tử “cổ điển” cho bán dẫn hữu cơ là acene thẳng bao gồm tetracene (cấu trúc A trong hình 2.1) và pentacene, người ta đã đề xuất một vài hướng như sau Đơn giản nhất, người ta đề xuất gắn các nhóm thế cồng kềnh để bảo vệ các tâm phản ứng và do đó, bền hóa các phân tử acene thẳng Tuy nhiên, người ta cũng phát hiện rằng tương tác lập thể khiến cho các phân tử mất khả năng sắp xếp theo kiểu 𝜋-stacking, và do đó, làm giảm khả năng truyền tải điện tích trong phân tử [17] Bên cạnh đó, việc sử dụng các nhóm rút đẩy điện tử như fluorine (F), hay cyano (CN) cũng là một lựa chọn để tăng IP của phân tử theo hướng bền hóa trước các tác nhân oxy hóa.[11] Thêm vào đó, nhóm thế cyano cũng đem lại một số cải thiện khác cho phân tử như độ bền nhiệt và tương tác liên phân tử trong quá trình tổng hợp tinh thể ở dạng phim, [18] cải thiện tính chất điện tử của phân tử cho ứng dụng bán dẫn loại n,[19] Mặt khác, thay vì chỉ sử dụng phân tử acenes thẳng như tetracene, pentacene như đã đề cập ở trên, người ta đề xuất sử dụng các acene ngưng tụ 2 chiều như các cấu trúc C và D ở hình 2.1.[17] Bên cạnh đó, các vòng thơm khác như thiophene cũng có thể được sử dụng để xây dựng và tối ưu phân tử đa vòng thơm cho ứng dụng bán dẫn hữu cơ Các hợp chất đa vòng thơm với 1 hay nhiều vòng thiophene được gọi là thienoacene Nhóm phân tử này có rất nhiều hình dạng khác nhau mà người ta có thể tổng hợp được,[2] và do đó, đem lại rất nhiều lựa chọn để các nhà nghiên cứu “tối ưu hóa” phân tử cho ứng dụng bán dẫn hữu cơ (xem cấu trúc E, F, G, và H ở hình 3) Người ta đã tìm ra được rằng các hợp chất thienoacene có các tính chất điện tử đáng mong muốn cho một vật liệu bán dẫn hữu cơ, nhưng vẫn có độ bền tốt Do đó, thienoacenes là một nhóm các phân tử có tiềm năng đáng kể trong lĩnh vực bán dẫn hữu cơ.[20]
Không những là chỉ dấu cho độ bền của các phân tử, HOMO, LUMO, và band gap cũng là các chỉ dấu cho hiệu suất và tiềm năng của các phân tử đa vòng thơm cho ứng dụng bán dẫn lượng tử Đối với vật liệu quang điện, hiệu suất chuyển đổi năng lượng (Power Conversion Efficiency – PCE) sẽ phụ thuộc vào giá trị mật độ dòng điện ngắn mạch (short circuit current density 𝐽 𝑠𝑐 ) và hiệu điện thế mạch hở (open circuit voltage
𝑉 𝑜𝑐 ) Giá trị 𝑉 𝑜𝑐 phụ thuộc vào HOMO và LUMO của vật liệu, trong khi 𝐽 𝑠𝑐 phụ thuộc vào band gap.[13] Đến đây, chúng ta có thể đi đến kết luận rằng các giá trị bandgap, HOMO/IP, và LUMO/EA là các tham số quan trọng để tối ưu hóa các phân tử đa vòng thơm cho ứng dụng bán dẫn hữu cơ
Hình 2.1 Một số phân tử đa vòng thơm được đề cập.
Giới thiệu về machine learning trong hóa học
2.2.1 Tổng quan về thuật toán supervised machine learning
Thuật toán machine learning (ML) có thể được chia thành supervised learning (học có giảm sát), unsupervised learning (học không giám sát), reinforcement learning (học tăng cường), Ứng dụng của thuật toán máy học supervised learning được xem xét trong luận văn này Sản phẩm của thuật toán này có thể được xem như một hàm toán học ánh xạ tính chất của một điểm dữ liệu sang tính chất cần mô hình hóa/dự đoán của nó (hay còn gọi là “nhãn”) Nếu ta kí hiệu bộ tính chất của một điểm dữ liệu là một vector 𝑋 𝑖 và hàm ánh xạ của thuật toán ML là 𝑓, hàm này sẽ nhận 𝑋 𝑖 trả về một giá trị dự đoán 𝑦̂ 𝑖 = 𝑓(𝑋 𝑖 ) sao cho 𝑦̂ 𝑖 gần với giá trị “nhãn” 𝑦 𝑖 nhất có thể Nếu như giá trị dự đoán 𝑦 là liên tục (ví dụ như giá trị band gap của phân tử), thuật toán được gọi là regression (hồi quy) Nếu như giá trị dự đoán 𝑦 là rời rạc (không liên tục, ví dụ như 1 hoặc 0 tượng trưng cho có tính độc hay không trong bài toán phân loại độc chất), ta gọi bài toán là classification (phân loại) Đặc trưng của bộ dữ liệu sử dụng cho việc huấn luyện thuật toán này chính là từng điểm dữ liệu có “nhãn” Ở đây, nhãn dùng để chỉ giá trị mục tiêu đang được mô hình hóa hay dự đoán bởi mô hình, ví dụ như giá trị band gap của phân tử trong bài toán dự đoán giá trị band gap của phân tử từ cấu trúc của chúng (xem ví dụ hình I.2) Bên cạnh đó, các điểm dữ liệu trong bộ dữ liệu dùng cho huấn luyện thuật toán này cũng bao gồm các tính chất (feature) mà mô hình sử dụng cho việc dự đoán “nhãn” Ví dụ, nếu như ta sử dụng ML để dự đoán band gap phân tử như ví dụ ở trên, phần dữ liệu tính chất của phân tử sẽ bao gồm cấu trúc 2 chiều của hợp chất Vai trò và ví dụ cho các tính chất và nhãn của dữ liệu trong mô hình ML trong hóa học sẽ được làm rõ ở các phần tiếp theo của luận,
Một đặc trưng của các mô hình ML là chúng có các parameters (tham số, còn được gọi là weight hay trọng số) Việc xây dựng mô hình ML chính là fit (tìm giá trị khớp nhất có thể) các tham số này với bộ dữ liệu huấn luyện Một cách cụ thể hơn, việc này tương đương với tìm giá trị tham số để tối thiểu hóa sai số (hay tối đa hóa độ chính xác) của mô hình Trong các tài liệu về machine learning, các giá trị này được cho bởi hàm loss function (hàm mất mát) Với các bài toán hồi quy, hàm thường được sử dụng là Mean Square Error (MSD, trung bình bình phương sai số), và do đó, việc fit mô hình hồi quy tương đương việc giải bài toán tối ưu như sau:
[𝑓(𝑋 𝑖 ) − 𝑦 𝑖 ] 2 Với 𝑤 là tham số của thuật toán hồi quy 𝑓 𝑤 , 𝑋 𝑖 , 𝑦 𝑖 lần lượt là dữ liệu đầu vào và giá trị “đúng” của điểm dữ liệu thứ 𝑖
2.2.2 Một số thuật toán toán Supervised Machine learning Để có thể làm rõ hơn bản chất của thuật toán máy học cho bài toán hồi quy và việc huấn luyện chúng, một số thuận toán điển hình sẽ được trình bày ở đây Cần chú ý rằng đây là các thuật toán cho ta một hám ánh xạ từ vector sang một số nguyên: 𝑓: 𝑅 𝑁 → 𝑅
Multivariate linear regression (MLR) (hồi quy tuyến tính đa biến): [21-23] Đây là một thuật toán đơn giản có dạng:
𝑦̂ = 𝑤 𝑖 0 + 𝑤 1 𝑥 𝑖1 + 𝑤 2 𝑥 𝑖2 + ⋯ 𝑤 𝑛 𝑥 𝑖𝑛 = 𝑊 𝑇 𝑋 𝑖 Với đầu vào thứ i 𝑋 𝑖 = [1 𝑥 𝑖1 𝑥 𝑖2 … 𝑥 𝑖𝑛 ] 𝑇 và tham số 𝑊 = [𝑤 𝑜 𝑤 1 𝑤 2 … 𝑤 𝑛 ] 𝑇 với
𝑤 0 đóng vai trò bias hay 𝑏 trong phương trình tuyến tính 𝑦̂ 𝑖 = 𝑤 𝑇 𝑋 𝑖 + 𝑏 Với bài toán hồi quy, hàm sai số của mô hình sẽ là hàm mean square error (bình phương trung bình sai số):
(𝑦 𝑖 − 𝑊 𝑇 𝑋 𝑖 ) 2 Để tìm 𝑊 sao cho hàm ℒ đạt cực tiểu, ta lấy đạo hàm của ℒ rồi tìm W sao cho đạo hàm này bằng 0 Kết quả thu được biểu thức tính W như sau:
Với 𝑥 11 , 𝑥 12 , … 𝑥 1𝐹 là dữ liệu của cấu trúc hóa học số 1 trong bộ dữ liệu và 𝑦 1 là giá trị “đúng” của tính chất đang được mô hình cho cấu trúc hóa học số 1
Mô hình hồi quy tuyến tính có thể được mở rộng bằng cách biến đổi tất cả các 𝑥 trong phương trình tuyến tính trên sử dụng một hàm phi tuyến tính 𝜙:
𝑦̂ = 𝑤 𝑖 0 + 𝑤 1 𝜙(𝑥 𝑖1 ) + 𝑤 2 𝜙(𝑥 𝑖2 ) + ⋯ 𝑤 𝑛 𝜙(𝑥 𝑖𝑛 ) Một số lựa chọn cho hàm 𝜙 là hàm Gaussian và hàm sigmoid có dạng như sau:
Phương pháp Ridge Regression (RR) có thể hiểu nôm na là một mô hình hồi quy tuyến tính với nguyên tắc tối ưu tham số có cải tiến so với phương pháp bình phương cực tiểu thông thường Thuật toán RR và hàm mục tiêu cho việc tối ưu tham số 𝑊 của nó có dạng:
Việc tìm 𝑊 để tối thiểu hóa hàm mục tiêu cũng tương tự như mô hình hồi quy tuyến tính và kết quả thu được là:[21]
Phần 𝜆𝑊 𝑇 𝑊 được gọi là Tikhonov regularization, và được chứng mình là giúp cho mô hình học một cách ổn định hơn cũng như ngăn ngừa hiện tượng overfitting.[21] Kernel ridge regression (KRR):[21, 22, 24]
Thuật toán KRR có thể được suy ra từ thuật toán hồi quy tuyến tính RR Ta bắt đầu từ hàm mục tiêu của mô hình RR:
2𝑊 𝑇 𝑊 Để tối thiểu hóa hàm ℒ, ta tìm 𝑊 sao cho đạo hàm của ℒ theo 𝑊 là không và thu được:
𝑎 𝑛 𝜙(𝑥 𝑖 ) = Φ 𝑇 𝑎 Thay biểu thức W này vào hàm mục tiêu ở trên, ta được:
2a T ΦΦ 𝑇 𝑎 Đặt ma trận 𝐾 = ΦΦ 𝑇 Thành phần ở hàng 𝑛 cột 𝑚 của ma trận này 𝐾 𝑛𝑚 sẽ được tính như sau:
𝐾 𝑛𝑚 = 𝜙(𝑥 𝑛 ) 𝑇 𝜙(𝑥 𝑚 ) = 𝑘(𝑥 𝑛 , 𝑥 𝑚 ) Ở đây, hàm kernel 𝑘 được giới thiệu Hàm mục tiêu trở thành:
Từ đây, ta có thể tìm giá trị 𝑎 tối thiểu hóa hàm mục tiêu này là:
𝑎 = (𝐾 + 𝜆𝐼) −1 𝑌 Thay 𝑊 trong mô hình RR bằng 𝑎 và Φ, ta được:
𝑦̂ = 𝑊 𝑇 𝜙(𝑥) = 𝑎 𝑇 Φ𝜙(𝑥) = 𝑘(𝑥) 𝑇 (𝐾 + 𝜆𝐼) −1 𝑌 Với 𝑘(𝑥) = [𝑘(𝑥 1 , 𝑥) 𝑘(𝑥 2 , 𝑥) … 𝑘(𝑥 𝑛 , 𝑥)] Nếu như ta đặt trọng số 𝑊 ′ (𝐾 + 𝜆𝐼) −1 𝑌, dự đoán của mô hình 𝑦̂ từ đầu vào 𝑥 sẽ có dạng:
Hay nói cách khác, dự đoán bởi mô hình kernel cho đầu vào 𝑥 bất kì sẽ là tổ hợp tuyến tính có trọng số của ảnh/đầu ra của hàm kernel của 𝑥 và 𝑥 𝑖 cho tất cả 𝑥 𝑖 trong bộ dữ liệu huấn luyện Hàm kernel có thể được xem như là một hàm đo sự giống nhau giữa hai điểm dữ liệu đầu vào.[25] Như vậy, dự đoán của phương pháp kernel sẽ dựa trên tổ hợp của sự giống nhau của đầu vào cần dự đoán và tất cả các điểm dữ liệu huấn luyện Phương pháp kernel là dựa trên bộ nhớ là do nó cần phải “nhớ” các điểm dữ liệu huấn luyện nhằm đưa ra dự đoán thông qua việc tính toán sự giống nhau, khác với các mô hình như RR hay MLP (ở dưới) chỉ sử dụng dự liệu huấn luyện để suy ra trọng số tối ưu
Một số hàm kernel thường dùng cho mô hình KRR cũng như các mô hình có sử dụng hàm kernel khác như Support Vector Machine và Gaussian Process Regression (GPR) bao gồm hàm tuyến tính 𝑘 𝑙𝑖𝑛𝑒𝑎𝑟 và hàm radial basis function (RBF) 𝑘 𝑅𝐵𝐹 Hàm kernel tuyến tính là hàm đơn giản nhất và có dạng 𝑘 𝑙𝑖𝑛𝑒𝑎𝑟 (𝑥 1 , 𝑥 2 ) = 𝑥 1 𝑇 𝑥 2 Hay nói cách khác, là hàm kernel theo định nghĩa ở trên với 𝜙 là tuyến tính 𝜙(𝑥) = 𝑥 Hàm kernel RBF là hàm kernel phi tuyến tính tương đối phổ biến Hàm RBF có dạng:[22, 26]
𝑘(𝑥 1 , 𝑥 2 ) = exp (−𝛾||𝑥 1 − 𝑥 2 || 2 ) Với ||𝑥 1 − 𝑥 2 || 2 là khoảng cách euclid giữa 2 vector Đây chỉ là 2 trong số 7 hàm kernel được hỗ trợ trong thư viện học máy mã nguồn mở sklearn.[27]
Thuật toán mạng neuron nhân tạo (NN) là một mô hình lớp đa tầng bao gồm lớp ẩn (hidden layer) và lớp đầu ra (output layer) Đầu vào của mô hình đi vào lớp ẩn đầu tiên, đầu ra của lớp ẩn đầu tiên đi vào lớp ẩn thứ hai, cứ như vậy cho đến lớp ẩn cuối cùng Đối với lớp ẩn thứ i, vector kết quả Z[i-1] từ lớp ẩn thứ i-1 được xử lý để đưa ra kết quả dự đoán.
Mỗi neuron trong mạng lưới nơ-ron sẽ nhận một vector đầu vào và đưa ra một giá trị nguyên là tổng có trọng số của tất cả các đầu vào, được tính bằng cách nhân giá trị của từng đầu vào với trọng số tương ứng của chúng và cộng lại các tích này.
𝑍 𝑗 [𝑖] = ℎ(𝑊 [𝑗,:] [𝑖] 𝑍 [𝑖−1] + 𝐵 𝑗 [𝑖] ) Với 𝑊 [𝑗,:] [𝑖] là hàng thứ 𝑗 của ma trận 𝑊 [𝑖] Hàm ℎ là hàm activation và là một hàm phi tuyến Một số hàm activation thường dùng bao gồm hàm sigmoid, hàm tanh, và hàm Rectified Linear Unit (ReLU) có dạng lần lượt như sau:
0, 𝑥 < 0 Lớp output layer có dạng tương tự hidden layer nhưng không có hàm activation function:
𝑦̂ = 𝑊 𝑜 𝑇 𝑍 [𝑇] + 𝑏 𝑜 Với 𝑊 𝑜 𝑇 = [𝑊 𝑜1 𝑊 𝑜2 … 𝑊 𝑜𝑁 𝑇] với T là lớp hidden layer cuối cùng
Mô hình neural network có các ma trận tham số 𝑊 [𝑖] và 𝐵 [𝑖] ở mỗi lớp và 𝑊 𝑜 và 𝑏 𝑜 ở lớp output layer Các tham số này sẽ được học trong quá trình “huấn luyện” mô hình bằng cách tối thiểu hóa hàm sai số thông qua các thuật toán Gradient Descent (hay còn gọi là Steepest Descent) và Backpropagation Một cách cụ thể hơn, hàm sai số cho bài toán hồi quy mà ta cần tối ưu là:
Theo thuật toán Gradient Descent, tham số 𝑊 [𝑖] của mô hình được cập nhật như sau:
𝜕𝑊 [𝑖] Để tính toán gradient của hàm sai số ℒ theo 𝑊 [𝑖] , ta sử dụng chain rule:
Biểu diễn cấu trúc hóa học
Việc xây dựng mô hình hồi quy từ cấu trúc hóa học hay vật liệu đòi hỏi phải chuyển các cấu trúc này thành các cấu trúc toán học phù hợp với mô hình máy học Vector là một cấu trúc điển hình, được các mô hình máy học chấp nhận đầu vào Các vector này mô tả và đại diện cho cấu trúc hóa học, được gọi là molecular descriptor hay molecular representation Thành phần của các vector bao gồm các tính chất của phân tử thuộc các nhóm khác nhau.
Constitutional: gồm số lượng các nguyên tử theo loại
Topological: miêu tả sự liên kết của các nguyên tử tạo thành phân tử
Structural: Mô tả cấu trúc 3 chiều của phân tử
Quantum-chemical: bào gồm tính chất hóa lượng tử như momen lưỡng cực, độ phân cực, năng lượng orbital, Các tính chất này có thể được tính toán sử dụng các phần mềm hóa lượng tử hay bán thực nghiệm (semiempirical)
Về nguyên tắc, các tính chất liệt kê trong vector biểu diễn cần phải dễ thu thập, đo đạc hơn tính chất được mô hình hóa.[34] Ví dụ, nếu ta xây dựng mô hình cho tính chất hóa học được thu thập từ thí nghiệm, ta có thể sử dụng tính chất hóa lý lượng tử được tính toán lý thuyết do việc tính toán lý thuyết thường tốn ít công sức và tiền bạc hơn là đo đạc thực nghiệm Việc thiết kế các vector descriptor này hiệu quả sẽ cải thiện độ chính xác của mô hình, tránh nguy cơ mô hình gặp phải lỗi overfitting Một số ví dụ về descriptor sẽ được đưa ra ở phần 2.4
Các nhà khoa học đã sử dụng vector và ma trận để biểu diễn cấu trúc phân tử Fingerprint là vector mô tả tính chất liên kết của các nguyên tử trong phân tử, như ECFP ECFP sử dụng vector gồm số nguyên để ghi nhận sự xuất hiện của các cụm cấu trúc trong phân tử, được xác định bằng thuật toán đệ quy tương tự Weisfeiler-Lehaman Ngoài ECFP, còn có các fingerprint khác như Molecular Access System, Molecular signature và Estate Đối với cấu trúc phân tử 3 chiều, ma trận Coulomb 𝑀 được sử dụng để tính toán.
Có thể thấy ma trận Coulomb bao gồm: tương tác tĩnh điện Coulomb giữa các nguyên tử ở các thành phần không phải đường chéo, và thành phần đường chéo là đa thức điện tích của nguyên tử được fit với năng lượng của nguyên tử Bên cạnh đó, ta vẫn có các lựa chọn khác để biểu diễn cấu trúc 3 chiều của phân tử như molecular transform.[40] Cần lưu ý rằng các vector hay ma trận biểu diễn cấu trúc 3 chiều của phân tử đòi hỏi tọa độ của từng nguyên tử trong phân tử, và do đó, đòi hỏi người dùng thu thập cấu trúc 3 chiều phân tử, ví dụ như thông qua phương pháp tính toán lượng tử
Bên cạnh các vector, phân tử cũng có thể được biểu diễn bằng các cấu trúc dữ liệu khác nhau như hình ảnh, chuỗi kí tự, hay đồ thị (graph), bởi vì đã có những mô hình máy học có khả năng xử lý các cấu trúc dữ liệu này như convolutional neural network cho xử lý hình ảnh,[41] recurrent neural network cho xử lý ngôn ngữ và văn bản,[42] Ở đây, ta sẽ xem xét qua chuỗi ký tự và đồ thị cho biểu diễn phân tử Biểu cấu trúc hóa học ở dạng chuỗi kí tự ASCII là một vấn đề kinh điển trong hóa tin do chuỗi kí tự là một trong những cấu trúc dữ liệu cơ bản nhất của máy tính Chuỗi Simplified Molecular-Input Line-Entry System (SMILES)[43] là một trong những chuỗi ASCII cho cấu trúc hóa học ra đời sớm nhất và cũng là một trong những chuỗi phổ biến nhất Tuy vậy, nguyên tắc thiết lập chuỗi SMILES lại tương đối đơn giản Một số ví dụ cơ bản về nguyên tắc viết chuỗi SMILES như sau: 1/ các nguyên tử sẽ được kí hiệu bằng kí hiệu hóa học như C cho Carbon, O cho Oxygen, , 2/ Các liên kết sẽ được kí hiệu là – cho liên kết đơn, = cho liên kết đôi, # cho liên kết 3, , 3/ hai kí hiệu nguyên tử đứng kề nhau được ngầm hiểu là giữa chúng là liên kết đôi, ví dụ
CC tương đương C-C, 4/ Hai nguyên tử đượng đánh cùng số thì giữa chúng sẽ có liên kết đơn Ví dụ trong chuỗi C1CCCC1, hai nguyên tử đầu và cuối của chuỗi có liên kết đơn giữa chúng, và chuỗi SMILES này biểu diễn phân tử cyclopentane, 5/ Các nguyên tử trong vòng thơm sẽ được ký hiệu bằng chữ thường (không in hóa), ví dụ c1ccccc1 biểu diễn benzene Và còn nhiều tắc nữa để xử lý các trường hợp như điện tích, lập thể, đồng phân, phân nhánh Chuỗi SMILES thường được dùng trong lưu trữ cấu trúc hóa học trong các bộ dữ liệu hóa học do nó được hỗ trợ trong các phần mềm hóa tin phổ biến như Rdkit hay Openbabel và nó có thể dễ dàng biến đổi sang dạng đồ thị Gần đây, chuỗi SMILES còn được tận dụng cùng với các mô hình máy học xử lý ngôn ngữ (Natural Language Process) để xây dựng các mô hình máy học cho hóa học Tuy không ứng dụng trực tiếp vào xây dựng mô hình, một số công trình vẫn sử dụng chuỗi SMILES để lưu trữ thông tin cấu trúc hóa học trước khi chuyển nó thành các dạng khác như fingerprint hay chemical graph cần thiết cho mô hình Trong cheminformatic (hóa tin), các phân tử hóa học thường được lưu trữ dưới dạng cấu trúc dữ liệu graph (đồ thị) Cấu trúc dữ liệu graph 𝒢 là tập hợp gồm 1 tập 𝒱 chứa các node/vertex (nút) và 1 tập ℰ chứa các edge (cạnh), trong đó các edges sẽ liên kết các node như biểu diễn ở hình Dễ thấy để biểu diễn các phân tử ở dạng graph, ta có thể sử dụng tập node 𝒱 chứa các nguyên tử trong phân tử và tập edge ℰ để chứa các liên kết.[32] Hình 2.3 đưa ra một ví dụ về graph và biểu diễn phân tử methanone ở dạng graph
Hình 2.3 Ví dụ cho cấu trúc dữ liệu graph (a) và graph phân tử methanone (b, đã lược bỏ H)
Trên thực tế, trong một cuộc thi về xây dựng mô hình machine learning cho dữ liệu dạng graph, một molecular graph (graph dùng để biểu diễn phân tử) sẽ bao gồm ít nhất 3 list (list là dữ liệu dạng mảng trong Python).[44] Trong đó, 1 list ký hiệu V dùng để chứa thông tin của tất cả nguyên tử, 1 list ký hiệu bằng E sẽ bao gồm các cặp nguyên tử mà giữa chúng có liên kết, và 1 list ký hiệu F còn lại sẽ là thông tin về từng liên kết Lấy ví dụ như nguyên tử (𝐻 3 𝐶) 2 𝐶 = 𝑂 trong hình 2.3 với các nguyên tử H đã được lược bỏ, nếu như ta chỉ xem xét thông tin của nguyên tử bao gồm số hiệu nguyên tử, và thông tin của liên kết bao gồm bậc liên kết, các list này sẽ có dạng như sau:
Với thành phần ở vị trí số i của list V là số hiệu nguyên tử đánh số i, các list thành phần của list E chứa cặp nguyên tử mà giữa chúng có liên kết, và thành phần i của list F sẽ là bậc của liên kết giữa cặp nguyên tử chứa ở thành phần 𝑖 của list E.
Huấn luyện và đánh giá mô hình machine learning
Việc xây dựng một mô hình machine learning sẽ bao gồm 2 bộ dữ liệu: một bộ training set (dữ liệu huấn luyện) và một bộ test set (dữ liệu kiểm tra) Trong đó, mô hình sẽ được “nhìn” giá trị đúng của của bộ training set theo nghĩa là nó sẽ cố khớp các tham số của nó với bộ training set sao cho tối đa hóa độ chính xác (hay tối thiểu sai số) của nó trên bộ dữ liệu này Do mô hình đã được “nhìn đáp số” của bộ training set, ta sẽ sử dụng một test set để kiểm tra mô hình đã huấn luyện Trong quá trình kiểm tra này, mô hình sẽ không được phép “học” (các tham số của nó sẽ được giữ nguyên trong suốt quá trình) hay “nhìn đáp số” của bộ kiểm tra Do mô hình chưa biết qua “đáp số” của các điểm dữ liệu trong tập test set, sai số mô hình trên tập này sẽ mô tả một cách gần đúng độ chính xác của mô hình nếu như nó được sử dụng trong thực tế
Sai số của mô hình hồi quy có thể được tính bằng hàm Root Mean Square Error (RMSE) hay Mean Absolute Error (MAE) được cho như sau:
Sai số cho tập training sẽ là sai số được tính theo các hàm trên cho cho 𝑌 𝑡𝑟𝑎𝑖𝑛 và 𝑌̂ = 𝑓(𝑋 𝑡𝑟𝑎𝑖𝑛 ) với 𝑌 𝑡𝑟𝑎𝑖𝑛 , 𝑋 𝑡𝑒𝑠𝑡 của tập training set, và sai số cho tập training sẽ là sai số được tính cho 𝑌 𝑡𝑒𝑠𝑡 và 𝑌̂ = 𝑓(𝑋 𝑡𝑒𝑠𝑡 ) với 𝑌 𝑡𝑒𝑠𝑡 , 𝑋 𝑡𝑒𝑠𝑡 của tập test set
Người ta chứng minh được rằng, sai số kỳ vọng của một mô hình machine learning có thể được viết tổng của 3 sai số bao gồm irreducible error (sai số không thể bị loại bỏ), bias, và variance, trong đó irreducible error có nguồn gốc là nhiễu ngẫu nhiên của dữ liệu Bằng cách tăng độ phức tạp của mô hình, ta có thể giảm sai số bias và tăng sai số variance.[45] Do đó, ta cần chọn mô hình sao cho có độ phức tạp vừa phải nhằm đạt hiệu quả tốt nhất Cũng cần lưu ý rằng chiều của vector biểu diễn cấu trúc
X cũng đóng vai trò làm tăng hay giảm sự phức tạp của mô hình, và do đó cũng đóng vai trò quyết định lên sai số variance và bias của mô hình
Mô hình với sai số bias lớn sẽ gặp phải tình trạng được gọi là underfitting Lỗi underfitting được biểu hiện bằng việc sai số cho cả tập training set và tập test set của mô hình đều cao Cách giải quyết tình trạng này là tăng độ phức tạp của mô hình bằng nhiều cách khác nhau Nếu như đang sử dụng mô hình tuyến tính, ta có thể thay thế nó bằng một mô hình phi tuyến Nếu ta đang sử dụng một mạng neuron nhân tạo thì ta có thể tăng số lượng neuron, tăng số hidden layer, hay tăng thời gian huấn luyện Với các mô hình có regularization như RR hay KRR, ta có thể điểu chỉnh (thường là giảm) siêu tham số 𝜆 Bên cạnh đó, ta cũng có thể thay đổi vector biểu diễn hóa học cho cấu trúc bằng cách thêm vào vector này những thông tin về phân tử khác có liên quan đến tính chất cần mô hình hóa Nếu như sử dụng ECFP fingerprint, ta có thể tăng bán kính của fingerprint nhằm thêm vào vector nhiều hơn thông tin chi tiết về cấu trúc liên kết của phân tử [33, 42]
Với mô hình có sai số variance lớn sẽ gặp phải tình trạng gọi là overfitting Tình trạng này có thể nhận biết với việc sai số của mô hình trên tập training set cực nhỏ, nhưng sai số của nó trên tập test set lại rất lớn Việc này có thể giải quyết bằng cách giảm độ phức tạp của mô hình hay sử dụng các kĩ thuật regularization Để giảm độ phức tạp của mô hình, ta có thể giảm số chiều của vector biểu diễn cấu trúc hóa học bằng cách loại bỏ những tinh chất không thật sự liên quan đến tính chất đang được mô hình hóa.[33] Kĩ thuật regularization được sử dụng trong mô hình RR hay KRR như đã trình bày ở trên Mặc khác, ta cũng có thể tăng số lượng hay độ phức tạp của dữ liệu trong bộ dữ liệu
Cách nhận biết tình trạng overfitting và underfitting ở trên đều có sử dụng test set Tuy nhiên, trên thực tế, ta sẽ muốn để dành test set là một tập tách biệt khỏi quá trình xây dựng mô hình và chỉ dùng để đánh giá mô hình cuối cùng Để lựa chọn mô hình (tương đương với việc lựa chọn nhóm hyperparameter), ta sẽ chỉ sử dụng dữ liệu trong tập training set thông qua phương pháp k-cross validation Phương pháp này sẽ chia training set thành tập training set và một tập validation set Tập validation set sẽ đóng vai trò như một tập test set, có nghĩa là tập này sẽ không được dùng để huấn luyện mô hình mà chỉ dùng để đánh giá sai số của mô hình Phương pháp k-cross validation sẽ chia training set ra thành k tập nhỏ, trong đó lần lượt từng tập trong k tập này sẽ được dùng làm validation set, trong khi các tập còn lại là training set Ví dụ, hình 2.4 minh họa cho quá trình 5-fold cross-validation Trường hợp các tập nhỏ chỉ bao gồm 1 mẫu (hay nói cách khác, k bằng số lượng mẫu trong tập dữ liệu), ta có phương pháp Leave-on-out (LOO) cross-validation [33]
Hình 2.4 Minh họa cho quá trình k-cross validation với k=5 Nguồn: https://towardsdatascience.com/cross-validation-k-fold-vs-monte-carlo- e54df2fc179b
Các công trình ứng dụng ML cho hóa học tiêu biểu
2.5.1 Ứng dụng machine learning trong mô hình vật liệu hóa bán dẫn hữu cơ
Mô hình cơ học lượng tử với Degree of Pi-orbital Overlap (DPO) descriptor
Từ kiến thức hóa lượng tử, ta có thể dễ dàng nhận ra phân tử PAH có thể được xấp xỉ như một chiếc hộp 2 chiều và do đó kích thước phân tử này có mối tương quan với band gap dựa theo lý thuyết hạt trong hộp thế Dựa trên lý thuyết này, các tác giả đề xuất một bộ nguyên tắc đơn giản để tính chỉ số DPO dựa trên cách sắp xếp các vòng thơm trên phân tử PAH và thienoacenes Về nguyên tắc, DPO là một đa thức của các tham số 𝑎, 𝑏, 𝑐, và 𝑑, mỗi tham số tượng trưng cho một cách mà các vòng thơm có thể kết nối với nhau (fuse) để xây dựng một phân tử đa vòng thơm lớn hơn (xem hình
2.5) Các nguyên tắc cơ bản khi tính DPO là: 1/ mỗi liên kết là nơi gắn kết của 2 vòng thơm sẽ được gán một đa thức, 2/ DPO là tổng tất cả các đa thức gán cho các liên kết, 3/ nhánh (segment) gồm nhiều vòng thơm nhất sẽ được xem như là nhánh quy chiếu, 4/ quá trình gán đa thức cho liên kết sẽ được thực hiện dưa trên nhánh quy chiếu này: liên kết trên nhánh quy chiếu sẽ được gán đa thức gồm tham số 𝑎, liên kết trên nhánh tạo với nhánh tham chiếu một góc 120 o hay 60 o sẽ được gán đa thức gồm tham số 𝑏 hay 𝑐, Nguyên tắc tính DPO cho PAH có thể tham khảo tại.[1]
Hình 2.5 Minh họa cho nguyên tắc tắc tính đa thức DPO.[1]
Các tác giả chứng minh rằng, với giá trị các tham số 𝑎, 𝑏, 𝑐, 𝑑 hợp lý, giá trị DPO của các phân tử PAH tuyến tính với giá trị tính chất điện tử của chúng như bandgap, electron affinity (EA), và ionization potential (IP).[1] Nguyên tắc DPO cũng được mở rộng ra cho các phân tử thienoacenes, là các phân tử PAH có bao gồm 1 hay 2 vòng thiophene, và cũng đạt được độ chính xác nhất định.[2] Gần đây, bằng cách áp dụng các nguyên lý của machine learning (cụ thể là nguyên lí tối thiểu sai số trình bày ở phần II.1.1), mô hình DPO được trang bị khả năng tự động tối ưu tham số của nó theo dữ liệu huấn luyện, hay nói cách khác, nó có khả năng “học”.[4] Mô hình machine learning-DPO mới này được ứng dụng để mô hình hóa tính chất điện tử của PAH có nhóm thế cyano (CN) và cho kết quả rất tốt.[3]
Mô hình hóa reorganization energy (năng lượng tái tổ hợp) của hợp chất hữu cơ Năng lượng tái tổ hợp là một trong những tính chất liên quan mật thiết đến tiềm năng ứng dụng là vật liệu bán dẫn một nguyên tử hữu cơ, và do đó, việc dự đó giá trị năng lượng này cho phân tử là cần thiết Để xây dựng mô hình cho tác vụ này, các tác giả đã xây dựng một bộ dữ liệu từ tính toán lý thuyết Các tác giả sử dụng một nhóm các “mảnh ghép” là các phân tử hữu cơ quen thuộc như benzene, thiophene, pyrrole, và ghép chúng theo những cách có thể nhưng tuân theo một quy tắc nhất định để tạo ra nhiều phân tử để xây dựng bộ dữ liệu Sau đó, các tác giả tính toán năng lượng tái tổ hợp cho các phân tử này sử dụng các phương pháp lí thuyết hóa lượng tử Chính các giá trị tính toán này sẽ là giá trị mà các tác giả sẽ mô hình hóa bằng machine learning Các tác giả đề xuất mô hình machine learning với: 1/ các phân tử sẽ được biểu diễn bằng các descriptor thông thường có sẵn như ECFP, molecular signature, và molecular transforms, 2/ các mô hình hồi quy nhận đầu vào các vector biểu diễn phân tử và trả về dự đoán năng lượng sẽ bao gồm RR, KRR, và
2.5.2 Ứng dụng ML trong hóa tính toán/ hóa lý thuyết và hóa lý
Dự đoán năng lượng nguyên tử hóa (atomization energy) phân tử sử dụng phương pháp graph kernel và active learning.[32] Trong công trình này, các tác giả sử dụng phương pháp marginalized graph kernel là một phương pháp sử dụng hàm kernel tính sự tương đồng giữa 2 graph bằng cách thực hiện bước đi ngẫu nhiên (random walk) trên 2 graph cùng 1 lúc Mô hình Gaussian Process Regression được sử dụng cùng với marginalized graph kernel Tận dụng khả năng ước lượng độ bất định trong dự đoán của mô hình GPR, các tác giả cũng đề xuất một quy trình active learning cho mô hình Các tác giả sử dụng bộ dữ liệu QM7 bao gồm dữ liệu của 7165 phân tử có chứa đến 7 loại nguyên tố khác nhau và nhiều nhất 23 nguyên tử/ phân tử Các tác giả kết luận rằng mô hình có độ chính xác cao và sử dụng ít dữ liệu
Mô hình học máy sử dụng trong dự đoán quang phổ hồng ngoại là một mạng thần kinh đồ thị có hướng được gọi là Mạng thần kinh truyền thông điệp có hướng (MPNN) Đầu ra của MPNN là vector dấu vân tay đại diện cho cấu trúc phân tử Vector này được nối với các thành phần biểu thị thông tin pha và sau đó được đưa vào mạng thần kinh đa lớp perceptron (MLP) để đưa ra dự đoán cuối cùng - một vector có 1801 thành phần, tương ứng với độ hấp thụ ở các bước sóng nhất định Đầu vào của mô hình là chuỗi SMILES, có thể được biểu diễn dưới dạng đồ thị 2 chiều và dễ dàng chuyển đổi thành cấu trúc dữ liệu đồ thị.
Mô hình được huấn luyện với cả dữ liệu từ tính toán và từ thực nghiệm Trong đó dữ liệu thực nghiệm được thu thập từ nhiều nguồn khác nhau như National Institute of Standards and Technology, Pacific Northwest National Laboratory, và bao gồm dữ liệu được đo đạc trong pha khí hay trong nhiều dung môi, pha rắn như dung môi CCl4, huyền phù dầu khoáng, Dữ liệu thực nghiệm bao gồm 56,955 phổ và 31,439 cấu trúc phân tử Với dữ liệu tính toán từ lý thuyết, các tác giả lên danh sách 85,232 cấu trúc bao gồm các cấu trúc không mang điện và có khối lượng riêng bé hơn 500 được chọn từ Pubchem cộng với các cấu trúc có phổ thực nghiệm
Kết quả cho thấy mô hình có khả năng đưa ra dự đoán phổ có chất lượng cao Quan trọng hơn, mô hình cho phép tính toán phổ nhanh hơn các phương pháp lý thuyết thông thường
2.5.3 Ứng dụng ML trong hóa hữu cơ, hóa dược/độc chất học
Các nhà nghiên cứu đã phát triển mô hình học máy cho phản ứng Suzuki-Miyaura coupling dị vòng và phân tích dữ liệu từ Reaxys Họ nhận thấy rằng: phức Pd chiếm 92% xúc tác; phản ứng diễn ra chủ yếu ở 80-109 độ C; 5 base chiếm 82% bộ dữ liệu; trong khi dung môi không đồng nhất với 5 dung môi phổ biến nhất chỉ chiếm 42% trường hợp Do đó, các nhà nghiên cứu tập trung vào việc dự đoán base và dung môi, phân loại base thành các nhóm như carbonate, phosphate, fluoride, v.v và phân loại dung môi thành các nhóm như nước/ether, ether, nước/rượu/hương thơm, v.v Mô hình nhằm dự đoán base và dung môi sẽ thuộc nhóm nào trong các nhóm này.
Các tác giả sử dụng mô hình mạng neural nhân tạo MLP với các chất tham gia phản ứng được biểu diễn với các các khác nhau như ECFP, fingerprint từ thư viện RDKit, kết hợp ECFP và fingerprint từ thư viện RDKit, và fingerprint được tạo từ mô hình autoencoder Các mô hình cho độ chính xác tốt với dự đoán base Tuy nhiên, cũng cần nhớ rằng base sử dụng trong phần lớn là carbonate Mặc khác, mô hình cho độ dự đoán khá kém đối với dung môi Trên thực tế, các tác giả cho rằng mô hình là không tốt hơn mô hình đơn giản chỉ đưa ra dự đoán là base hay dung môi xuất hiện nhiều nhất trong bộ dữ liệu hay còn gọi là mô hình dựa trên độ phổ biến Tác giả cũng sử dụng các mô hình mạng neuron nhân tạo khác có độ phức tạp cao hơn nhưng không đạt được kết quả tốt hơn cho việc dự đoán dung môi sử dụng cho phản ứng Để lý giải cho kết quả này, các tác giả cho rằng việc lựa chọn điều kiện phản ứng thường mang nhiều yếu tố con người: điều kiện thường được chọn dựa trên nghiên cứu các công trình nghiên cứu từ trước, từ việc hóa chất có ở phòng thí nghiệm thực hiện thí nghiệm hay không, hay thậm chí “sở thích các nhân” của mỗi nhà nghiên cứu Các tác giả đề xuất cần chuẩn hóa và hệ thống hóa các thí nghiệm phản ứng
Dự đoán tâm phản ứng của phản ứng hữu cơ với mô hình Graph Neural Network dựa trên thuật toán Weisfeiler-Lehman.[52] Ở đây, các tác giả xây dựng mô hình machine learning nhằm dự đoán tâm phản ứng của các phản ứng hữu cơ Tâm phản ứng được định nghĩa là tập gồm các cặp nguyên tử {(ai, aj)} sao cho liên kết giữa ai và aj khác nhau giữa chất tham gia phản ứng và sản phẩm Do đó, nếu ta có cấu trúc chất tham gia phản ứng và sản phẩm, ta có thể xác định được các tâm phản ứng Ngược lại, để dự đoán những ứng viên sản phẩm từ chất tham gia phản ứng, các tác giả sẽ xây dựng mô hình ML để dự đoán tâm phản ứng trên chất tham gia, rồi sau đó liệt kê tất cả các sản phẩm có thể có bằng cách thay đổi liên kết của các cặp nguyên tử ở tâm phản ứng được dự đoán Các phân tử khả dĩ (ví dụ như không vi phạm nguyên tắc hóa trị) sẽ được xếp hạng bằng một mô hình graph neural network khác
Các tác giả sử dụng thuật toán Weisfeiler-Lehman Graph Neural Network để xây dựng các mô hình cho nhiệm vụ ở trên Như tên gọi, Weisfeiler-Lehman Graph Neural Network là một mô hình neural network được suy ra từ mô hình Weisfeiler- Lehamn graph kernel (xem phần III.1.) và thuật toán Weisfeiler Lehman.[50] Các tác giả xây dựng bộ dữ liệu USPTO gồm các phản ứng đã được cấp bằng sáng chế Sau khi xử lý dữ liệu bằng cách loại bỏ các phản ứng bị sai hay trùng, bộ dữ liệu sẽ bao gồm 480,000 phản ứng Thông qua quá trình huấn luyện và kiểm tra mô hình, các tác giả đi đến kết luận rằng: 1/ mô hình được đề xuất có khả năang học được biểu diễn cấu trúc hóa học và phản ứng hóa học, 2/ chạy nhanh hơn gấp nhiều lần so với các mô hình đã được đề xuất trước đây, và do đó có thể sử dụng để xử lý các bộ dữ liệu khổng lồ
Mục tiêu dự đoán độc chất sẽ bao gồm nhiều mục tiêu như chất độc cho tim (Cardiotoxicity), chất độc cấp tính qua đường miệng (Acute Oral Toxicity), chất độc cho gan (Hepatotoxicity), ung thư, [53] Một số mô hình và dữ liệu cho các mục tiêu này sẽ được trình bày dưới đây
Tox21 là một thử thách dữ liệu vào năm 2014 Thử thách này sẽ đưa ra một dữ liệu bao gồm khoảng 12,000 cấu trúc với các dữ liệu về các thí nghiệm bao gồm nuclear receptor (NR) và Stress Response (SR).[54-56] Với mỗi thí nghiệm, giá trị cần dự đoán sẽ là 1 hoặc 0 cho dương tính hay âm tính, và do đó, mô hình cần sử dụng sẽ là một mô hình phân loại (classifiers) Cần chú ý rằng số lượng cấu trúc cho giá trị âm
(0) tương đối nhiều hơn giá trị dương (1), do đó sẽ làm cho bộ dữ liệu không cân bằng, gây khó khăn khi xây dựng mô hình.[53] Mô hình dành chiến thắng trong thử thách này có tên là DeepTox.[56] Mô hình này sẽ bao gồm thiết kế một vector biểu diễn phân tử rồi nạp chúng vào một mạng neuron nhân tạo MLR như đã trình bày ở trên Một vector biểu diễn phân tử sẽ bao gồm các tính chất như khối lượng, thể tích
PHƯƠNG PHÁP THÍ NGHIỆM
Cơ sở lý thuyết phương pháp Weisfeiler-Lehman kernel
Một labeled graph (đồ thị được dán nhãn) là một graph mà trong đó các node sẽ được labeled (dán nhãn) Các nhãn dán của node này tách biệt với thông tin của node (ví dụ thông tin của nguyên tử như số hiệu) và sẽ được chứa trong một hàm số gọi là labeling function (hàm dán nhãn) Trong thuật toán Weisfeiler-Lehman (sẽ trình bày ở phần tiếp theo) nhãn của các node sẽ là số tự nhiên, và do đó labeling function 𝑓: 𝒱 → ℕ, có nghĩa là hàm này nhận node và trả về một số tự nhiên
Thuật toán Weisfeiler-Lehman (WL)[57, 58] là một thuật toán nhằm xác định 2 graph có hoàn toàn giống nhau về mặt cấu trúc hay không Đây là bài toán Graph Isomorphism (Phép đẳng cấu đồ thị) Thuật toán WL bao gồm 2 bước chính Một cách tổng quát, bước đầu tiên có vai trò khởi tạo nhãn cho các nguyên tử trong phân tử Sau bước khởi tạo, thuật toán sẽ thực hiện cặp nhật nhãn cho các nguyên tử theo một chu trình lặp với số vòng lặp chọn bởi người sử dụng
Trước khi trình bày chi tiết thuật toán WL, ta cần phải làm rõ về hàm hash Đầu ra của hàm hash là một số nguyên nằm trong một khoảng giá trị tùy vào hàm sử dụng Hàm hash có 2 tính chất đặc biệt: 1/ Nó có thể nhận vào đầu vào là vector/list với chiều dài bất kỳ, 2/ đầu ra của hàm hash mang tính ngẫu nhiên theo nghĩa là từ đầu ra khó có thể suy ngược ra đầu vào, và 3/ với 2 đầu vào khác nhau hàm hash sẽ trả về
2 số nguyên khác nhau Tuy nhiên, không phải lúc nào tính chất cuối cũng được thỏa mãn Hiện tượng với 2 đầu vào khác nhau nhưng hàm hash trả về cùng một đầu vào được gọi là hash collision, và là một hiện tượng không mong muốn trong quá trình thực hiện thuật toán WL Để giảm thiểu xác suất này, người ta sẽ sử dụng hàm hash với miền đầu ra lớn Ví dụ, với hàm hash 32-bit, miền đều ra sẽ bao gồm 2 32 số tự nhiên và hàm 64-bit sẽ có miền đầu ra bao gồm 2 64 số nguyên [5]
Hình 3.1 Các phân tử ví dụ cho thuật toán WL và các phương pháp WL kernel
Hai bước của thuật toán WL sẽ được trình bày kèm ví dụ minh họa cho phân tử ở hình 3.1 như sau:
Bước khởi tạo: Với mỗi nguyên tử trong phân tử, thông tin của chúng sẽ được thu thập vào một list List này sẽ được hash thành một số nguyên và số nguyên này chính là nhãn đầu tiên của nguyên tử Nếu ta ký hiệu ℓ [0] là labeling function khởi tạo, 𝑓(𝑎 𝑖 ) là list thông tin của nguyên tử thứ 𝑖 trong phân tử (𝑎 𝑖 ), và ℎ𝑎𝑠ℎ là hàm hash, quá trình khởi tạo nhãn cho 𝑎 𝑖 này được viết như sau:
ℓ [0] (𝑎 𝑖 ) = ℎ𝑎𝑠ℎ(𝑓(𝑎 𝑖 )) Lấy ví dụ ở hình, nếu như ta chỉ xem xét tính chất phân tử lần lượt bao gồm số hiệu nguyên tử (là số tự nhiên), điện tích (là số nguyên), tổng số nguyên tử hydrogen gắn trên nguyên tử (là số tự nhiên), nguyên tử có thuộc vòng thơm (là 1 hoặc 0) và vòng (là 1 hoặc 0), list thông tin nguyên tử và nhãn khởi tạo cho từng nguyên tử được cho ở bảng III.1
Bảng 3.1: Nhãn khởi tạo cho nguyên tử A ở hình 3.1
Nguyên tử List thông tin của nguyên tử 𝑓(𝑎 𝑖 ) Nhãn khởi tạo ℓ [0] (𝑎 𝑖 )
Từ kết quả ở bảng, ta có thể rút ra vài nhận xét như sau Đầu tiên, hàm hash có thể
“nén” một list gồm các thông tin của một nguyên tử về một số tự nhiên Việc này mang ý nghĩa ở các bước sau, bởi vì làm việc với số tự nhiên dễ dàng hơn làm việc với cấu trúc dữ liệu có 1 chiều hay nhiều hơn như list Ví dụ như ta có thể dễ dàng sắp xếp theo thứ tự tăng dần một list gồm số tự nhiên nhưng lại gặp khó khăn nếu ta sắp xếp list gồm các list khác trong nó Thứ hai, với các list khác nhau, hàm hash sẽ trả về nhãn-số tự nhiên hoàn toàn khác nhau Tuy nhiên, với cùng 1 list đầu vào, hàm hash sẽ đãm bảo trả về cùng 1 số nguyên giống nhau Điều này đảm bảo phương pháp có thể được lặp lại và trả kết quả nhất quán
Bước cập nhật nhãn nguyên tử: Bước này mang tính đệ quy vì sử dụng nhãn nguyên tử từ vòng lặp trước hoặc bước khởi tạo để tạo ra nhãn mới Mục tiêu của mỗi vòng lặp ở bước này là tìm nhãn nguyên tử mới cho mỗi node-nguyên tử từ nhãn nguyên tử của vòng lặp trước.
Quy trình tìm nhãn mới cho một node-nguyên tử 𝑎 𝑗 bất kỳ trong một phân tử như sau:
Bước 1: Xác định tất cả nguyên tử có liên kết với nguyên tử 𝑎 𝑗 Nhóm các nguyên tử có liên kết (còn được gọi là adjacent-kề bên) với 𝑎 𝑗 ký hiệu là 𝒩(𝑎 𝑗 ) {𝑎 𝑘 | (𝑎 𝑗 , 𝑎 𝑘 ) ∈ ℰ} Chữ 𝒩 viết tắt cho Neighbor – láng giềng
Bước 2: Tạo danh sách M′ bao gồm các nhãn của các nguyên tử thuộc tập hợp N(a j) theo thứ tự tăng dần dựa trên giá trị của chúng Danh sách M′ được định nghĩa như sau: M′ = sorted([ℓ [i−1](a k) | a k ∈ N(a j)]), trong đó sorted là hàm sắp xếp một danh sách theo thứ tự tăng dần từ giá trị nhỏ nhất đến lớn nhất.
Bước 3: Tạo list 𝑀 bằng cách thêm ℓ [𝑖−1] (𝑎 𝑗 ) vào đầu list 𝑀: 𝑀 = [ℓ [𝑖−1] (𝑎 𝑗 )] ⊕
𝑀 ′ = [ℓ [𝑖−1] (𝑎 𝑗 ), 𝑀 1 ′ , 𝑀 2 ′ , … ] với ⊕ là phép nối (concatenate) list với nhau và
𝑀 1 ′ , 𝑀 2 ′ , … là thành phần ở vị trí số 1, 2, của list 𝑀′
Bước 4: Hash list 𝑀 để thu được nhãn mới của nguyên tử 𝑎 𝑗 ℓ [𝑖] (𝑎 𝑗 ) = ℎ𝑎𝑠ℎ(𝑀)
Bảng 3.2 cho thấy quá trình thực hiện vòng lặp đầu tiên của quá trình tìm nhãn mới
ℓ [1] từ nhãn khởi tạo ℓ [0] cho phân tử 1 ở hình 3.1
Bảng 3.2 Tóm tắt quá trình trình cập nhật nhãn ℓ [1] từ nhãn khởi tạo ℓ [0] cho phân tử 1 ở hình 3.1 Các list M được trình bày với 2 hàng với hàng trên là nhãn cũ (ℓ [0] ) nguyên tử chính (a j ) và hàng dưới là của các nguyên tử kế cận 𝒩(a j )
Nguyên tử List 𝑀 Nhãn mới ℓ [1] (𝑎 𝑗 )
Bảng 3.3 cho thấy quá trình thực hiện vòng lặp thứ hai của quá trình tìm nhãn mới
ℓ [2] từ nhãn từ vòng lặp trước ℓ [1] cho phân tử 1 ở hình 3.1
Bảng 3.3 Tóm tắt quá trình trình cập nhật nhãn ℓ [2] từ nhãn khởi tạo ℓ [1] cho phân tử 1 ở hình 3.1 Các list M được trình bày với 2 hàng với hàng trên là nhãn nguyên tử chính (a j ) và hàng dưới là nhãn các nguyên tử kế cận 𝒩(a j )
Nguyên tử List 𝑀 Nhãn mới ℓ [2] (𝑎 𝑗 )
Trong các ví dụ trên, ta có thể thấy khả năng hàm hash xử lý các cấu trúc mảng (list) với độ dài khác nhau
3.1.2 Phương pháp Weisfeiler-Lehman Graph Kernel theo nguyên tử
Như đã trình bày ở trên, phương pháp kernel là một thuật toán ML sử dụng hàm kernel có khả năng tính toán sự “tương đồng” giữa hai đối tượng toán học, phổ biến nhất là vector Phương pháp Graph Kernel là phương pháp kernel mà đối tượng làm việc chính của chúng chính là graph thay vì là vector trong các phương pháp kernel thông thường [25, 32, 50, 58]
Phương pháp Weisfeiler-Lehman Graph Kernel là phương pháp kernel cho graph dựa trên thuật toán WL.[58] Ý tưởng chung của phương pháp WL graph kernel là sử dụng nhãn của node-nguyên tử tạo bởi thuật toán WL nhằm tính toán sự tương đồng của 2 graph-phân tử Để thực hiện được việc này, có 3 ý tưởng chính: 1/ Sử dụng trực tiếp nhãn của node-nguyên tử, 2/ Sử dụng các edge-liên kết, và 3/ Sử dụng các shortest path Ứng với các ý tưởng này, các vector sẽ được tính toán từ các graph
Các vector này sẽ được sử dụng với các thuật toán ML kernel thông thường làm việc với vector Đầu tiên, ta sẽ xem xét phương pháp WL graph kernel chỉ sử dụng nhãn của node- nguyên tử, được viết tắt là WL-A (Atom-based Weisfeiler-Lehman Graph Kernel) Ứng với từng graph với labeling function được tính toán với thuật toán WL, ta sẽ trích xuất các vector với thành phần là số đếm các node-nguyên tử có một nhãn nhất định cho tất cả các nhãn Cụ thể hơn, việc “trích xuất” vector này có thể được mô tả cho một bộ dữ liệu gồm nhiều graph phân tử theo từng bước như sau:
Ngôn ngữ lập trình và thư viện sử dụng
Python là một ngôn ngữ lập trình cấp cao, hỗ trợ lấp trình hướng đối tượng, và là một ngôn ngữ thông dịch (có nghĩa là bộ thông dịch sẽ dịch từng dòng code) Python được phát triển từ năm 1991 bởi lập trình viên Guido Van Rossum và được nâng cấp nhiều lần qua các phiên bản Python 2.0 và hiện tại là Python 3.10 Python nằm trong top 10 những ngôn ngữ lập trình phổ biến nhất trên thế giới.[59] Một số lợi ích của Python có thể kể đến như: có nhiều thư viện phụ vụ các tác vụ khác nhau, cú pháp dễ học và gần với tiếng anh, có cộng đồng các lập trình viên lớn và nhiệt tình, có thể tích hợp với các ngôn ngữ khác như C/C++, Java, [60]
Một đặc điểm quan trọng khiến Python trở thành lựa chọn cho các lập trình viên với nhiều công việc khác nhau như lập trình web, khoa học dữ liệu, hóa tính toán, là nhờ nhiều thư viện hỗ trợ các tác vụ đa dạng khác nhau Một số ví dụ như sau:
Các thư viện cho xử lý số liệu như Pandas[61] và vẽ đồ thị với Matplotlib.[62]
Đại số tuyến tính với Numpy.[63]
Thư viện cho hóa tin (cheminformatic) RDKit.[64]
Thư viện gồm các mô hình Machine learning Scikit-learn[65]
3.2.2 Một số thư viện Python cơ bản cho khoa học dữ liệu
Numpy là một thư viện cho phép tạo vector, ma trận, và tensor, cũng như thực hiện các phép tính đại số tuyến tính giữa chúng Khác với các ngôn ngữ lập trình chuyên cho việc tính toán như Matlab, phép cộng các cấu trúc dữ liệu array mặc định của Python (gọi là list) sẽ nối 2 list ban đầu Do đó, để cộng 2 vector (ma trận) trong chứa trong 2 list, ta cần đổi chúng sang cấu trúc numpy array Bên cạnh đó numpy cũng cho phép tính giá trị/vector riêng, ma trận đảo, Nói cách khác, numpy cho phép người dùng tính toán phép tính giữa ma trận/vector trong môi trường ngôn ngữ lập trình Python
Pandas là một thư viện cho phép đọc, chứa và xử lý các file dữ liệu như CSV Pandas có tính năng tương tự với các ngôn ngữ cho thống kê khác như R hay phần mềm spreadsheet như Excel Dữ liệu trong pandas được chứa trong các DataFrame, là các bảng dữ liệu gồm nhiều cột (column) và hàng (row) Trong bài toán hồi quy tính chất hóa học, một bảng dữ liệu như vậy sẽ có các hàng là các phân tử 1, 2, 3, cột là các tính chất của phân tử đó bao gồm cả biểu diễn phân tử (ví dụ như graph phân tử, chuỗi SMILES, hay các tính chất dùng để dự đoán) và tính chất cần mô hình hóa Bên cạnh việc cung cấp DataFrame nhằm chứa dữ liệu, pandas cũng cung cấp các công cụ để “làm sạch” dữ liệu như giải quyết các hàng hay cột dữ liệu thiếu dữ liệu, tính toán các giá trị thống kê như trung vị, điểm tứ phân vị, cũng như biểu diễn đồ thị dữ liệu
Matplotlib là một thư viện chuyên về các công cụ cho việc vẽ đồ thị chất lượng cao
Thư viện RDKit là một thư viện mã nguồn mở chuyên về cheminformatic (hóa tin) RDKit cung cấp các công cụ cho nhiều mục tiêu khác nhau như:
Đọc cấu trúc hóa học ở các định dạng khác nhau như SMILES, InChI, và lưu ở cấu trúc dữ liệu mol của thư viện Ta có thể viết code xây dựng cấu trúc dữ liệu graph từ các mol này
Vẽ phân tử và tô màu/đánh dấu nguyên tử trong phân tử
Tính toán các fingerprint thông dụng như ECFP, MACCS, và tính toán sự tương đồng giữa các cặp phân tử
3.2.4 Thư viện Python – Scikit-learn
Scikit-learn (Sklearn) là một thư viện mã nguồn mở bao gồm các mô hình machine learning phổ biến và công cụ khác nhau cho việc xây dựng mô hình machine learning Thư viện Sklearn bao gồm tất cả mô hình đã trình bày ở phần II.1.2 và sẽ được sử dụng trong luận văn này Việc sử dụng mô hình machine learning từ thư viện này là rất đơn giản và chỉ gồm từ 3 dòng lệnh trở lên, bao gồm gọi mô hình, gọi fit để huấn luyện mô hình, và gọi predict để lấy dự đoán từ mô hình đã huấn luyện hay gọi score để lấy sai số/ độ chính xác cho dự đoán của mô hình Thư viện cũng cung cấp công cụ cho việc tối ưu hyperparameters của mô hình thông qua k-cross validation có tên gọi là GridSearchCV, cũng như các công cụ khác cho việc chia dữ liệu và đánh giá mô hình,
Dữ liệu và phương pháp thu thập dữ liệu
Trong đề cương này, một bộ dữ liệu bao gồm 2131 phân tử sẽ được sử dụng để xây dựng mô hình Bộ phân tử này sẽ bao gồm các lớp phân tử như sau: Polycyclic Aromatic Hydrocarbon (hydrocarbon bao gồm nhiều vòng thơm - PAH), thienoacenes (PAH có vòng thiophene), PAH có gắn 1-4 nhóm thế cyano (CN-PAH), và PAH có gắn 1-4 nhóm thế nitro (NO2-PAH) Dữ liệu PAH, thienoacenes, và CN- PAH sẽ được lấy từ các công trình trước đó.[1, 2, 4] Dữ liệu cho NO2-PAH sẽ được tính toán bằng phần mềm tính toán lượng tử GAUSSIAN[66] ở cấp lý thuyết B3LYP/6-31+G(d) Giá trị Electron Affinity (EA - ái điện tử) và Ionization Potential (IP - thế ion hóa) sẽ được lấy xấp xỉ là Lowest Unoccupied Molecuar Orbital (LUMO) và Highest Occupied Molecular Orbital (HOMO) theo định lý Koopman.[16] Giá trị band gap sẽ được lấy xấp xỉ là hiệu của HOMO và LUMO [1, 2, 4] Để tránh tình trạng các số lượng các phân tử thuộc các lớp phân tử trong bộ dữ liệu ở trên không đều, 3 bộ dữ liệu sẽ được chia lại từ 2131 phân tử nói trên 3 bộ dữ liệu này sẽ là: bộ dữ liệu hỗn hợp sẽ bao gồm 425 phân tử thuộc tất cả các lớp phân tử với số lượng mỗi lớp bằng nhau, bộ dữ liệu PAH chỉ bao gồm 246 PAH và thienoacenes, và bộ dữ liệu PAH có nhóm thế sẽ bao gồm 887 PAH có gắn nhóm thế CN hay NO2 Biểu đồ cho thành phần theo các lớp phân tử cho 3 bộ dữ liệu này sẽ được cho ở hình
Hình 3.3 Phân phối các lớp phân tử cho tất cả ba bộ dữ liệu
Cho mỗi thi nghiệm, các bộ dữ liệu trên sẽ được chia thành training set và test set với tỉ lệ số phân tử là 7:3 Việc chọn mẫu cho các bộ dữ liệu kể trên cũng như chia dữ liệu training set và test set sẽ được thực hiện một cách ngẫu nhiên Bên cạnh đó, quá trình chia dữ liệu cho training set và test set sẽ được thực hiện sao cho phân bố giá trị band gap cho 2 bộ dữ liệu này là giống nhau bằng phương pháp đã được miêu tả ở một công trình trước đó.[3] Việc này có thể được thực hiện bằng các chia bộ dữ liệu tổng thành các nhóm (bin) phân tử có band gap nằm trong các khoảng 1.5-2.0eV, 2.0-2.5eV, 4.5-5.0eV rồi sau đó lấy mẫu dựa theo các nhóm này, ví dụ lấy 70% mỗi nhóm một cách ngẫu nhiên cho training set và 30% còn lại của mỗi nhóm cho test set
Mình họa cho một số phân tử PAH và thienoacenes, PAH-CN, và PAH-NO2 được cho lần lượt ở hình 3.4, 3.5, và 3.6
Hình 3.4 Minh họa cho một số phân tử PAH và thienoacenes
Hình 3.5 Minh họa cho một số phân tử PAH có gắn nhóm thế cyano (PAH-CN)
Hình 3.6 Minh họa cho một số phân tử PAH có gắn nhóm thế nitro (PAH-NO2)
Xây dựng mô hình và lập trình
3.4.1 Lập trình mô hình WL kernel
Mô hình WL kernel sẽ được viết dựa vào các thư viện thông dụng như thư viện cho hàm hash zlib, thư viện cho đại số tuyến tính numpy, và thư viện hóa tin rdkit Trước tiên, các chuỗi SMILES sẽ được chuyển đổi qua dạng graph thông qua thư viện rdkit với code cho ở bảng 3.6 (xem giải thích cho code ở các dòng comment bắt đầu với dấu #):
Bảng 3.6 Code Python cho việc chuyển đổi chuỗi SMILES sang graph phân tử def featurize_atom(atom,minimal = False):
#hàm trả về list gồm thông tin ban đầu của nguyên tử atom_feature = atom.GetAtomicNum()#số hiệu atom_feature = [atom_feature] + [ atom.GetFormalCharge(), #điện tích atom.GetTotalNumHs(), #tổng số nguyên tử H int(atom.GetIsAromatic()), #ng tử thơm hay không int(atom.IsInRing()), # có nằm trong vòng hay không ] return atom_feature def smiles2graph( smiles, sp = False, minimal = False
#hàm để chuyển SMILES -> graph phân tử
#đọc chuỗi SMILES và chuyển sang “mol” object của rdkit mol = Chem.MolFromSmiles(smiles)
#liệt kê tất cả nguyên tử trong mol, lập mảng gồm tính
In this code snippet, a list of features for each atom in the molecule is created, with `node_feat = []` initializing the empty list Then, each atom's features are appended to the list using the `featurize_atom` function, with the `minimal` parameter controlling the level of detail in the features Additionally, empty adjacency lists are created for each node, with `edges_list = []` and `adj_list = [[] for node in node_feat]`.
#liệt kê tất cả liên kết trong phân tử for bond in mol.GetBonds():
#lấy chỉ số (index) 2 nguyên tử ở hai đầu liên kết
#chỉ số cũng chính là vị trí của ng tử trong node_feat a1 = bond.GetBeginAtomIdx() a2 = bond.GetEndAtomIdx()
#thêm vào danh edges_list sách gồm edge hay liên kết #mỗi liên kết được mô tả bởi index (chỉ số) của 2 ng tử edges_list.append((a1,a2))
#danh sách adj_list mô tả nguyên tử kề bên
#list ở vị trí i của adj_list bao gồm chỉ số của các
#ng tử có liên kết với nguyên tử có chỉ số i adj_list[a1].append(a2) adj_list[a2].append(a1) return node_feat, adj_list, edges_list Ở đây, graph phân tử là 3 list: 1/ danh sách gồm tính chất của các node - nguyên tử trong phân tử, 2/ danh sách gồm edge - liên kết, và 3/ danh sách gồm danh sách của các nguyên tử có liên kết cho mỗi nguyên tử trong phân tử
Dựa trên thuật toán cho thuật toán WL được trình bà ở phần III.1.1, python code cho thuật toán Weisfeiler-Lehman được cho ở bảng III.7
Bảng 3.7: Code Python cho thuật toán Weisfeiler-Lehman cho các graph phân tử class WL: def init ( self, nodes_feat, adj, edges = None, edges_feats = None
#danh sách atom_labels sẽ chứa nhãn tính được cho tất cả #ng tử ở tất cả vòng lặp
#khởi tạo nhãn ban đầu bằng cách hash self.atom_labels = [[ self.hash(feat) for feat in nodes_feat]] def hash(self,l):
#hàm hash list số nguyên strl = "".join([str(i) for i in l]) hash_int = crc32(strl.encode("utf8")) & 0xffffffff return hash_int def get_adj(self,atom_idx):
# hàm để lấy danh sách index các ng tử có liên kết với # ng tử có index atom_idx return self.adj[atom_idx] def relabelling_nodes(self):
#hàm dùng để tính danh sách nhãn mới cho tất cả ng tử
#lấy danh sách nhãn từ vòng lặp trước atom_labels = self.atom_labels[-1]
# danh sách nhãn tính được trong vòng lặp này new_atomic_labels = []
#vòng lặp for cho tất cả ng tử trong phân tử for a1, atom_label in enumerate(atom_labels):
# lấy danh sách index của các ng tử có liên kết (kề # bên với i adj_atoms_indices = self.get_adj(a1)
# lấy nhãn mới nhất của các ng tử kề bên i -> M
M = [ atom_labels[idx] for idx in adj_atoms_indices] # sắp xếp theo thứ tự tăng dần danh sách này
# thêm nhãn của i vào đầu danh sách M
# hash M -> nhãn mới -> thêm vào danh sách nhãn new_atomic_labels.append( self.hash(M))
# thêm danh sách nhãn mới vào danh sách nhãn chính self.atom_labels.append(new_atomic_labels) Để chuyển danh sách nhãn sang vector, ta sẽ thực hiện 2 bước: 1/ Sử dụng công cụ Counter có sẵn trong Python – là một cấu trúc dữ liệu dictionary có dạng {nhãn: số lần xuất hiện trong list} - để đếm số lượng xuất hiện của từng nhãn nguyên tử/ liên kết/ khoảng cách cho mỗi phân tử, 2/ sử dụng cấu trúc dữ liệu set của Python – là một cấu trúc dữ liệu dạng mảng nhưng trong set, mỗi thành phần chỉ xuất hiện đúng
1 lần – để xác định tất cả các nhãn duy nhất rồi từ đó gán cho mỗi nhãn một index (chỉ số) để xây dựng vector, 3/ cho mỗi phân tử xây dựng vector mà trong đó thành phần thứ i sẽ là số lượng nguyên tử có nhãn ứng với nhãn có index (chỉ số) i ở bước
2 Code python cho các tác vụ này được cho trong bảng 3.8:
Bảng 3.8 Code Python cho: 1/ đếm số lượng nhãn nguyên tử chi phương pháp WL graph kernel theo nguyên tử 2/ tính toán vector ϕ WL−A từ kết quả đếm nhãn nguyên tử
# Các class WLSubtree, WLEdge, WLShortestPath thừa kế #(inherit) từ class WL Các class này sẽ “thừa kế” thuật #toán dán nhãn ng tử và thêm vào đó tính năng khác như #dán nhãn liên kết, và đếm số lượng nhãn def init (self, nodes, adj, edges=None, edges_feats=None, sp_dists=None): super(). init (nodes,adj) def to_counter(self,num_iters):
#thực hiện tính nhãn nguyên tử num_iters lần for i in range(num_iters): self.relabelling_nodes()
#nối các list nhãn ở các vòng lặp thành 1 list atom_labels = chain(*self.atom_labels)
#Sử dụng counter đếm list nhãn return Counter(atom_labels)
3 class GraphVectorizer(BaseEstimator): def init ( self,label_method=None, num_iter=None, smiles = True
#danh sách nhãn duy nhất self.unique_labels = [] self.num_iter = num_iter
#label_method có thể là WLSubtree, WLEdge, self.label_method = label_method self.smiles = smiles def convert_smiles(self, X):
X = smiles2graph(X, spse) return X def fit(self, X,Y=None):
#lên danh sách nhãn duy nhất if self.smiles:
X = self.convert_smiles(X) for graph in X:
# thực hiện dán nhãn graph và đếm -> Counter counter = self.label_method(
*graph).to_counter(self.num_iter)
#lên danh sách nhãn có trong Counter self.unique_labels += list(counter.keys()) #chuyển thành set để loại bỏ thành phần bị trùng self.unique_labels = list( set(self.unique_labels)) return self def vectorize(self,graph): if self.smiles: graph=self.convert_smiles(graph) counter = self.label_method(
*graph).to_counter(self.num_iter) x = [] for label in self.unique_labels: try: x.append(counter[label]) except
KeyError: x.append(0) return x def transform(self,graphs):
(len(graphs), len(self.unique_labels))) for i,graph in enumerate(graphs): x = self.vectorize(graph)
3.4.2 Lập trình việc huấn luyện, tối ưu, và kiểm tra mô hình máy học
Mô hình và thuật toán huấn luyện mô hình trong luận văn này sẽ được lấy trực tiếp từ thư viện sklearn Đa phần các thuật toán trong thư viện này được cung cấp ở dạng một object (vật thể) trong Python và có nhiều method (hàm) được cung cấp trong các object này cho tự động quá trình huấn luyện, đưa ra dự đoán, hay kiểm tra Ví dụ, để xây dựng mô hình hồi quy Gaussian Process Regressor, ta có thể viết một đoạn code đơn giản như sau:
Bảng 3.9 Xây dựng mô hình hồi quy với sklearn from sklearn.gaussian_process import GaussianProcessRegressor
#khởi động mô hình với các siêu thông số tùy chọn kernel và alpha model = GaussianProcessRegressor(kernel, alpha)
#huấn luyện mô hình với vector feature x và vector giá trị đúng y model.fit(X, y)
#lấy dự đoán cho vector feature X_ nào đó từ mô hình đã huấn luyện y_hat = model.predict(X_)
#tính sai số R^2 của mô hình trên tập test set có vector X_test và
#y_test error = model.score(X_test, y_test)
Các mô hình khác được cung cấp trong thư viện sklearn cũng có thể được sử dụng theo cách tương tự như mô hình RR, KRR, MLP, Bên cạnh đó, việc tối ưu hóa các siêu tham số của mô hình machine learning có thể được thực hiện thông qua một công cụ tự động cung cấp bởi sklearn như GridSearchCV cho việc tối ưu giá trị siêu tham số thông qua phương pháp tìm kiếm theo lưới (Grid Search) nhằm tối thiểu hóa sai số cross-validation Tương tự như các mô hình, việc sử dụng GridSearchCV cho việc huấn luyện mô hình cũng hết sức dễ dàng, như được trình bày trong bảng:
Bảng 3.10 Xây dựng và tối ưu mô hình thông qua grid search và cross-validation from sklearn.kernel_ridge import KernelRidge from sklearn.model_selection import GridSearchCV krr = KernelRidge() model = GridSearchCV( krr,
) model.fit(X,y) Để tối ưu số vòng lặp của thuật toán Weisfeiler-Lehman, ta sẽ sử dụng vòng lặp for để tính sai số cross-validation cho mô hình với từng giá trị vòng lặp rồi dựa và đó lựa chọn số vòng lặp cho giá trị sai số cross-validation tốt nhất
Việc kiểm tra mô hình được thực hiện bằng cách sử dụng tập dữ liệu kiểm tra (X_test), mô hình dự đoán giá trị đầu ra (Y_hat) từ đầu vào của tập dữ liệu kiểm tra Sau đó, độ chính xác của dự đoán được đánh giá bằng hàm Root Mean Square Deviation, tính toán sai số giữa các giá trị dự đoán (Y_hat) và giá trị thực tế (Y_test) trong tập dữ liệu kiểm tra.
Bảng 3.11 Tính sai số RMSD của dự đoán và giá trị “đúng” import numpy as np def RMSD(Y,Y_hat):
MSE = np.mean(SE,axis = 0) return np.sqrt(MSE) rmsd = RMSD(model.predict(X_test), y_test)
3.4.4 Lập trình giao thức học active learning
Bảng 3.12 trình bày code Python cho giao thức active learning Cần lưu ý rằng ở mỗi bước thêm dữ liệu vào tập huấn luyện, số lượng mẫu thêm sẽ nhiều hơn 1 để giảm thời gian chạy chương trình Sau mỗi lần thêm dữ liệu vào tập huấn luyện, mô hình sẽ được huấn luyện và tính sai số trên tập kiểm tra
Bảng 3.12 Code Python cho giao thức học active learning
# sử dụng vòng lặp while để thêm dữ liệu vào tập huấn luyện
# cho đến khi kích thước nó bằng kích thước tiêu chuẩn while len(train_graphs) < final_train_size:
# huấn luyện mô hình trên tập huấn luyện model.fit(train_graphs, train_Y)
# tính toán sai số và độ lệch chuẩn của mô hình trên
# tập kiểm tra Lưu ý rằng sai số của mô hình sẽ được lưu
# lại để vẽ đồ thị kết quả test_Y_hat,Y_std = model.predict( test_graphs, return_std = True)
# số lượng mẫu thêm vào tập huấn luyện sampling_steps được
# chọn bởi người dùng for i in range(sampling_steps):
# chọn index của dữ liệu với độ lệch chuẩn lớn nhất new_id = np.argmax(Y_std)
# lấy graph phân tử của điểm dữ liệu với index được
# chọn ra khỏi bộ dữ liệu kiểm tra new_train_graph = test_graphs.pop(new_id)
# thêm X (graph phân tử) lấy ra ở trên vào bộ dữ liệu
# huấn luyện train_graphs.append(new_train_graph)
# lấy nhãn của điểm dữ liệu với index được # chọn ra khỏi bộ dữ liệu kiểm tra new_train_labels test_Y[new_id,:][np.newaxis,:]
# thêm Y (nhãn-tính chất điện tử) lấy ra ở trên vào
# bộ dữ liệu huấn luyện train_Y np.concatenate([train_Y,new_train_labels])
# xóa nhãn trong bộ dữ liệu huấn luyện test_Y = np.delete(test_Y,new_id,0)
Y_std = np.delete(Y_std ,new_id , 0)
KẾT QUẢ VÀ BÀN LUẬN
Khảo sát ảnh hưởng của số vòng lặp của thuật toán WL lên mô hình
Ta có thể xem các mô hình bao gồm vector biểu diễn phân tử nạp vào các thuật toán máy học, với phân tử được biểu diễn với các vector 𝜙 𝑊𝐿−𝐴 [𝑇] (𝒢 𝑖 ), 𝜙 𝑊𝐿−𝐴𝐵 [𝑇] (𝒢 𝑖 ), hay
𝜙 𝑊𝐿−𝐴𝐷 [𝑇] (𝒢 𝑖 ) Hình 4.1 cho thấy logarithm của chiều dài của các vector này theo số vòng lặp của thuật toán WL Như đã trình bày ở phần trên, nếu như chiều dài của vector biểu diễn phân tử 𝜙 𝑊𝐿−𝐴 [𝑇] (𝒢 𝑖 ), 𝜙 𝑊𝐿−𝐴𝐵 [𝑇] (𝒢 𝑖 ), 𝜙 𝑊𝐿−𝐴𝐷 [𝑇] (𝒢 𝑖 ), hay ECFP quá dài hay quá ngắn thì mô hình sẽ kém chính xác do gặp phải tình trạng underfitting hay overfitting Thật vậy, điều này có thể được nhìn thấy ở hình 4.2 Hình này biểu diễn sai số cho tính chất band gap của các mô hình WL-A, WL-AB, WL-AD, và ECFP và các thuật toán máy học RR và GPR với các giá trị số vòng lặp khác nhau Ở đây, do các mô hình GPR/WL-A với số vòng lặp > 3 (4 cho dữ liệu PAH có nhóm thế), hay mô hình GPR/WL-AB và GPR-WL-AD với số vòng lặp > 2 (3 cho dữ liệu có nhóm thế) cho sai số RMSD > 2.00 eV (vả do đó chúng không được vẽ trong đồ thị để dễ nhìn) Bên cạnh đó, mô hình GPR/WL-AD nếu sử dụng hàm kernel RBF (thuật toán
ML sẽ là phi tuyến) sẽ gặp vấn đề overfitting với sai số có thể rất lớn Do đó, mô hình GPR/WL-AD sẽ chỉ sử dụng hàm kernel tuyến tính (thuật toán ML sẽ là tuyến tính) Bên cạnh đó, so sánh giữa đồ thị sai số cho band gap theo số vòng lặp ở hình 4.2, ta thấy các mô hình sử dụng vector biểu diễn WL có sai số thấp hơn hẳn các mô hình ECFP với cùng thuật toán ML là RR hay GPR
Hình 4.1 Đồ thị của logarithm bậc 10 của chiều dài của các vector ϕ cho các phương pháp WL-A, WL-AB, và WL-AD theo số vòng lặp của thuật toán WL
Hình 4.2 Đồ thị của sai số RMSD cho band gap theo số vòng lặp thuật toán WL hay bán kính của ECFP cho dữ liệu hỗn hợp, dữ liệu PAH và dữ liệu PAH có nhóm thế theo thứ tự từ trên xuống dưới Hình A-C cho mô hình sử dụng ECFP, hình D-F cho các mô hình RR/WL, và hình G-I cho các mô hình GPR/WL
Các thí nghiệm và kết quả tiếp theo sẽ xem số vòng lặp của thuật toán WL như là một siêu tham số, và sẽ được tối ưu theo Grid search và Cross-Validation như các siêu tham số của thuật toán ML như trình bày ở phần II.3 và III.4 Khoảng giá trị tối ưu cho các siêu tham số quan trọng sẽ được cho ở bảng 4.1 cho từng mô hình
Bảng 4.1 Bảng phạm vi tìm kiếm cho số vòng lặp WL/bán kính ECFP và hàm nhân
GPR được sử dụng cho mỗi phương pháp
Mô hình Bộ dữ liệu Khoảng giá trị cho số vòng lặp WL/ bán kính ECFP
GPR/WL-A Tất cả [2, 3] RBF
GPR/WL-AB Tất cả [1, 2] RBF
GPR/WL-AD Tất cả [1, 2] Tuyến tính
GPR/ECFP Hỗn hợp [4-8] RBF
PAH có nhóm thế [2-5] RBF
RR/WL-AB Tất cả [3, 4, 5] -
RR/WL-AD Hỗn hợp & PAH [1, 2, 3] -
Độ chính xác của phương pháp các mô hình GPR/WL và GPR/ECFP
cho tất cả ba bộ dữ liệu thu được từ 20 lần chạy khác nhau Kết quả cho thấy rằng ba phương pháp kernel WL cho thấy độ chính xác tương tự và vượt trội đáng kể so với mô hình với ECFP Đối với tập dữ liệu hỗn hợp, giá trị RMSD cho các thuộc tính bandgap, EA và IP lần lượt là khoảng 0.15-0.16 eV, 0.12-0.13 eV và 0.08-0.09 eV Sai số thấp hơn cho các bộ dữ liệu PAH và substituted PAH, với 0.10-0.11 eV cho bandgap và nhỏ hơn 0.10 eV cho EA và IP, vì các bộ dữ liệu này có tính đồng nhất hơn Kết quả này cho thấy rằng các phương pháp kernel GPR/WL có thể mô phỏng các thuộc tính điện tử của hợp chất fusene với độ chính xác hợp lý, với độ không chắc chắn là 0.1 eV của phương pháp DFT.[1]
Mô hình GPR/ECFP có giá trị RMSD trung bình cao hơn khoảng 0.1 eV cho thuộc tính bandgap so với các phương pháp kernel GPR/WL Sự khác biệt này có thể được quy cho việc các vectơ bit ECFP chỉ ghi nhận sự hiện diện của các đoạn phân tử với
0 hoặc 1 bit, bỏ qua thông tin quan trọng về kích thước của phân tử, điều này quan trọng cho việc mô hình hóa các thuộc tính điện tử của PAH Dựa trên kết quả này, chúng tôi khuyến cáo không sử dụng bit ECFP cho việc mô hình hóa các thuộc tính có liên quan đến kích thước của phân tử
Hình 4.3 Biểu đồ hộp cho RMSDs thu được qua 20 lần chạy cho các phương pháp graph kernel GPR/WL và mô hình GPR/ECFP cho bandgap (A-C), EA (D-F), và IP (G-I) từ trên xuống dưới Các điểm vuông biểu thị giá trị trung bình của RMSDs Các hình ở cột nằm bên trái nhất (A, D, G), giữa (B, E, H), và bên phải nhất (C, F, I) là cho bộ dữ liệu kết hợp, bộ dữ liệu PAH, và bộ dữ liệu PAH đã được thay thế, tương ứng.
Active learning
Để đánh giá khả năng học tích cực của mô hình WL-A/GPR của chúng tôi, chúng tôi bắt đầu với một tập huấn luyện bao gồm 20% của tập huấn luyện đầy đủ, trong khi các điểm dữ liệu còn lại được đặt vào tập kiểm tra Sau đó, chúng tôi lựa chọn mẫu từ tập kiểm tra, có thể là ngẫu nhiên hoặc sử dụng giao thức học tích cực đã được mô tả trước đó, và sau đó thêm chúng vào tập huấn luyện Chúng tôi lặp lại quá trình này lặp đi lặp lại cho đến khi tập huấn luyện đạt kích thước đầy đủ Sự chính xác của mô hình được biểu đồ hóa theo kích thước tập huấn luyện cho cả hai phương pháp bổ sung tập huấn luyện, tức là ngẫu nhiên và tích cực, như được thể hiện trong Hình 4.4
Hình 4.4 Đồ thị của test RMSDs cho band gap theo kích thước tập huấn luyện cho active learning và random selection (chọn mẫu ngẫu nhiên) Các cột nằm bên trái nhất, giữa và bên phải lần lượt là cho các bộ dữ liệu kết hợp, PAH và PAH đã được thay thế, trong khi hàng đầu (A-C), hàng giữa (D-F) và hàng dưới (G-K) lần lượt là cho các phương pháp kernel WL-A, WL-AB và WL-AD
Nói chung, các mô hình được huấn luyện với các tập huấn luyện được xây dựng theo giao thức active learning vượt trội so với các mô hình được huấn luyện trên các tập huấn luyện được xây dựng ngẫu nhiên trong hầu hết các trường hợp, mặc dù sự cải thiện trên sai số RMSD là không quá 0.01-0.03 eV Điều này đặc biệt đúng đối với tập dữ liệu hỗn hợp, là tập dữ liệu đa dạng nhất trong ba tập dữ liệu Đối với tập dữ liệu PAH đã được thay thế, giao thức active learning chỉ chứng minh sự ưu việt của mình đối với hai phương pháp graph kernel trong số ba (WL-A và WL-AB) và có hiệu suất tương đương với phương pháp còn lại Cuối cùng, đối với tập dữ liệu
PAH, là tập dữ liệu nhỏ nhất trong ba tập, giao thức active learning có hiệu suất hơi thấp hơn cho một phương pháp graph kernel và có hiệu suất tương đương cho hai phương pháp khác Tóm lại, hiệu quả của giao thức active learning có vẻ có mối tương quan đáng kể với mức độ đa dạng của các tập dữ liệu.
Các mô hình tuyến tính và giải thích về mô hình
Hình 4.5 trình bày sai số của 20 lần chạy mô hình với các mô hình hồi quy RR với đầu vào là vector 𝜙 𝑊𝐿 (RR/WL) hoặc ECFP (RR/ECFP) cho cả ba bộ dữ liệu Do là các mô hình tuyến tính, chúng thường thể hiện độ chính xác thấp hơn so với các mô hình dựa trên mô hình GPR phi tuyến tính Tuy nhiên, các mô hình RR dựa trên WL thể hiện độ chính xác tương tự như các phương pháp GPR/WL cho tập dữ liệu PAH Ngoài ra, RR/WL-AD thể hiện độ chính xác gần giống mô hình GPR/WL-AD cho tất cả các bộ dữ liệu Điều này cho thấy vector 𝜙 𝑊𝐿−𝐴𝐷 thể hiện mối quan hệ tuyến tính tốt hơn với các tính chất điện tử so với 𝜙 𝑊𝐿−𝐴 hoặc 𝜙 𝑊𝐿−𝐴𝐵 Điều này có thể là do thực tế là các shortest paths được ghi nhận trong 𝜙 𝑊𝐿−𝐴𝐷 (hoặc khoảng cách của các cặp nguyên tử) phần nào biểu thị kích thước của các phân tử Do đó vector
𝜙 𝑊𝐿−𝐴𝐷 tương quan tuyến tính với các tính chất điện tử theo mô hình lượng tử hạt trong hộp Những kết quả này ủng hộ kỳ vọng của chúng tôi rằng các phương pháp và vector biểu diễn dựa trên WL có thể được thiết kế với kiến thức nền hóa học để
“miêu tả” tốt hơn các phân tử nhằm lập mô hình các thuộc tính nhất định
Hình 4.5 Biểu đồ hộp cho RMSDs thu được từ 20 lần chạy cho mô hình RR với vectơ đặc trưng là ϕ WL hoặc ECFP Các biểu đồ trong cột bên trái, tức là (A, D, G), dành cho tập dữ liệu hỗn hợp, cột giữa (B, E, H) cho tập dữ liệu PAH, và cột bên phải (C, F, I) dành cho các tập dữ liệu PAH đã được thay thế
Dự đoán của các mô hình được đào tạo trong bộ dữ liệu PAH và PAH có gắn nhóm thế được phân tích và hiển thị trong Hình 4.6 và 4.7 Mỗi hình minh họa các cấu trúc có giá trị bandgap cao nhất (hàng trên cùng), giá trị bandgap thấp nhất (hàng dưới cùng) và giá trị bandgap trung bình (hàng giữa) Nhìn chung, bandgap càng thấp thì các xuất hiện các nguyên tử được tô đỏ càng đậm và dày đặc hơn, đánh dấu các nguyên tử góp phần làm giảm giá trị bandgap của phân tử Sự xuất hiện của các nguyên tử được đánh dấu màu đỏ đậm hơn (các nguyên tử đóng góp giá trị âm hơn hơn) trong một phân tử tương quan với độ dài của mạch vòng thơm (mạch gồm các vòng thơm nối liền thẳng nhau) dài nhất của nó trong phân tử Kết quả này ủng hộ mô hình dựa trên lý thuyết lượng tử có tên DPO trước đó của nhóm tác giả.[1, 2, 4]
Hình 4.6 minh họa đóng góp của từng nguyên tử cacbon vào dự đoán năng lượng khoảng cách giữa hai dải hóa trị (bandgap) đối với một số hợp chất hydrocarbon thơm đa vòng (PAH) và thienoacene Mỗi hàng ghi các giá trị bandgap cao nhất (hàng trên cùng), bandgap trung bình (hàng giữa) và bandgap thấp nhất (hàng dưới cùng).
Hình 4.7 minh họa các nguyên tử đóng góp vào việc dự đoán bandgap của PAH chứa nhóm thế, với các giá trị bandgap cao nhất, trung bình và thấp nhất.
Phân tích sai số của mô hình
Phương pháp Leave-One-Out (LOO) là một kĩ thuật mà trong đó tập kiểm tra sẽ bao gồm 1 mẫu và tất cả một mẫu còn lại trong bộ dữ liệu sẽ là training set Nói cách khác, ứng với mỗi mẫu trong bộ dữ liệu, mô hình sẽ được huấn luyện với tất cả các mẫu ngoại trừ mẫu đó và sau đó sử dụng mẫu được ngoại trừ đó sẽ được để đánh giá lỗi của mô hình Quy trình này được lặp lại cho từng mẫu trong một bộ dữ liệu, mỗi mẫu sẽ đóng vai trò tập kiểm tra, và do đó cho phép xác định lỗi LOO cho tất cả các mẫu Vì vậy, chúng tôi đề xuất sử dụng phương pháp này để xác định các cấu trúc mà các mô hình hiện tại dự đoán với sai số lớn nhất Giá trị trung bình của sai số LOO RMSD cho giá trị bandgap tính cho từng mẫu trong bộ dữ liệu hỗn hợp của mô hình WL-A/GPR là 0,10±0,09eV Lưu ý rằng lỗi LOO là một chỉ số tương đối lạc quan cho độ chính xác của mô hình cũng như có độ bất định cao.[33] Hình 4.8 cho thấy 9 cấu trúc có LOO RMSD cao cho bandgap trong bộ dữ liệu hỗn hợp Đặc điểm chung giữa chúng là các cấu trúc này kém phẳng do có sự cản trở không gian giữa các nhóm thế (hợp chất 1, 3, 6, 7, 8, 9), giữa nhóm thế và vòng thơm (hợp chất 2,5), và giữa các vòng thơm (hợp chất 4) Độ lệch phẳng của PAHs là một trong các lý do chính khiến cho các mô hình QSPR cho các tính chất điện tử của các phân tử thơm kém chính xác Trong nghiên cứu trước đây của chúng tôi về mô hình dựa trên DPO, chúng tôi đã thảo luận chi tiết về vấn đề này.[1] Do tính chất điện tử của các phân tử thơm phụ thuộc rất nhiều vào tính phẳng của chúng, nên phương pháp WL-A, cũng như các phương pháp WL-AB và WL-AD khác, cũng gặp phải vấn đề này
Hình 4.8 Các cấu trúc với giá trị sai số LOO lớn nhất.
So sánh dự đoán của mô hình và giá trị thực nghiệm
Bảng 4.2 So sánh kết quả dự đoán của mô hình với giá trị thực nghiệm[4] và giá trị
Cấu trúc Giá trị band gap (eV)
Dự đoán ML Tính toán DFT Thực nghiệm
2.98 3.06 2.85 a a Dữ liệu thực nghiệm ở dạng dung dịch b Dữ liệu thực nghiệm ở dạng phim mỏng
Bảng 4.2 liệt kê và so sánh giá trị dự đoán bởi mô hình machine learning, giá trị dự đoán bởi phương pháp lý thuyết DFT, và giá trị thực nghiệm có sẵn cho các phân tử có gắn nhóm thế cyano Dễ thấy giá trị dự đoán bởi machine learning khá gần với giá trị DFT, với một ngoại lệ là phân tử ở hàng thứ ba Mặc khác, như đã bàn luận trong tài liệu tham khảo trước đó,[4] ta có thể lập luận rằng việc sử dụng giá trị DFT xấp xỉ cho giá trị thực nghiệm là hoàn toàn phù hợp.
Mã nguồn và hướng dẫn sử dụng
Mã nguồn của mô hình và bộ dữ liệu có thể được truy cập tại trang: https://github.com/Tuan-H-Nguyen/Atomic-based-QSPR-for-fusenes-and- derivatives
Code cho mô hình được bàn trong bài luận bao gồm thuật toán WL và phương pháp WL kernel, mô hình GPR hay RR, và thuật toán tự động tối ưu các siêu tham số của mô hình và thuật toán WL (số vòng lặp của thuật toán WL), tất cả trong 1 file pipeline.py
Code để chạy các thí nghiệm như khảo sát sai số theo số vòng lặp, khảo sát giao thức active learning, khảo sát sai số cho từng phương pháp và cho các cấu trúc, và giải thích cho mô hình
The main.py code allows training and saving a trained model, while the predictor.py code enables direct prediction for SMILES strings via command line or PowerShell.
Các ngôn ngữ lập trình, thư viện sử dụng và version của chúng:
Hướng dẫn để chạy dự đoán cho một chuỗi SMILES:
> python main.py -k subtree -m gpr -d mixed -i 2 3 -n 10 -p 1 với các biến:
-k: là biến thể WL graph kernel với subtree cho WLA, edge cho WLAB, hay shortest_path cho WLAD
-m: là mô hình machine learning, là gpr, hay rr
-d: là bộ dữ liệu sử dụng là mixed cho dữ liệu hỗn hợp, pah cho bộ dữ liệu PAH hay, subst cho bộ dữ liệu PAH có nhóm thế
-i: số vòng lặp cho thuật toán WL Có thể cung cấp nhiều hơn 1 giá trị Mô hình sẽ chọn 1 trong số các giá trị cung cấp (ví dụ 2, 3 trong dòng code trên) thông qua grid search sao cho tối thiểu hóa sai số cross-validation Lưu ý rằng càng nhiều giá trị cung cấp thì thời gian chạy càng lâu
-n: số lần lặp lại của mô hình
To save the model as a pkl file, select option 1 The pkl file will be named model_ensemble_[dataset_name]_[kernel_type]_[regressor].pkl, where dataset_name represents the dataset name, kernel_type represents the WL method, and regressor represents the regression ML model.
2 Thực hiện dự đoán với cú pháp:
> python predictor.py [smiles string] -m gpr -k wla -d mixed
[smiles string] là chuỗi SMILES cho phân tử cần dự đoán, có thể được tạo từ phần mềm chemdraw hay tại trang web cho phép tạo chuỗi SMILES như https://www.cheminfo.org/flavor/malaria/Utilities/SMILES_generator _chec ker/index.html
các biến còn lại tương tự như trên
Ví dụ cho việc dự đoán của mô hình được cho ở bảng dưới:
PS C:\Users\hoang\dropbox\comp_chem_lab\MLmodel> python predictor.py 'N#Cc5ccc4cc3cc2cc1ccccc1cc2cc3cc4c5' -m gpr -k subtree -d subst
Predictions for Electron Affinity(eV): 3.08
Predictions for Ionization Potential(eV): 5.38