이것이 당신이 찾고 있는 탄소 원자입니까? -CNT의 원자 조정을 예측하는 AI.

Nov 29 2022
기술은 모든 것을 더 빠르고 쉽게 만드는 것입니다. 컴퓨터 덕분에 우리는 과학과 관련하여 수학, 디자인 또는 실험을 할 필요가 없습니다.

기술은 일 을 더 빠르고 쉽게 만드는 것 입니다. 컴퓨터 덕분에 우리는 과학과 관련하여 수학, 디자인 또는 실험을 할 필요가 없습니다.

컴퓨터의 뛰어난 능력으로부터 실제로 혜택을 받는 분야 중 하나는 나노기술 입니다.

나노기술은 원자 규모의 물질에 대해 연구하고 있습니다. 이것은 항상 쉽고 빠르거나 저렴하지 않습니다.

최근의 발전은 나노물질을 시뮬레이션할 수 있는 새로운 기회를 제공하고 있습니다. 한 가지 문제점: 그들은 아직 그렇게 빠르지 않습니다.

그리고 우리는 반복이 필요한 느린 작업을 원하지 않습니다. 우리는 빠른 발전을 해야 합니다.

탄소 나노튜브(CNT)가 1991년에 발견되었지만 과학자와 기업가들은 이미 이를 실험하고 상용화할 방법을 찾았습니다. 군용 CNT 쉴드, CNT 배터리, CNT 바이오마커…

이러한 빠른 발전을 통해 인공지능이 버팀목이 되었습니다 .

다음 섹션에서는 인공 신경망을 사용하여 CNT의 원자 좌표를 예측하는 방법에 대해 설명합니다. 따라서 AI와 나노기술이 어떻게 통합될 수 있는지 알고 싶다면 계속 읽으십시오!

탄소나노튜브

a, b SEM 탄소 나노튜브 이미지의 예. c, d TEM 탄소 나노튜브 이미지의 예

탄소 나노튜브는 일반적으로 나노미터 단위로 측정되는 탄소로 만들어진 튜브입니다. 탄소 나노튜브(CNT)는 육각형 격자 구조로 결합된 탄소 원자 시트로 만들 수 있는 매우 길고 얇은 실린더입니다.

CNT는 고강성, 고강도, 저밀도, 작은 크기 및 금속에서 반도체에 이르는 광범위한 전자 특성의 고유한 조합을 가지고 있습니다.

CNT의 일부 응용 분야:

  • 연구 에 따르면 CNT는 리튬 이온 배터리에 사용하기 위한 탄소 소재 중 가장 높은 가역 용량을 가지고 있습니다. CNT는 슈퍼커패시터 전극용으로 뛰어난 소재입니다.
  • 많은 연구자( 예 참조 )와 기업은 이미 CNT 기반 공기 및 물 여과 장치를 개발했습니다. 이 필터는 가장 작은 입자를 차단할 수 있을 뿐만 아니라 대부분의 박테리아를 죽일 수 있다고 보고되었습니다. 이것은 CNT가 이미 상용화되어 제품이 현재 시장에 나와 있는 또 다른 영역입니다.
  • 연구에 따르면 CNT는 현재 최적화되지 않은 상태에서도 상당한 효율성 증가를 제공할 수 있습니다. New Jersey Institute of Technology 에서 개발한 태양 전지 는 탄소 나노튜브와 탄소 버키볼 이 혼합되어 뱀 모양의 구조를 형성하는 탄소 나노튜브 복합체를 사용합니다.

두 육각형의 중심을 연결하는 벡터를 키랄 벡터 라고 하며 단일벽 탄소나노튜브의 구조를 결정 한다 .

탄소 나노튜브는 키랄 지수로 지정될 수 있으며 다음과 같이 표현됩니다.

키랄 벡터

벡터의 경우 n과 m은 정수 키랄 인덱스이고 | 1 | = | a 2| 는 흑연의 격자 상수입니다. n과 m은 CNT의 구조를 바꾸기 위한 숫자일 수 있다. 격자 상수 는 결정 격자에서 단위 셀 의 기하학을 결정하는 중요한 물리적 치수이며 결정에서 원자 사이의 거리에 비례합니다. 결정 은 매우 규칙적인 구조 와 특성을 가진 고체이며 이온, 분자 또는 원자가 함께 결합하여 전자를 공유할 때 형성됩니다. 결정은 3차원 공간에 배열된 원자, 화합물, 분자 또는 이온의 반복 패턴을 가지고 있습니다.

지그재그와 안락의자 탄소 나노튜브도 있지만 이 기사에서는 언급하지 않겠습니다. 지그재그는 CNT의 m 인덱스가 0과 같음을 의미합니다. 안락 의자는 CNT의 n과 m 인덱스가 같음을 의미합니다.

CNT의 기하학적 구조

1991년 탄소나노튜브(CNT)가 발견된 이후 과학자들은 CNT의 고유한 특성을 빠르게 연구하고 있습니다.

CNT의 원자 구조는 반도체, 강성 등과 같은 다양한 특성에 영향을 미치기 때문에 중요합니다.

CASTEP 또는 VESTA 와 같은 시뮬레이션 프로그램은 수학적 계산 으로 CNT 모델을 만드는 데 사용됩니다 . 그러나 서로 다른 CNT를 시뮬레이션하는 프로세스를 필요 이상으로 길게 만들 수 있는 반복 이 필요합니다.

CNT 모델링이 중요한 이유는 무엇입니까?

탄소나노튜브는 구조가 바뀌면 성질이 달라진다. 매우 저렴하고 단단하지만 가벼운 재료로 우주 엘리베이터를 만들고 싶다면 그 해결책은 CNT처럼 보입니다. 그러나 모든 탄소 나노튜브가 동일한 강성을 갖는 것은 아닙니다. 합성하기가 항상 쉬운 것은 아닙니다. 귀하의 희망에 가장 적합한 것을 찾으려면 분자 모델링 프로그램을 사용하는 것이 최선의 선택입니다.

그러나 모델링이 정확한지 확인하기 위해 몇 가지 계산을 수행해야 할 수도 있습니다. 이러한 수학적 계산은 반복이 필요하므로 시간이 걸립니다.

연구원들은 이제 ANN (Artificial Neural Networks)을 사용하여 탄소 나노튜브의 원자 좌표를 예측하므로 이러한 모델을 모델링 프로그램 내에서 사용하여 짧은 시간에 새로운 CNT를 구축할 수 있습니다.

인공신경망

인공 신경망(ANN)은 컴퓨터가 주제에 대한 사전 지식 없이 학습하고 문제를 해결할 수 있도록 하는 인간의 두뇌를 기반으로 하는 계산 모델입니다. ANN은 인공 지능으로 작동하는 기계 학습을 위해 특별히 설계된 일련의 알고리즘입니다. ANN은 훈련 데이터라고 하는 일련의 예제에서 새로운 기능을 생성하고 훈련 데이터에 반드시 포함되지 않은 문제를 해결하기 위해 이러한 기능을 일반화할 수 있습니다.

신경망은 상호 연결된 노드 또는 뉴런으로 구성됩니다. 각 노드에는 활성화 함수에 입력되는 가중 입력이 있습니다. 그런 다음 활성화 함수의 출력은 시행 착오 과정을 통해 네트워크의 다음 노드로 전달됩니다. ANN의 패턴 인식 능력은 더 많은 데이터 노출과 훈련 능력으로 향상됩니다.

신경망.
단일 노드.

그의 연구 는 ANN을 사용하여 CNT 모델링을 위한 CASTEP 시뮬레이션 환경에 필요한 반복을 낮추고 있습니다.

Acı와 Avcı의 연구 단계.

저는 이 논문에서 영감을 받아 Python으로 원자 좌표를 예측하는 ANN을 구축하기로 결정했습니다.

이 논문은 모델에 MATLAB을 사용하고 레이어의 일부 세부 정보를 공유합니다. Python에서 ANN을 코딩하고 레이어에 대해 몇 가지 반복을 수행했습니다.

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개의 히든 노드, 소프트맥스 활성화
  • 마지막 계층에는 활성화가 없는 3노드가 있습니다.

"Sigmoid"를 사용할 수도 있습니다.

변환 및 스케일링까지 동일합니다. 로지스틱 시그모이드는 범위가 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 옵티마이저는 신경망 훈련에 가장 널리 사용되는 옵티마이저 중 하나이며 실용적인 목적으로도 사용됩니다. 많은 수의 데이터로 구성된 큰 문제에 매우 효율적입니다. 각 매개변수에 대한 적응적 학습률을 계산하는 방법입니다.

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을 사용하여 원자 좌표를 예측하는 방법에 대해 배웠습니다.

몇 가지 핵심 사항:

  • 탄소나노튜브(CNT)는 독특한 성질을 가진 새로 발견된 나노물질이다.
  • CNT의 특성은 모양과 구조의 영향을 받습니다. 따라서 구조를 모델링하고 시뮬레이션하는 것은 과학자들이 새로운 합성 방법을 시도하는 데 중요한 역할을 합니다.
  • 정확한 원자 좌표를 위해 수학적 계산이 필요하기 때문에 현재 CNT를 시뮬레이션하는 데 많은 시간이 걸립니다.
  • 이 연구 는 인공 신경망을 사용하여 원자 좌표를 예측하므로 수학적 계산 없이 시뮬레이션 소프트웨어에서 반복을 수행할 수 있습니다.
  • Acı와 Avcı의 연구 에서 영감을 받아 구축한 모델 은 높은 성능을 보여주고 있습니다.

안녕! 저는 STEM에 관해 글을 쓰는 터키 출신의 16세 Elanu입니다.