Dies ist der Artikel zum 10. Tag von Nextremer Adventskalender 2016. Ich studiere ein Fach, das ** maschinelles Lernen und Materialentwicklung ** an der Universität kombiniert. Dieses Mal schrieb ich einen Artikel mit der Hoffnung, dass ** Menschen, die maschinelles Lernen lieben, sich wie ein Materialforscher fühlen **. (Eigentlich möchte ich, dass sich Materialforscher wie KI-Forscher fühlen und maschinelles Lernen stärker in Materialien integrieren.)
Zunächst einmal denke ich, dass Materialentwicklung so etwas wie Material ist. Wie Sie sagten, gibt es verschiedene Materialien wie Keramik, Polymere und Metalle.
Zum Beispiel iPhone
Es gibt Hunderte solcher kleinen Keramikkondensatoren.
Und um einen von Apple ausgewählten Hochleistungskondensator herzustellen,
・ Welche Elemente sollten kombiniert werden? ・ Was für einen Prozess sollten Sie durchführen?
Es wird das schwierige Problem lösen. Hier ist ein Beispiel, wie man es löst.
Es ist wie es ist. Dies ist nur ein Beispiel, aber was ist Materialforschung?
Machen Sie großartige Materialien, indem Sie Prozessoptimierung, Messung, Theorie, Analyse, Exploration usw. voll ausnutzen.
Es ist chaotisch, aber es sieht so aus.
Der Weg, Materialien durch maschinelles Lernen zu entwickeln, besteht natürlich darin, Merkmale aus Daten zu lernen. Dann prognostizieren und suchen wir nach Materialien mit guten physikalischen Eigenschaften.
Die aktuelle Situation ist jedoch, dass die KI aufgrund fehlender Daten nicht viele Ergebnisse in der Materialforschung erzielen konnte.
Es gibt zwei Haupttypen von Daten zu Materialien. ・ Experimentelle Messdaten ・ Analysedaten durch Berechnung
Die experimentellen Messdaten sind
--Papier
Das ist die Situation. Ich möchte die Fehlerdaten durcheinander bringen, die nicht in der Veröffentlichung oder in Deep Learning erwähnt werden, aber sie sind mit Staub bedeckt, wie sie im Experimentierheft geschrieben sind. Ich möchte eine riesige Datenbank, aber es scheint schwierig zu sein, weil jeder wichtige Ergebnisse verbergen möchte.
Die Datenbank mit Berechnungsdaten ist für die Öffentlichkeit kostenlos zugänglich Materials Project Ist eine Organisation. Die hier veröffentlichten Daten werden mit einer beängstigend klingenden Methode berechnet, die als ** First-Principles-Berechnung ** bezeichnet wird. Die Daten können einfach im REST-Format unter https://materialsproject.org/ abgerufen werden!
Für diejenigen, die interessiert sind.
Was ist First-Principles-Berechnung? Ein allgemeiner Begriff für Berechnungen (Methoden), die nach dem ersten Prinzip durchgeführt werden. ([Wikipedia](https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E5%8E%9F%E7%90%86%E8%A8%88%E7% Ab AE% 97))
Ja.
Was ist das erste Prinzip? Die ersten naturwissenschaftlichen Prinzipien beziehen sich auf die grundlegendsten Grundregeln, die keine Annäherungen oder empirischen Parameter enthalten, und können Naturphänomene unter dieser Voraussetzung erklären. .. ([Wikipedia](https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E5%8E%9F%E7%90%86#.E8.87.AA.E7 .84.B6.E7.A7.91.E5.AD.A6.E3.81.AB.E3.81.8A.E3.81.91.E3.82.8B.E7.AC.AC.E4.B8.80.E5 Von .8E.9F.E7.90.86))
Einfach ausgedrückt ist es eine Person, die das Verhalten einer sehr komplizierten Substanz nur durch physikalische Grundgesetze wie Elektronen und Atome berechnet. Aber
Die Anzahl der Atome, die mit der sogenannten elektronischen Zustandsberechnungsmethode nach den ersten Prinzipien verarbeitet werden können, liegt ab 2003 immer noch bei etwa 100 bis 1000, was weit unter der Avocadro-Konstante liegt. Auf dieser Ebene kann ein Protein (oder eine Aminosäure) mit der einfachsten Struktur schließlich in der Größenordnung von 1000 Atomen gehandhabt werden. ([Wikipedia](https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E5%8E%9F%E7%90%86%E8%A8%88%E7% Ab AE% 97))
Es scheint. Es war jetzt ein enormer Fortschritt im Jahr 2016, aber die aktuelle Situation ist, dass es viel Kosten und Know-how erfordert, um komplizierte Materialien und physikalische Eigenschaften zu berechnen. Wenn Sie also eine große Datenmenge erfassen möchten, drehen Sie den Computer um und berechnen Sie sie leise oder nehmen Sie sie aus dem Materialprojekt.
Immerhin sind die Zeiten KI und maschinelles Lernen. Materialien mit KI herstellen
** ① Vorhersage der physikalischen Eigenschaften von Materialien mit AI anhand chemischer Formeln → ② Suche aus einer Vielzahl von Atomkombinationen mit AI → ③ Herstellung von Materialien unter Steuerung von Robotern bei gleichzeitiger Optimierung von Prozessen mit AI **
Derzeit ist sogar ** ① überhaupt nicht abgeschlossen. ** ** ** Das Hauptthema tut mir leid, aber lassen Sie uns gemeinsam die Vorhersage physikalischer Eigenschaften versuchen und das Gefühl eines Materialforschers beim maschinellen Lernen erleben!
Tatsächlich gibt es eine Firma namens Citrine Informatics, die einen Dienst anbietet, der die Materialentwicklung mit KI unterstützt, und der ein nettes Tutorial hat, also würde ich es gerne ausprobieren. Ich denke. Quelle: MASCHINENLERNEN FÜR DEN MATERIALWISSENSCHAFTLER
Zweck
Lernen Sie die ** Bandlücke ** einer Substanz maschinell. Die Bandlücke repräsentiert die Größe der Barriere, wenn sich Elektronen bewegen. Wenn die Bandlücke groß ist, wird kein Strom durchgelassen (Stein). Wenn die Bandlücke eng ist, wird Elektrizität durchgelassen (Metall). Es kann passieren oder nicht, wenn es in Ordnung ist. (Halbleiter)
** Notwendige Dinge **
--python3.5 (2 Serien sind wahrscheinlich möglich, aber ich habe es nicht ausprobiert)
** Installieren **
pip install scikit-learn
pip install numpy
pip install pymatgen
** Versuchen Sie maschinelles Lernen mit erklärenden Variablen nur für chemische Formeln **
Holen Sie sich zuerst die Daten. Laden Sie die Datei bandgapDFT.csv von [hier] herunter (https://citrineinformatics.box.com/shared/static/0ch2f96jxbqtntia49ipk7g8vx64tuap.csv). DFT ist übrigens eine Berechnungsmethode nach dem ersten Prinzip, die als Dichtefunktionaltheorie bezeichnet wird.
Importieren wir zunächst die erforderlichen Bibliotheken und laden die heruntergeladene CSV.
bandgap.py
from pymatgen import Composition, Element
from numpy import zeros, mean
trainFile = open("bandgapDFT.csv","r").readlines()
Mit Blick auf die Daten,
LiH,2.981
BeH2,5.326
B9H11,2.9118
B2H5,6.3448
BH3,5.3234
B5H7,3.5551
H34C19,5.4526
H3N,4.3287
(Folgendes wird weggelassen)
Ich denke es sieht so aus. Die erste Zeile ist die chemische Formel und die zweite Zeile ist die Bandlücke (eV). Erstellen Sie eine Funktion, um die chemische Formel als Vektor fester Länge für maschinelles Lernen zu behandeln. Die Zusammensetzung, die hier erscheint, ist ein Zusammensetzungsobjekt von Pymatgen, und Sie können das Atom, das Zusammensetzungsverhältnis usw. aus der chemischen Formel erhalten.
bandgap.py
#input:Kompositionsobjekt von Pymatgen
#output:Zusammensetzungsvektor
def naiveVectorize(composition):
vector = zeros((MAX_Z))
for element in composition:
#Element ist ein Atom. Fraktion ist der Prozentsatz des Atoms in der Zusammensetzung
fraction = composition.get_atomic_fraction(element)
vector[element.Z - 1] = fraction
return(vector)
Lesen Sie die chemische Formel und die Bandlücke aus csv und bereiten Sie den Vektor der erklärenden Variablen aus der chemischen Formel mit der obigen Funktion vor. (Generierung von Lehrerdaten)
bandgap.py
materials = []
bandgaps = []
naiveFeatures = []
MAX_Z = 100 #Maximale Länge des Merkmalsvektors
for line in trainFile:
split = str.split(line, ',')
material = Composition(split[0])
materials.append(material) #Chemische Formel
naiveFeatures.append(naiveVectorize(material)) #Erzeugung von Merkmalsvektoren
bandgaps.append(float(split[1])) #Bandlückenbelastung
Der Merkmalsmengenvektor wird zu super diskreten Daten wie diesen.
[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0.5, 0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. , 0.5, 0. , 0. , 0. , 0. , 0. ,
0. ]
Die Lehrerdaten sind also fertig. Danach werden wir maschinelles Lernen mit dem praktischen Modul von scikitlearn durchführen. Lassen Sie uns vorher zunächst einen einfachen Durchschnittsfehler finden, um die Genauigkeit der Bandlückenvorhersage zu überprüfen.
bandgap.py
baselineError = mean(abs(mean(bandgaps) - bandgaps))
print("Mean Absolute Error : " + str(round(baselineError, 3)) + " eV")
Jetzt sollte es 0,728 eV sein. Machen wir also einen Bandlücken-Prädiktor in einem zufälligen Wald.
bandgap.py
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import ShuffleSplit
from sklearn import linear_model, metrics, ensemble
#Zufällige Waldrückgabe von sklearn
rfr = ensemble.RandomForestRegressor(n_estimators=10)
#Gegenüberstellung
cv = ShuffleSplit(n_splits=10, test_size=0.1, random_state=0)
scores_composition = cross_val_score(rfr, naiveFeatures,\
bandgaps, cv=cv, scoring='neg_mean_absolute_error')
print("Mean Absolute Error by Random Forest with composition data: "\
+ str(round(abs(mean(scores_composition)), 3)) + " eV")
Wenn der durchschnittliche Fehler etwa 0,36 bis eV beträgt, sind Sie fertig. Im Vergleich zu 0,728 eV habe ich es geschafft zu lernen.
** Verwenden wir einen physikalischen Wert als erklärende Variable ** Bisher haben wir nur verwendet, welche Art von Atomen als erklärende Variablen enthalten sind, aber als nächstes werden wir Werte wie das Atomzusammensetzungsverhältnis und die elektrische Negativität als erklärende Variablen verwenden. Es sind nur 4 Dimensionen. Zum Beispiel BeH2 [2.0, 0.63, 1.0, 2.0] Es wird sein.
bandgap.py
physicalFeatures = []
for material in materials:
theseFeatures = []
fraction = []
atomicNo = []
eneg = []
group = []
for element in material:
fraction.append(material.get_atomic_fraction(element))
atomicNo.append(float(element.Z))
eneg.append(element.X)
group.append(float(element.group))
mustReverse = False
if fraction[1] > fraction[0]:
mustReverse = True
for features in [fraction, atomicNo, eneg, group]:
if mustReverse:
features.reverse()
theseFeatures.append(fraction[0] / fraction[1])
theseFeatures.append(eneg[0] - eneg[1])
theseFeatures.append(group[0])
theseFeatures.append(group[1])
physicalFeatures.append(theseFeatures)
Lassen Sie uns mit dem Entscheidungsbaum auf die gleiche Weise trainieren, indem wir die erstellte erklärende Variable PhysicalFeatures verwenden.
bandgap.py
scores_physical =cross_val_score(rfr, physicalFeatures,\
bandgaps, cv=cv, scoring='mean_absolute_error')
print("Mean Absolute Error by Random Forest with physical data: "\
+ str(round(abs(mean(scores_physical)), 3)) + " eV")
Dann Mean Absolute Error by Random Forest with physical data:: 0.267 eV Es wird sein.
Im Vergleich
Es stellte sich heraus, dass es genauer ist, die physikalische Größe als erklärende Variable zu verwenden. Es ist überhaupt nutzlos, aber ich denke, ich konnte durch maschinelles Lernen irgendwie die Stimmung eines Materialforschers spüren.
Tatsächlich gibt es bereits viele Veröffentlichungen, die die Vorhersage physikalischer Eigenschaften unter Verwendung neuronaler Netze und Entscheidungsbäume sowie Methoden zur Materialsuche unter Verwendung genetischer Algorithmen vorschlagen, und sie sind derzeit nicht auf praktischer Ebene anwendbar, sondern in Zukunft. Ich denke, dass die Materialforschung mit KI sicherlich aktiv werden wird. Ich bin jedoch der Meinung, dass Japan in diesem Bereich im Vergleich zu den USA und anderen Ländern weit hinterherhinkt. Wenn Sie eine Person sind, die sich auf Materialien und physikalische Eigenschaften spezialisiert hat, möchte ich, dass Sie mit der Forschung fortfahren, die maschinelles Lernen beinhaltet.
Vielen Dank!
Recommended Posts