Ceci est l'article du 10e jour du Calendrier de l'Avent Nextremer 2016. J'étudie un domaine qui combine ** apprentissage automatique et développement matériel ** à l'université. Cette fois, j'ai écrit un article dans l'espoir que ** les gens qui aiment l'apprentissage automatique se sentiront comme un chercheur en matériaux **. (En fait, je veux que les chercheurs en matériaux se sentent comme des chercheurs en IA et intègrent davantage l'apprentissage automatique dans les matériaux.)
Tout d'abord, je pense que le développement matériel est quelque chose comme quel genre de matériel il s'agit. Comme vous l'avez dit, il existe divers matériaux tels que la céramique, les polymères et les métaux.
Par exemple iPhone
Il contient des centaines de ces petits condensateurs céramiques.
Et afin de fabriquer un condensateur haute performance choisi par Apple,
・ Quels types d'éléments doivent être combinés? ・ Quel genre de processus devriez-vous faire?
Cela résoudra le problème difficile. Voici un exemple de la façon de le résoudre.
C'est comme ça. Ceci n'est qu'un exemple, mais qu'est-ce que la recherche matérielle?
Fabriquer de bons matériaux en utilisant pleinement l'optimisation des processus, la mesure, la théorie, l'analyse, l'exploration, etc.
C'est désordonné, mais ça ressemble à ça.
La manière de développer des matériaux par apprentissage automatique est, bien sûr, d'apprendre des fonctionnalités à partir de données. Ensuite, nous prédisons et recherchons des matériaux avec de bonnes propriétés physiques.
Cependant, la situation actuelle est que l'IA n'a pas été en mesure de produire beaucoup de résultats dans la recherche matérielle en raison du manque de données.
Il existe deux principaux types de données sur les matériaux. ・ Données de mesure expérimentales ・ Données d'analyse par calcul
Les données de mesure expérimentales sont
--Papier
Telle est la situation. J'aimerais gâcher les données d'échec qui ne sont pas mentionnées dans l'article ou le Deep Learning, mais je porte de la poussière telle qu'elle est écrite dans le cahier d'expérimentation. Je veux une énorme base de données, mais cela semble difficile car tout le monde veut cacher des résultats importants.
La base de données des données de calcul est ouverte au public gratuitement Materials Project Est une organisation. Les données publiées ici sont calculées par une méthode de sondage effrayante appelée ** calcul des premiers principes **. Les données peuvent être facilement récupérées au format REST en utilisant https://materialsproject.org/!
Pour ceux qui sont intéressés.
Qu'est-ce que le calcul des premiers principes? Un terme général pour les calculs (méthodes) effectués sur la base du premier principe. ([Wikipédia](https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E5%8E%9F%E7%90%86%E8%A8%88%E7% À partir de AE% 97))
Oui.
Quel est le premier principe? Les premiers principes en sciences naturelles font référence aux règles de base les plus fondamentales qui n'incluent pas d'approximations ou de paramètres empiriques, et peuvent expliquer les phénomènes naturels sur la base de cela. .. ([Wikipédia](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 À partir de .8E.9F.E7.90.86))
Pour faire simple, c'est une personne qui calcule le comportement d'une substance très compliquée uniquement par des lois physiques de base telles que les électrons et les atomes. Mais
Le nombre d'atomes pouvant être manipulés par la méthode dite de calcul de l'état électronique des premiers principes est toujours d'environ 100 à 1000 en 2003, ce qui est bien en dessous de la constante d'avocat. C'est un niveau qu'une protéine (ou un acide aminé) avec la structure la plus simple peut finalement être manipulée de l'ordre de 1000 atomes. ([Wikipédia](https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E5%8E%9F%E7%90%86%E8%A8%88%E7% À partir de AE% 97))
Il semble. Il a fait beaucoup de progrès maintenant en 2016, mais la situation actuelle est qu'il faut beaucoup de coûts et de savoir-faire pour calculer des matériaux complexes et des propriétés physiques. Donc, si vous souhaitez collecter une grande quantité de données, retournez l'ordinateur et calculez-le tranquillement, ou prenez-le dans le projet Matériaux.
Après tout, les temps sont l'IA et l'apprentissage automatique. Pour fabriquer des matériaux avec l'IA
** ① Prédire les propriétés physiques du matériau avec AI à partir de la formule chimique → ② Recherche à partir d'une énorme combinaison d'atomes avec AI → ③ Fabriquer le matériau tout en contrôlant le robot tout en optimisant le processus avec AI **
À l'heure actuelle, même ** ① n'est pas du tout terminé. ** ** Donc, je suis désolé pour le sujet principal, mais essayons ensemble ** la prédiction des propriétés physiques ** et ressentons le sentiment d'un chercheur de matériaux ** avec l'apprentissage automatique!
En fait, il existe une société appelée Citrine Informatics qui est engagée dans un service qui aide au développement de matériel avec l'IA, et elle a un beau tutoriel, alors j'aimerais l'essayer. Je pense. Source: MACHINE LEARNING FOR THE MATERIALS SCIENTIST
Objectif
Apprenez à la machine la ** bande interdite ** d'une substance. La bande interdite représente la taille de la barrière lorsque les électrons se déplacent. Si la bande interdite est large, l'électricité ne passera pas (pierre). Si la bande interdite est étroite, l'électricité passera (métal). Il peut réussir ou non s'il est OK (semi-conducteur)
** Choses nécessaires **
--python3.5 (2 séries sont probablement possibles, mais je ne l'ai pas essayé)
** Installer **
pip install scikit-learn
pip install numpy
pip install pymatgen
** Essayez l'apprentissage automatique avec des variables explicatives uniquement pour les formules chimiques **
Premièrement, récupérez les données. Téléchargez le fichier bandgapDFT.csv depuis ici. À propos, la DFT est une méthode de calcul basée sur les premiers principes appelée théorie fonctionnelle de la densité.
Tout d'abord, importons les bibliothèques nécessaires et chargeons le csv téléchargé.
bandgap.py
from pymatgen import Composition, Element
from numpy import zeros, mean
trainFile = open("bandgapDFT.csv","r").readlines()
En regardant les données,
LiH,2.981
BeH2,5.326
B9H11,2.9118
B2H5,6.3448
BH3,5.3234
B5H7,3.5551
H34C19,5.4526
H3N,4.3287
(Ce qui suit est omis)
Je pense que ça ressemble à ça. La première ligne est la formule chimique et la deuxième ligne est la bande interdite (eV). Créez une fonction pour traiter la formule chimique comme un vecteur de longueur fixe pour l'apprentissage automatique. La composition qui apparaît ici est un objet Composition de pymatgen, et vous pouvez obtenir l'atome, le rapport de composition, etc. à partir de la formule chimique.
bandgap.py
#input:Objet de composition de pymatgen
#output:Vecteur de composition
def naiveVectorize(composition):
vector = zeros((MAX_Z))
for element in composition:
#l'élément est un atome. fraction est le pourcentage de l'atome dans la composition
fraction = composition.get_atomic_fraction(element)
vector[element.Z - 1] = fraction
return(vector)
Lisez la formule chimique et la bande interdite de csv, et préparez le vecteur des variables explicatives de la formule chimique avec la fonction ci-dessus. (Génération de données enseignants)
bandgap.py
materials = []
bandgaps = []
naiveFeatures = []
MAX_Z = 100 #Longueur maximale du vecteur caractéristique
for line in trainFile:
split = str.split(line, ',')
material = Composition(split[0])
materials.append(material) #Formule chimique
naiveFeatures.append(naiveVectorize(material)) #Génération de vecteurs de caractéristiques
bandgaps.append(float(split[1])) #Chargement de la bande interdite
Le vecteur de quantité d'entités devient des données super discrètes comme celle-ci.
[ 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. ]
Ainsi, les données des enseignants sont prêtes. Après cela, nous ferons l'apprentissage automatique en utilisant le module pratique de scikitlearn. Avant cela, trouvons d'abord une erreur moyenne simple pour vérifier l'exactitude de la prédiction de la bande interdite.
bandgap.py
baselineError = mean(abs(mean(bandgaps) - bandgaps))
print("Mean Absolute Error : " + str(round(baselineError, 3)) + " eV")
Maintenant, il devrait être de 0,728eV. Faisons donc un prédicteur de bande interdite dans une forêt aléatoire.
bandgap.py
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import ShuffleSplit
from sklearn import linear_model, metrics, ensemble
#Retour en forêt aléatoire de sklearn
rfr = ensemble.RandomForestRegressor(n_estimators=10)
#Vérification croisée
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")
Si l'erreur moyenne est d'environ 0,36 à eV, vous avez terminé. Par rapport à 0,728eV, je pense avoir réussi à apprendre.
** Utilisons une valeur physique comme variable explicative ** Jusqu'à présent, nous n'avons utilisé que le type d'atomes contenus comme variables explicatives, mais nous utiliserons ensuite des valeurs telles que le rapport de composition atomique et la négativité électrique comme variables explicatives. C'est seulement 4 dimensions. Par exemple, BeH2 [2.0, 0.63, 1.0, 2.0] Ce sera.
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)
Entraînons-nous avec l'arbre de décision de la même manière en utilisant la variable explicative créée physicalFeatures.
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")
Puis Mean Absolute Error by Random Forest with physical data:: 0.267 eV Ce sera.
Par comparaison
Il s'est avéré qu'il est plus exact d'utiliser la quantité physique comme variable explicative. C'est inutile du tout, mais je pense que je pourrais d'une manière ou d'une autre ressentir l'humeur d'un chercheur en matériaux grâce à l'apprentissage automatique.
En fait, il existe déjà de nombreux articles qui proposent la prédiction des propriétés physiques à l'aide de réseaux neuronaux et d'arbres de décision, ainsi que des méthodes de recherche de matériaux utilisant des algorithmes génétiques, et ils ne sont actuellement pas applicables à un niveau pratique, mais à l'avenir. Je pense que la recherche matérielle utilisant l'IA deviendra sûrement active. Cependant, j'estime que le Japon est loin derrière dans ce domaine par rapport aux États-Unis et à d'autres pays. Si vous êtes une personne spécialisée dans les matériaux et les propriétés physiques, j'aimerais vraiment que vous procédiez à des recherches intégrant l'apprentissage automatique.
Merci beaucoup!
Recommended Posts