นี่คืออะตอมของคาร์บอนที่คุณกำลังมองหาอยู่ใช่หรือไม่? -AI เพื่อทำนายการประสานงานของอะตอมของ CNT

Nov 29 2022
เทคโนโลยีคือการทำให้สิ่งต่างๆ เร็วขึ้นและง่ายขึ้น ต้องขอบคุณคอมพิวเตอร์ของเรา เราไม่จำเป็นต้องทำคณิตศาสตร์ ออกแบบ หรือทำการทดลองเมื่อเป็นเรื่องของวิทยาศาสตร์

เทคโนโลยีคือการทำให้สิ่งต่างๆเร็วขึ้นและง่ายขึ้น ต้องขอบคุณคอมพิวเตอร์ของเรา เราไม่จำเป็นต้องทำคณิตศาสตร์ ออกแบบ หรือทำการทดลองเมื่อเป็นเรื่องของวิทยาศาสตร์

ด้านหนึ่งที่ได้รับประโยชน์จากความสามารถอันยอดเยี่ยม ของคอมพิวเตอร์คือนาโนเทคโนโลยี

นาโนเทคโนโลยีกำลังทำงานกับวัสดุในระดับอะตอม ซึ่งไม่ใช่เรื่องง่าย รวดเร็ว หรือราคาถูกเสมอไป

ความก้าวหน้าล่าสุดกำลังสร้างโอกาสใหม่ในการจำลองวัสดุนาโน สิ่งหนึ่งที่จับได้: พวกเขายังไม่เร็วนัก

และเราไม่ต้องการสิ่งที่เชื่องช้าซึ่งต้องการการทำซ้ำ เราต้องพัฒนาอย่างรวดเร็ว

แม้ว่าท่อนาโนคาร์บอน (CNT) ถูกค้นพบในปี 1991 นักวิทยาศาสตร์และผู้ประกอบการได้ค้นพบวิธีที่จะทดลองและทำการค้าแล้ว เรามีเกราะป้องกัน CNT สำหรับกองทัพ แบตเตอรี่ CNT หรือตัวบ่งชี้ทางชีวภาพ CNT...

ด้วยการพัฒนาที่รวดเร็วนี้ ปัญญาประดิษฐ์จึงเป็นตัวสนับสนุนที่ดีเยี่ยม

ในหัวข้อต่อไปนี้ ฉันจะพูดถึงวิธีที่เราสามารถใช้โครงข่ายประสาทเทียมเพื่อทำนายพิกัดอะตอมของ CNT ดังนั้นหากคุณต้องการเรียนรู้ว่า AI และนาโนเทคโนโลยีสามารถผสานรวมเข้าด้วยกันได้อย่างไร โปรดอ่านต่อ!

ท่อนาโนคาร์บอน

a, b ตัวอย่างของภาพท่อนาโนคาร์บอน SEM c, d ตัวอย่างของภาพท่อนาโนคาร์บอน TEM

ท่อนาโนคาร์บอนเป็นท่อที่ทำจากคาร์บอน โดยทั่วไปวัดเป็นนาโนเมตร ท่อนาโนคาร์บอน (CNTs) เป็นทรงกระบอกที่บางและยาวมาก ซึ่งสามารถทำจากแผ่นอะตอมของคาร์บอนที่ผูกเข้าด้วยกันเป็นโครงสร้างตาข่ายหกเหลี่ยม

CNTs มีการผสมผสานที่เป็นเอกลักษณ์ของความแข็งสูง ความแข็งแรงสูง ความหนาแน่นต่ำ ขนาดเล็ก และคุณสมบัติทางอิเล็กทรอนิกส์ที่หลากหลายตั้งแต่โลหะไปจนถึงสารกึ่งตัวนำ

แอปพลิเคชั่นบางส่วนของ CNTs:

  • การวิจัยแสดงให้เห็นว่า CNT มีความสามารถในการย้อนกลับได้สูงสุดในบรรดาวัสดุคาร์บอนใดๆ สำหรับใช้ในแบตเตอรี่ลิเธียมไอออน CNTs เป็นวัสดุที่โดดเด่นสำหรับอิเล็กโทรดซุปเปอร์คาปาซิเตอร์
  • นักวิจัยจำนวนมาก (ดูตัวอย่าง ) และองค์กรต่างๆ ได้พัฒนาอุปกรณ์กรองอากาศและน้ำที่ใช้ CNT แล้ว มีรายงานว่าตัวกรองเหล่านี้ไม่เพียงแต่สามารถป้องกันอนุภาคที่เล็กที่สุดเท่านั้น แต่ยังฆ่าแบคทีเรียส่วนใหญ่ได้อีกด้วย นี่เป็นอีกพื้นที่หนึ่งที่มีการทำ CNTs ในเชิงพาณิชย์แล้วและผลิตภัณฑ์ก็เข้าสู่ตลาดแล้ว
  • การวิจัยแสดงให้เห็นว่า CNT สามารถเพิ่มประสิทธิภาพได้อย่างมาก แม้ในสถานะที่ไม่ได้รับการปรับปรุงประสิทธิภาพในปัจจุบัน เซลล์แสงอาทิตย์ที่พัฒนาขึ้นที่สถาบันเทคโนโลยีแห่งรัฐนิวเจอร์ซีย์ใช้ท่อนาโนคาร์บอนที่ซับซ้อน ซึ่งเกิดจากส่วนผสมของท่อนาโนคาร์บอนและบัคกี้บอล คาร์บอน เพื่อสร้างโครงสร้างคล้ายงู

เวกเตอร์ที่เชื่อมต่อจุดศูนย์กลางของรูปหกเหลี่ยมทั้งสองเรียกว่าเวกเตอร์ไครัล และเป็นตัวกำหนดโครงสร้างของท่อนาโนคาร์บอนที่มีผนังชั้นเดียว

ท่อนาโนคาร์บอนสามารถระบุได้ด้วยดัชนี chiral และแสดงไว้ด้านล่าง:

เวกเตอร์ Chiral

สำหรับเวกเตอร์ n และ m คือดัชนี chiral จำนวนเต็ม และ | 1|​ = | a 2|​ คือค่าคงที่แลตทิซของกราไฟต์ n และ m สามารถเป็นตัวเลขเพื่อเปลี่ยนโครงสร้างของ CNT ค่าคงที่แลตทิซเป็นมิติทางกายภาพที่สำคัญที่กำหนดรูปทรงเรขาคณิตของเซลล์หน่วยในผลึกแลตทิซและเป็นสัดส่วนกับระยะห่างระหว่างอะตอมในคริสตัล คริสตัลเป็นของแข็งที่มี โครงสร้าง และคุณสมบัติ ที่ เป็นระเบียบ มาก และเกิดขึ้นเมื่อไอออน โมเลกุล หรืออะตอมรวมตัวกันเพื่อแบ่งปันอิเล็กตรอน คริสตัลมีรูปแบบซ้ำๆ กันของอะตอม สารประกอบ โมเลกุล หรือไอออน ซึ่งจัดอยู่ในปริภูมิสามมิติ

นอกจากนี้ยังมีท่อนาโนคาร์บอนรูปซิกแซกและอาร์มแชร์ แต่ในบทความนี้จะไม่กล่าวถึง ซิกแซกหมายความว่าดัชนี m ของ CNT เท่ากับ 0 เก้าอี้เท้าแขนหมายความว่าดัชนี n และ m ของ CNT เท่ากัน

โครงสร้างทางเรขาคณิตของ CNTs

นับตั้งแต่มีการค้นพบท่อนาโนคาร์บอน (CNT) ในปี 1991 นักวิทยาศาสตร์ก็กำลังค้นคว้าเกี่ยวกับคุณลักษณะเฉพาะของ CNT อย่างรวดเร็ว

โครงสร้างอะตอมของ CNT มีความสำคัญเนื่องจากมีอิทธิพลต่อคุณสมบัติต่างๆ เช่น สารกึ่งตัวนำ ความแข็ง ฯลฯ

โปรแกรมจำลองเช่นCASTEPหรือVESTAใช้สร้างแบบจำลอง CNT ด้วยการคำนวณทางคณิตศาสตร์ อย่างไรก็ตาม พวกเขาต้องการการทำซ้ำที่สามารถทำให้กระบวนการจำลอง CNT ต่างๆใช้เวลานานกว่าที่ควรจะเป็น

เหตุใดการสร้างแบบจำลอง CNT จึงมีความสำคัญ

ท่อนาโนคาร์บอนมีคุณสมบัติแตกต่างกันเมื่อมีการเปลี่ยนแปลงโครงสร้าง หากคุณต้องการสร้างลิฟต์อวกาศจากวัสดุราคาถูก แข็งแต่น้ำหนักเบา วิธีแก้ปัญหาก็เหมือนกับ CNT แต่ไม่ใช่ว่าท่อนาโนคาร์บอนทุกท่อจะมีความแข็งเท่ากัน มันไม่ง่ายเลยที่จะสังเคราะห์ เพื่อค้นหาสิ่งที่ตรงกับความต้องการของคุณมากที่สุด การใช้โปรแกรมสร้างแบบจำลองระดับโมเลกุลเป็นตัวเลือกที่ดีที่สุด

อย่างไรก็ตาม คุณอาจต้องทำการคำนวณเพื่อให้แน่ใจว่าการสร้างแบบจำลองของคุณถูกต้อง การคำนวณทางคณิตศาสตร์เหล่านี้ต้องใช้เวลาเนื่องจากต้องมีการวนซ้ำ

ขณะนี้นักวิจัยใช้ANN (โครงข่ายประสาทเทียม) เพื่อทำนายพิกัดอะตอมของท่อนาโนคาร์บอน เพื่อให้สามารถใช้แบบจำลองเหล่านี้ในโปรแกรมการสร้างแบบจำลองเพื่อสร้าง CNT ใหม่ในเวลาอันสั้น

โครงข่ายประสาทเทียม

เครือข่ายประสาทเทียม (ANN) เป็นแบบจำลองการคำนวณที่อิงจากสมองของมนุษย์ที่ช่วยให้คอมพิวเตอร์สามารถเรียนรู้และแก้ปัญหาได้โดยไม่ต้องมีความรู้มาก่อนเกี่ยวกับเรื่องนี้ ANN เป็นชุดของอัลกอริทึมที่ออกแบบมาโดยเฉพาะสำหรับการเรียนรู้ของเครื่องที่ทำงานเป็นปัญญาประดิษฐ์ ANN สามารถสร้างฟังก์ชันใหม่จากชุดของตัวอย่างที่เรียกว่าข้อมูลการฝึกอบรม และสรุปฟังก์ชันเหล่านี้เพื่อแก้ปัญหาที่ไม่จำเป็นในข้อมูลการฝึกอบรม

เครือข่ายประสาทประกอบด้วยโหนดหรือเซลล์ประสาทที่เชื่อมต่อถึงกัน แต่ละโหนดมีอินพุตแบบถ่วงน้ำหนักที่ป้อนเข้าสู่ฟังก์ชันการเปิดใช้งาน เอาต์พุตของฟังก์ชันการเปิดใช้งานจะถูกส่งผ่านไปยังโหนดถัดไปในเครือข่ายผ่านกระบวนการลองผิดลองถูก พลังการจดจำรูปแบบของ ANN ดีขึ้นด้วยการเปิดเผยข้อมูลและความสามารถในการฝึกอบรมที่มากขึ้น

โครงข่ายประสาทเทียม
โหนดเดียว

T การศึกษาของเขากำลังใช้ ANN เพื่อลดการวนซ้ำที่จำเป็นในสภาพแวดล้อมการจำลอง CASTEP สำหรับการสร้างแบบจำลอง CNT

ขั้นตอนการศึกษาของAcıและAvcı

ฉันได้รับแรงบันดาลใจจากบทความนี้และตัดสินใจสร้าง ANN เพื่อทำนายพิกัดอะตอมด้วย Python

กระดาษนี้ใช้ MATLAB สำหรับโมเดลและแชร์รายละเอียดบางส่วนของเลเยอร์ ฉันเขียนโค้ด ANN ใน Python และทำซ้ำเลเยอร์ต่างๆ

การทำนายพิกัดอะตอมของ CNT

1-นำเข้าไลบรารีและชุดข้อมูล

ขั้นตอนแรกคือการนำเข้าไลบรารีและชุดข้อมูล

เรากำลังใช้ชุดข้อมูลซึ่งสร้างโดยกระดาษ ที่กล่าวถึงก่อนหน้า นี้

import numpy as np, pandas as pd, seaborn as sns, matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.metrics import mean_squared_error, r2_score, accuracy_score
from tensorflow.keras.models  import Sequential
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.optimizers import Adam
import datetime
now = datetime.datetime.now
#filter warnings
import warnings
warnings.filterwarnings("ignore")

%matplotlib inline

filepath = 'the_dataset'

raw_data = pd.read_csv(filepath, sep=';',decimal=',')
data = raw_data.copy()

ลองสำรวจชุดข้อมูลที่เรามี ด้วยวิธีนี้ เราสามารถเข้าใจได้ดีขึ้นว่าข้อมูลที่เรามีคืออะไร และเราจะใช้ข้อมูลนั้นได้อย่างไร

data.info()
data.describe()
data.head()
#you can use these to understand the datatypes, observe the 
#statistical summary or to see an example.

      
                
Our data.
data.hist(figsize=(10,10)) #you can take a look at dataset distributions.
The dataset’s distributions.

import plotly.express as px


fig = px.scatter_3d(data,
                    x="Calculated atomic coordinates u'",
                    y="Calculated atomic coordinates v'",
                    z="Calculated atomic coordinates w'",
                    color='Chiral indice n', 
                    size='Chiral indice m', 
                    hover_data=[],
                    opacity=0.4)
fig.update_layout(title='Calculated atomic coordinates')

fig.show()

วางเมาส์เหนือพล็อต

3- ประมวลผลข้อมูล

หลังจากสำรวจข้อมูลของเราแล้ว ตอนนี้เราสามารถแยกข้อมูล x และ y ปรับขนาดคุณสมบัติโดยใช้ MinMaxScaler และแยกข้อมูลการทดสอบการฝึกอบรม

#y data
y_cols = ["Calculated atomic coordinates u'",
          "Calculated atomic coordinates v'",
          "Calculated atomic coordinates w'"]

#target data 
y_data = data[y_cols]

#copy dataset
X_data = data.copy()

#remove target data from X_data
for y_label in y_cols:
    X_data = X_data.drop([y_label], axis=1)

ในMinMaxScalerสำหรับคุณสมบัติที่กำหนด ค่าต่ำสุดของคุณสมบัตินั้นจะถูกแปลงเป็น 0 ในขณะที่ค่าสูงสุดจะเปลี่ยนเป็น 1 และค่าอื่นๆ ทั้งหมดจะถูกทำให้เป็นมาตรฐานระหว่าง 0 ถึง 1

หากต้องการดูว่าแถวใดในข้อมูลที่เข้ารหัสต้องมีการปรับขนาด เรากำลังมองหาค่าต่ำสุดและสูงสุด

scale_cols = [col for col in X_data.columns 
              if X_data[col].min() < -1 
              or X_data[col].max() > 1]

scale_cols

X_data[scale_cols].iloc[:].min()
X_data[scale_cols].iloc[:].max()
from sklearn.preprocessing import MinMaxScaler

mm = MinMaxScaler() 

X_data[scale_cols] = mm.fit_transform(X_data[scale_cols])

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X_data,
                                                    y_data, 
                                                    test_size=0.3,
                                                    random_state=42)

ตอนนี้ได้เวลาสร้างแบบจำลองของเราแล้ว เนื่องจากเรามีอินพุตและเอาต์พุตเดียวในแต่ละเลเยอร์ เราจึงใช้Sequential( )

โมเดลของเรามี 3 ชั้นที่ซ่อนอยู่

  • ชั้นที่ 1: 20 โหนดที่ซ่อนอยู่ การเปิดใช้งานไฮเพอร์โบลิกแทนเจนต์
  • ชั้นที่ 2: 30 โหนดที่ซ่อนอยู่ การเปิดใช้งานไฮเพอร์โบลิกแทนเจนต์
  • เลเยอร์ 3: 25 โหนดที่ซ่อนอยู่ การเปิดใช้งาน softmax
  • ชั้นสุดท้ายมี 3 โหนดที่ไม่มีการเปิดใช้งาน

เรายังสามารถใช้ "ซิกมอยด์"

เหมือนกันหมด ขึ้นอยู่กับการแปลและการปรับขนาด ซิกมอยด์โลจิสติกมีช่วง 0 ถึง 1 ในขณะที่ไฮเพอร์โบลิกแทนเจนต์มีช่วง −1 ถึง 1 และข้อมูลของเรามีสัดส่วนระหว่าง 0 ถึง 1 เราใช้แทนเจนต์เพราะคำนวณได้อย่างมีประสิทธิภาพมากกว่า

สำหรับเลเยอร์ 3 เรามี การเปิดใช้งาน " Softmax " ฟังก์ชันการเปิดใช้งาน Softmax จะคำนวณความน่าจะเป็นสัมพัทธ์

คุณสามารถทดลองเลเยอร์และตรวจสอบผลลัพธ์ได้

model = Sequential()
model.add(Dense(20, input_shape = (5,), activation='tanh'))
model.add(Dense(30, activation = 'tanh'))
model.add(Dense(25, activation = 'softmax'))
model.add(Dense(3, activation=None))

Adam Optimizer เป็นหนึ่งในเครื่องมือเพิ่มประสิทธิภาพที่ใช้กันอย่างแพร่หลายสำหรับการฝึกอบรมโครงข่ายประสาทเทียม และยังใช้เพื่อวัตถุประสงค์ในทางปฏิบัติอีกด้วย มีประสิทธิภาพมากกับปัญหาขนาดใหญ่ซึ่งประกอบด้วยข้อมูลจำนวนมาก เป็นวิธีการที่คำนวณอัตราการเรียนรู้แบบปรับตัวสำหรับแต่ละพารามิเตอร์

model.compile(Adam(lr = 0.0015),
                'mean_squared_error')

run = model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=320)

      
                

เวลาดูเมตริกประสิทธิภาพ

# predictions for train and test 
y_train_pred = model.predict(X_train)
y_test_pred = model.predict(X_test)

# R2 score for train and test 
train_score = r2_score(y_train, y_train_pred)
test_score = r2_score(y_test, y_test_pred)

print("_________________________________________________")
print("R2 Score for the training set is:", train_score)
print("R2 Score for the test set is:", test_score)

      
                
R2 score

คะแนน R2 ของเราสำหรับชุดทดสอบคือ 0.99 นั่นหมายถึง 99% ของความสามารถในการเปลี่ยนแปลงของแอ็ตทริบิวต์เอาต์พุตที่ขึ้นต่อกันสามารถอธิบายได้ด้วยแบบจำลอง ในขณะที่ 1% ยังไม่ได้รับการอธิบาย

ประสิทธิภาพของเราดูดี ! เราสามารถพูดได้ว่าโมเดลของเราประสบความสำเร็จ

บทสรุป

ว้าว! นี่เป็นจำนวนมาก ก่อนอื่นเราเรียนรู้ว่า CNT คืออะไรและเหตุใดการสร้างแบบจำลองจึงมีความสำคัญ จากนั้นเราจะใช้ ANN ในการทำนายพิกัดอะตอมได้อย่างไร

ประเด็นสำคัญบางประการ:

  • ท่อนาโนคาร์บอน (CNTs) เป็นวัสดุนาโนที่ค้นพบใหม่ซึ่งมีคุณสมบัติเฉพาะตัว
  • คุณสมบัติของ CNT ได้รับอิทธิพลจากรูปร่างและโครงสร้างของมัน ดังนั้นการสร้างแบบจำลองและการจำลองโครงสร้างจึงมีบทบาทสำคัญสำหรับนักวิทยาศาสตร์ในการลองวิธีการสังเคราะห์ใหม่ๆ
  • ปัจจุบันการจำลอง CNTs ใช้เวลานานเนื่องจากจำเป็นต้องทำการคำนวณทางคณิตศาสตร์เพื่อให้ได้พิกัดอะตอมที่แม่นยำ
  • การศึกษานี้ใช้โครงข่ายประสาทเทียมในการทำนายพิกัดอะตอม ดังนั้นการวนซ้ำสามารถทำได้โดยซอฟต์แวร์จำลองโดยไม่ต้องใช้การคำนวณทางคณิตศาสตร์
  • โมเดลที่เราสร้างขึ้นโดยได้รับแรงบันดาลใจจากการศึกษาของ Acı และ Avcıนั้นมีประสิทธิภาพสูง

สวัสดี! ฉันชื่อ Elanu อายุ 16 ปีจากตุรกี ผู้เขียนเกี่ยวกับ STEM