Zurück zum Katalog
Season 22 15 Episoden 1h 5m 2026

Mastering DeepChem

v2.8 — 2026 Edition. Ein umfassender Leitfaden zu DeepChem, einem Framework zur Demokratisierung von Deep Learning in den Naturwissenschaften. Behandelt wird alles von der Datenverarbeitung und MoleculeNet über Graph Featurizers, spezialisierte ML-Modelle und molekulares Docking bis hin zu Reinforcement Learning (v2.8 - 2026).

Wissenschaftliches Rechnen Deep Learning für die Wissenschaft Chemoinformatik
Mastering DeepChem
Aktuelle Wiedergabe
Click play to start
0:00
0:00
1
Das DeepChem-Projekt
Eine Einführung in das DeepChem-Projekt und seine Mission, Deep Learning für die Wissenschaft zu demokratisieren. Wir behandeln, wie es sich von chemischen Anwendungen zu einer breiteren Palette wissenschaftlicher Machine-Learning-Tools entwickelt hat.
4m 17s
2
Verwaltung wissenschaftlicher Datensätze
Entdecke die Dataset-Abstraktion von DeepChem zur Verarbeitung großer wissenschaftlicher Daten. Lerne die entscheidenden Unterschiede zwischen NumpyDataset und DiskDataset für das Out-of-Core-Speichermanagement kennen.
4m 11s
3
MoleculeNet-Benchmarks
Entdecke MoleculeNet, die führende Benchmark-Suite, die innerhalb von DeepChem gepflegt wird. Wir diskutieren, wie die Standardisierung von Datensätzen wie Tox21 und QM9 die Computerchemie beschleunigt.
4m 24s
4
Feature Engineering für Moleküle
Erfahre, wie DeepChem chemische Strukturen mithilfe von Featurizers in maschinenlesbare Zahlen übersetzt. Wir untersuchen die CircularFingerprint-Methode zur Abbildung von SMILES-Strings auf Bit-Vektoren.
4m 22s
5
Graph Convolution Featurizers
Gehe über flache Bit-Vektoren hinaus und entdecke, wie DeepChem Moleküle als mathematische Graphen darstellt. Wir behandeln ConvMolFeaturizer und MolGraphConvFeaturizer.
4m 06s
6
Wissenschaftlich fundiertes Splitting
Entdecke, warum standardmäßige Random Splits bei wissenschaftlichen Datensätzen versagen. Wir untersuchen den RandomStratifiedSplitter und wie man Modelle auf stark unausgewogenen Multi-Task-Daten korrekt validiert.
4m 16s
7
Daten bändigen mit Transformers
Erfahre, wie man wilde wissenschaftliche Verteilungen mit DeepChem Transformers normalisiert. Wir diskutieren den NormalizationTransformer und den MinMaxTransformer für ein stabiles Training.
4m 17s
8
Die Model-API und Scikit-Learn-Wrapper
Entdecke die einheitliche Model-Schnittstelle von DeepChem und wie man traditionelle Algorithmen mit dem SklearnModel verpackt. Erfahre, warum die beste Lösung manchmal kein tiefes neuronales Netz ist.
3m 21s
9
Spezialisierte molekulare Graph-Modelle
Tauche ein in Deep-Learning-Architekturen, die speziell für die Chemie entwickelt wurden. Wir behandeln Graph Convolutional Networks (GCNModel) und Message Passing Neural Networks (MPNNModel).
4m 17s
10
Evaluierung wissenschaftlicher Modelle
Erfahre, warum die Standard-Accuracy im wissenschaftlichen ML versagt. Wir untersuchen die Metric-Klasse von DeepChem, den Matthews Correlation Coefficient und wie man unausgewogene Multi-Task-Modelle evaluiert.
4m 52s
11
Intelligentes Hyperparameter-Tuning
Gehe über die Brute-Force-Grid-Search hinaus. Entdecke, wie du GaussianProcessHyperparamOpt in DeepChem nutzt, um intelligent durch komplexe Hyperparameter-Räume zu navigieren.
3m 53s
12
Metalearning für datenarme Szenarien
Entdecke Model-Agnostic Meta-Learning (MAML) in DeepChem. Erfahre, wie man Modelle trainiert, die sich mit sehr wenigen Daten schnell an neue, teure wissenschaftliche Experimente anpassen können.
4m 36s
13
Entdeckung von Bindungstaschen
Verstehe die Geometrie von Protein-Ligand-Interaktionen. Wir untersuchen den ConvexHullPocketFinder von DeepChem zur algorithmischen Lokalisierung von Bindungsfurchen auf 3D-Proteinstrukturen.
4m 48s
14
Posen-Generierung mit Vina und Gnina
Mache den nächsten Schritt im molekularen Docking durch die Berechnung von Bindungsposen. Erfahre, wie der VinaPoseGenerator und der GninaPoseGenerator räumliche Geometrien bewerten, um Interaktionen vorherzusagen.
4m 50s
15
Reinforcement Learning in der Wissenschaft
Entdecke, wie Reinforcement Learning autonom Moleküle entwerfen kann. Wir behandeln die Environment- und Policy-Abstraktionen von DeepChem zusammen mit dem Advantage Actor-Critic (A2C) Algorithmus.
4m 41s

Episoden

1

Das DeepChem-Projekt

4m 17s

Eine Einführung in das DeepChem-Projekt und seine Mission, Deep Learning für die Wissenschaft zu demokratisieren. Wir behandeln, wie es sich von chemischen Anwendungen zu einer breiteren Palette wissenschaftlicher Machine-Learning-Tools entwickelt hat.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 1 von 15. Du möchtest Machine Learning auf ein wissenschaftliches Problem anwenden und greifst daher zu Standard-Tools. Diese Standard-Tools behandeln Moleküle und Proteine jedoch wie flache Data Arrays und ignorieren die zugrundeliegende Physik komplett. Das Tool, das diese Lücke schließt, ist das DeepChem-Projekt. Oft wird angenommen, dass DeepChem eine eigenständige Tensor-Engine ist, etwas, das du anstelle von PyTorch, TensorFlow oder JAX verwendest. Das ist falsch. DeepChem ist ein domain-spezifisches Toolset, das direkt auf diesen generischen Frameworks aufbaut. Es fungiert als Übersetzer. Es kümmert sich um das komplexe Engineering, das nötig ist, um unstrukturierte physikalische Daten in ein Format zu bringen, das ein Standard Neural Network verarbeiten kann. Das Projekt gibt es, um Deep Learning für die Wissenschaft zu demokratisieren. Als es anfing, lag der Fokus strikt auf der Chemie. Das ursprüngliche Ziel war es, die Wirkstoffforschung zugänglich zu machen und Forschern die Tools an die Hand zu geben, um chemische Eigenschaften vorherzusagen, ohne ein riesiges, proprietäres Labor zu benötigen. Aber so wie das Feld wuchs, wuchs auch das Framework. Heute hat sich DeepChem still und leise zu einem zentralen Hub für fast jede wissenschaftliche Deep-Learning-Anwendung entwickelt. Um den Scope zu verstehen, schau dir die unterschiedlichen Domains an, die es abdeckt. Am Montag nutzt du DeepChem vielleicht, um die Wasserlöslichkeit eines neuen, arzneimittelähnlichen Moleküls vorherzusagen. Das erfordert ein Model, das Molekülbindungen und Quantenzustände versteht. Am Donnerstag nutzt du vielleicht dasselbe Framework, um ein Mikroskopiebild zu analysieren und einzelne Zellen zu zählen. Das sind extrem unterschiedliche physikalische Probleme. DeepChem abstrahiert den zugrundeliegenden Boilerplate für beide und bietet spezialisierte Tools für molekulares Machine Learning, Bioinformatik und sogar Materialwissenschaften. Hier ist die wichtigste Erkenntnis. Der schwierigste Teil beim wissenschaftlichen Machine Learning ist die Data Representation. Ein Standard-Deep-Learning-Model hat kein Konzept von Atomstrukturen oder biologischen Sequenzen. DeepChem löst das, indem es hochgradig optimierte Featurizer bereitstellt. Ein Featurizer nimmt ein wissenschaftliches Rohobjekt, wie eine chemische Verbindung in Standard-Textnotation, und übersetzt es mathematisch in einen Graph oder einen Vector. Nach der Featurization fließen die Informationen in spezialisierte DeepChem Dataset-Objekte. Diese Objekte sind darauf ausgelegt, große Sammlungen wissenschaftlicher Daten effizient auf der Disk zu verwalten. Das verhindert Memory Crashes, wenn du Millionen von komplexen Verbindungen verarbeitest. DeepChem kümmert sich auch darum, wie wissenschaftliche Models evaluiert werden. Im Standard-Machine-Learning teilst du deine Trainings- und Testdaten normalerweise zufällig auf. Aber in der Chemie führt ein Random Split dazu, dass Models die Trainingsdaten auswendig lernen, anstatt die eigentliche Physik zu lernen. Um das zu beheben, bietet DeepChem spezialisierte Splitter. Ein Scaffold Splitter zum Beispiel trennt Moleküle basierend auf ihrer zweidimensionalen Grundstruktur. Das stellt sicher, dass deine Testdaten komplett neue chemische Familien repräsentieren, und zwingt das Model zu beweisen, dass es wirklich auf ungesehene Verbindungen generalisiert. Sobald deine Daten vorbereitet und gesplittet sind, bietet DeepChem eine ganze Suite von Pre-built Models, die genau auf diese Datasets zugeschnitten sind. Du übergibst deine wissenschaftlichen Objekte an den Featurizer, DeepChem konvertiert sie, kümmert sich um die Splits, füttert sie in den zugrundeliegenden PyTorch- oder TensorFlow-Layer und gibt eine Prediction aus. Die wahre Stärke von DeepChem ist, dass es Domain Knowledge direkt in deine Data Pipeline encodiert. So kannst du dich rein auf die wissenschaftliche Entdeckung konzentrieren, anstatt auf das strukturelle Plumbing von Machine Learning. Wenn du helfen willst, die Show am Laufen zu halten, kannst du auf Patreon nach DevStoriesEU suchen. Das war's für diese Folge. Danke fürs Zuhören und keep building!
2

Verwaltung wissenschaftlicher Datensätze

4m 11s

Entdecke die Dataset-Abstraktion von DeepChem zur Verarbeitung großer wissenschaftlicher Daten. Lerne die entscheidenden Unterschiede zwischen NumpyDataset und DiskDataset für das Out-of-Core-Speichermanagement kennen.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 2 von 15. Der größte Bottleneck im Scientific Machine Learning ist fast nie die Model Architecture. Es ist der Versuch, riesige Files zu laden, ohne dass dein RAM crasht. Scientific Datasets zu managen, ist der Weg, wie du diese Memory Wall überwindest. Wenn du mit DeepChem anfängst, ist der erste Instinkt oft, alles in einen Pandas DataFrame zu laden. DataFrames sind hervorragend für zweidimensionale Tabellendaten. Aber Scientific Machine Learning erfordert oft höherdimensionale Arrays, mehrere simultane Prediction Tasks und eine Sample Importance pro Task. DeepChem nutzt eine eigene Dataset-Abstraktion, weil sie Features, Multi-Task Labels und Sample Weights nativ in einem strikten Format bündelt, das Models effizient verarbeiten können. Jedes Dataset-Objekt in DeepChem garantiert, dass vier parallele Arrays vorhanden sind. Erstens hast du X, das deine numerischen Features enthält. Zweitens hast du y, das deine Labels oder die Targets enthält, die du vorhersagen willst. Drittens hast du w, das Weights-Array. Hier wird es interessant. Scientific Datasets sind oft sparse. Du hast vielleicht experimentelle Daten, die zeigen, dass ein Molekül gegen ein Target wirksam ist, aber keine Daten darüber, ob es toxisch für die Leber ist. Anstatt das Molekül komplett zu droppen oder ein Fake-Label zu erfinden, setzt du das Weight für den fehlenden Task auf null. Das Model lernt aus den Daten, die du hast, und ignoriert die Lücken. Schließlich hast du noch das ids-Array, das einen Unique Identifier für jedes Sample speichert, wie zum Beispiel einen chemischen SMILES-String. Ein standardisiertes Format zu haben ist nützlich, aber die wahre Power der Dataset-Abstraktion ist, wie sie den System Memory managt. DeepChem bietet zwei primäre Wege, um diese vier Arrays zu speichern. Wenn dein Dataset klein genug ist, um in deinen System Memory zu passen, nutzt du ein NumpyDataset. Unter der Haube hält das einfach Standard-NumPy-Arrays im RAM. Es bietet extrem schnellen Zugriff und ist ideal fürs Prototyping oder die Arbeit mit kleineren Molekülsammlungen. Die Limitierung von NumpyDataset wird offensichtlich, wenn du mit echten wissenschaftlichen Daten arbeitest. Angenommen, du arbeitest mit einem 100 Gigabyte großen Dataset aus dichten, dreidimensionalen Kristallstrukturen. Der Versuch, das in Standard-In-Memory-Arrays zu laden, wird eine typische Maschine sofort crashen lassen. Um das zu lösen, bietet DeepChem das DiskDataset. Ein DiskDataset macht genau das, was der Name sagt. Es speichert die X-, y-, w- und id-Arrays in mehreren kleinen Files, oder Shards, direkt auf deiner Festplatte. Du gibst ein Data Directory an, und DeepChem managt den Storage. Wenn du ein Model trainierst, zieht das DiskDataset nur den aktuellen Batch an Daten in den RAM. Sobald das Model diesen Batch verarbeitet hat, wird der Memory für den nächsten freigegeben. Der Wechsel zwischen diesen beiden Formaten ist für den Rest deines Codes völlig transparent. Du kannst einen Training Loop schreiben, ihn lokal mit einem kleinen NumpyDataset testen und dann exakt denselben Code auf einem Cluster deployen, der auf ein massives DiskDataset zeigt. Das Model fragt das Dataset einfach nach dem nächsten Batch, und das Dataset kümmert sich darum, ob dieser Batch aus dem RAM kommt oder von der Disk gestreamt wird. Deine Data Pipelines von Tag eins an um dieses Out-of-Core Streaming herum zu designen, garantiert, dass deine Infrastruktur den Sprung von ein paar tausend experimentellen Records zu Millionen von generierten Strukturen überlebt. Danke fürs Zuhören, Happy Coding zusammen!
3

MoleculeNet-Benchmarks

4m 24s

Entdecke MoleculeNet, die führende Benchmark-Suite, die innerhalb von DeepChem gepflegt wird. Wir diskutieren, wie die Standardisierung von Datensätzen wie Tox21 und QM9 die Computerchemie beschleunigt.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 3 von 15. Du liest ein Paper, das behauptet, ein neues Graph Neural Network erzielt State-of-the-Art-Ergebnisse bei chemischen Eigenschaften. Aber wenn du genau hinschaust, haben sie einen Custom Data Split, ein proprietäres Dataset und eine obskure Metrik verwendet, was ihre Behauptung mathematisch bedeutungslos macht. Ein standardisierter Vergleich ist der einzige Weg, wie wissenschaftlicher Fortschritt passiert, und in der Computational Chemistry ist dieser Standard die MoleculeNet Benchmark Suite. Ein häufiger Fehler ist zu denken, dass MoleculeNet nur ein statisches Repository ist. Es ist kein herunterladbarer Ordner mit CSV-Dateien auf einem Server, den du selbst parsen und cleanen musst. Es ist eine kuratierte, tief integrierte Suite von Datasets, die über das Modul dc dot molnet direkt in DeepChem eingebaut ist. Sie dient als das ImageNet des Molecular Machine Learning. Sie bietet ein gemeinsames Set an Tasks, standardisierte Splits und evaluierte Baselines über verschiedene Domains hinweg. Die Suite kategorisiert ihre Daten in spezifische wissenschaftliche Bereiche, um verschiedene Modeling Capabilities zu testen. Du hast Quantenmechanik-Datasets wie QM9, das geometrische und energetische Eigenschaften für kleine Moleküle enthält. Du hast physikalische Chemie-Datasets für die Vorhersage von Löslichkeit oder freier Hydratationsenergie. Und du hast Biophysik- und Physiologie-Datasets, inklusive Toxizitäts-Benchmarks wie Tox21, das misst, wie Tausende von Umweltchemikalien mit spezifischen biologischen Pathways interagieren. Schauen wir uns ein praktisches Szenario an. Du hast gerade ein neues Toxicity Prediction Model entworfen und musst mathematisch beweisen, dass es bisherige Baselines übertrifft. Du musst nicht die Tox21 Raw Data zusammensuchen, die Missing Values handlen oder einen Custom Parser schreiben. Stattdessen rufst du die load tox 21 Funktion aus dem dc dot molnet Modul auf. Hier wird es interessant. Wenn du eine Load-Funktion in MoleculeNet aufrufst, gibt sie nicht einfach nur Raw Text zurück. Sie verarbeitet die Daten dynamisch mithilfe eines Featurizers, den du in den Arguments angibst, wie Circular Fingerprints oder Graph Structures. Die Funktion gibt typischerweise ein Tuple mit drei Kernelementen zurück. Erstens gibt sie dir eine Liste der Task-Namen. Bei Tox21 sind das die zwölf spezifischen biologischen Targets, die du vorhersagen willst. Zweitens gibt sie das Dataset selbst zurück, das bereits sauber in Training, Validation und Test Subsets aufgeteilt ist. Drittens liefert sie die Transformers, die verwendet wurden, um die Daten während der Loading-Phase zu normalisieren oder zu skalieren. Du nimmst dieses pre-split Tox21 Training Set, fütterst damit dein neues Model und evaluierst dann die Predictions gegen das Test Set. Weil jeder andere Forscher exakt dieselbe API und Featurization Pipeline nutzt, kann dein finaler Receiver Operating Characteristic Score direkt und fair mit veröffentlichten Baselines verglichen werden. MoleculeNet standardisiert außerdem, wie du Generalization durch Splitting Strategies evaluierst. Die API unterstützt mehrere Wege, deine Daten aufzuteilen. Während du einen einfachen Random Split verwenden kannst, erfordert die Chemie oft einen Scaffold Split. Ein Scaffold Split trennt Moleküle basierend auf ihren zweidimensionalen Grundstrukturen. Das zwingt das Test Set dazu, Molecular Frameworks zu enthalten, die das Model während des Trainings nie gesehen hat. Es testet, ob dein Model tatsächlich die zugrundeliegenden chemischen Regeln gelernt hat, anstatt nur kleine Variationen auswendig zu lernen. Standardmäßig wenden die Load-Funktionen die Splitting-Methode an, die für das jeweilige Dataset wissenschaftlich am meisten Sinn macht. Der schwierigste Teil beim Applied Machine Learning ist nicht, die Model Architecture zu schreiben, sondern zu beweisen, dass das Model tatsächlich auf ungesehene Daten generalisiert, ohne Data Leakage. MoleculeNet gibt dir den strengen, standardisierten Playground, den du brauchst, damit diese Beweise standhalten. Das war's für diese Folge. Danke fürs Zuhören und keep building!
4

Feature Engineering für Moleküle

4m 22s

Erfahre, wie DeepChem chemische Strukturen mithilfe von Featurizers in maschinenlesbare Zahlen übersetzt. Wir untersuchen die CircularFingerprint-Methode zur Abbildung von SMILES-Strings auf Bit-Vektoren.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 4 von 15. Ein neuronales Netzwerk kann eine auf ein Whiteboard gezeichnete chemische Struktur nicht verarbeiten. Selbst wenn du diese Struktur als Text-String aufschreibst, können Standard-Machine-Learning-Algorithmen sie immer noch nicht lesen. Sie brauchen die Daten vorgekaut in numerischen Arrays. Die Brücke zwischen einer chemischen Repräsentation und einem mathematischen Modell ist das Feature Engineering für Moleküle. In der Chemoinformatik stellen wir Moleküle oft als SMILES-Strings dar. Das sind Zeichenfolgen, die Atome und Bindungen definieren. Ein Kohlenstoffring wird zu einem spezifischen Textmuster. Aber wenn du versuchst, einen rohen String an einen Random Forest oder eine Support Vector Machine zu übergeben, wird das fehlschlagen. Ein mathematisches Modell braucht einen numerischen Vektor mit fester Länge als Input. Diesen chemischen Text in ein Array aus Zahlen umzuwandeln, nennen wir Featurization. DeepChem übernimmt diesen Schritt mit speziellen Klassen, den sogenannten Featurizern. Bevor wir uns ansehen, wie DeepChem das macht, gibt es ein häufiges Missverständnis, das wir ausräumen müssen. Wenn Leute davon hören, eine Vektor-Repräsentation von Text zu generieren, denken sie sofort an gelernte Embeddings, wie sie in modernen Language Models verwendet werden. Chemische Fingerprints sind keine gelernten Embeddings. Es werden keine Weights aktualisiert, und es sind keine neuronalen Netze an der Erstellung des Features selbst beteiligt. Ein Fingerprint ist ein deterministischer Hashing-Algorithmus. Wenn du exakt dasselbe Molekül auf zwei verschiedenen Maschinen verarbeitest, bekommst du exakt dasselbe Array aus Einsen und Nullen. Der häufigste Featurizer, den du für Baseline-Modelle in DeepChem verwenden wirst, ist der Circular Fingerprint. Dieser implementiert eine Methode, die als Extended Connectivity Fingerprints bekannt ist. Die Logik dahinter sieht so aus: Der Algorithmus schaut sich jedes schwere Atom in deinem Molekül an. Von jedem Atom aus strahlt er kreisförmig nach außen und betrachtet die benachbarten Atome und Bindungen bis zu einem bestimmten Radius. Du kannst diesen Radius steuern, aber zwei Bindungen weit zu schauen, ist Standardpraxis. Er erfasst diese lokalen Strukturfragmente, schickt sie durch eine Hash-Funktion und mappt sie auf einen bestimmten Index in einem Array mit fester Länge. Das Ergebnis ist ein Bit-Vektor. Eine Eins an einem bestimmten Index bedeutet, dass eine bestimmte chemische Substruktur vorhanden ist. Eine Null bedeutet, dass sie nicht vorhanden ist. Stell dir vor, du hast eine Liste von SMILES-Strings, die Hunderte kleiner, arzneimittelähnlicher Moleküle repräsentieren. Du möchtest ein Random-Forest-Modell trainieren, um ihre Toxizität vorherzusagen. Zuerst initialisierst du die CircularFingerprint-Klasse in DeepChem. Du konfigurierst sie auf eine Output-Size von 1024. Das ist der entscheidende Teil. Jedes einzelne Molekül, unabhängig davon, ob es zehn oder fünfzig Atome hat, wird in ein Array von genau 1024 Bit umgewandelt. Dann übergibst du deine Liste von SMILES-Strings an die featurize-Methode dieser Klasse. Der Algorithmus verarbeitet jeden String unabhängig und gibt eine zweidimensionale Matrix zurück. Die Zeilen repräsentieren deine Moleküle, und die 1024 Spalten repräsentieren das Vorhandensein oder Fehlen spezifischer Substrukturen. Weil der Output einfach eine Standard-Zahlenmatrix ist, bist du nicht mehr auf chemiespezifische Tools beschränkt. Du kannst diese Matrix direkt an Standard-Machine-Learning-Libraries übergeben. Weil Fingerprints auf deterministischen Hashes mit fester Länge statt auf gelernter Semantik basieren, können Kollisionen passieren. Das bedeutet, dass zwei verschiedene komplexe Strukturfragmente gelegentlich auf genau dasselbe Bit gemappt werden können. Trotzdem bleiben sie die schnellste und zuverlässigste Baseline, um abstrakte Chemie in konkrete Mathematik zu verwandeln. Das war's für diese Folge. Danke fürs Zuhören und keep building!
5

Graph Convolution Featurizers

4m 06s

Gehe über flache Bit-Vektoren hinaus und entdecke, wie DeepChem Moleküle als mathematische Graphen darstellt. Wir behandeln ConvMolFeaturizer und MolGraphConvFeaturizer.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 5 von 15. Wenn du eine chemische Verbindung als flachen String darstellst, verlierst du komplett die physikalische Topologie, die bestimmt, wie sie mit der Welt interagiert. Moleküle sind keine linearen Sätze, sie sind vernetzte Strukturen. Um diese strukturelle Realität in deinen Datasets zu erhalten, brauchst du Graph Convolution Featurizer. Wenn du das Wort Convolution hörst, stellst du dir vielleicht ein Image-Modell vor, das einen Filter über ein festes, quadratisches Pixel-Grid schiebt. Dieses mentale Modell musst du verwerfen. Atome sitzen nicht in gleichmäßigen Grids. Ein Kohlenstoffatom kann mit vier Nachbarn verbunden sein, ein Sauerstoffatom mit zwei und ein Wasserstoffatom mit nur einem. Graph-Operationen verarbeiten diese willkürliche, unregelmäßige Vernetzung, und Graph Featurizer dienen als Brücke, um chemische Rohdaten in ein Format zu übersetzen, das diese Operationen verarbeiten können. DeepChem bietet dafür zwei primäre Tools. Das erste ist der ConvMolFeaturizer. Diese Funktion schaut sich ein Molekül an und generiert für jedes einzelne Atom einen initialen Feature-Vektor. Sie berechnet Eigenschaften wie den Elementtyp, die Gesamtzahl der verbundenen schweren Atome, Valenz, formale Ladung, partielle Ladung und Orbitalhybridisierung. Sie bündelt diese Atom-Level Features in ein spezifisches Objekt namens ConvMol. Dieses Format wurde entwickelt, um direkt in die nativen Graph Convolution Networks von DeepChem eingespeist zu werden. Das zweite Tool ist der MolGraphConvFeaturizer. Das ist der modernere Ansatz und er ist extrem vielseitig, weil er ein Standard-GraphData-Objekt als Output liefert. Das macht ihn zur ersten Wahl, wenn du Daten an generische Frameworks wie PyTorch Geometric oder DGL übergibst. Lass uns mal durchgehen, wie der MolGraphConvFeaturizer einen einfachen Benzolring verarbeitet. Benzol besteht aus sechs Kohlenstoffatomen, die in einem durchgehenden Sechseck angeordnet sind. Der Featurizer verarbeitet diese Struktur, indem er sie in Nodes und Edges aufteilt. Zuerst erstellt er die Nodes. Für jedes der sechs Kohlenstoffatome berechnet er ein numerisches Array von atomaren Eigenschaften, das den Hybridisierungszustand und die Partialladung dieses spezifischen Atoms erfasst. Diese sechs einzelnen Arrays werden zusammen gestackt, um die Node Feature Matrix zu bilden. Als Nächstes mappt er die Edges, die den chemischen Bindungen entsprechen. Er baut einen Edge Index auf, was einfach eine Liste von Koordinatenpaaren ist, die genau identifizieren, welches Atom mit welchem verbunden ist. Außerdem generiert er Edge Features. Für jede Bindung in diesem Edge Index erfasst der Featurizer strukturelle Daten. Er prüft, ob es sich um eine Einfach-, Doppel-, Dreifach- oder aromatische Bindung handelt. Da wir uns Benzol ansehen, encodiert der Featurizer explizit die aromatische Natur dieser Bindungen, zusammen mit der Information, ob die Bindung konjugiert oder Teil eines Ringsystems ist. Schließlich packt er die Node Feature Matrix, den Edge Index und die Edge Features in ein einziges GraphData-Objekt. Du hast jetzt einen mathematischen Graphen, der sowohl die atomaren Eigenschaften als auch die exakten topologischen Verbindungen des ursprünglichen Moleküls beibehält und die Einschränkungen flacher Vektor-Repräsentationen komplett umgeht. Hier ist die entscheidende Erkenntnis: Die Qualität eines Graph Neural Networks wird komplett durch die strukturelle Reichhaltigkeit der Datenstruktur limitiert, die du ihm übergibst. Indem du einen Graph Featurizer richtig einsetzt, stellst du sicher, dass dein Modell die zugrundeliegende Chemie tatsächlich lernt, anstatt zu versuchen, eine eindimensionale Zusammenfassung auswendig zu lernen. Danke, dass du ein paar Minuten mit mir verbracht hast. Bis zum nächsten Mal, mach's gut.
6

Wissenschaftlich fundiertes Splitting

4m 16s

Entdecke, warum standardmäßige Random Splits bei wissenschaftlichen Datensätzen versagen. Wir untersuchen den RandomStratifiedSplitter und wie man Modelle auf stark unausgewogenen Multi-Task-Daten korrekt validiert.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 6 von 15. Du baust ein Model für ein neues chemisches Dataset, führst deine Validation durch und bekommst neunundneunzig Prozent Accuracy. Du deployst es, und es versagt sofort in der echten Welt. Deine Validation Metrics haben dich eiskalt angelogen, und zwar wegen der Art, wie du deine Daten gesplittet hast. Heute schauen wir uns Scientifically Aware Splitting an und vergleichen speziell den default Random Splitter mit dem Random Stratified Splitter. Du denkst vielleicht, dass das Splitten von Daten in DeepChem genau dasselbe ist wie die Nutzung einer simplen Train-Test Split Funktion aus einer allgemeinen Machine Learning Library wie Scikit-Learn. Das ist ein weit verbreiteter Irrtum. General-purpose Splitter funktionieren gut für einfache Single-Label Arrays. DeepChem Splitter sind so gebaut, dass sie nativ mit komplexen Multi-Task Environments, sparse Boolean Labels und den spezifischen Datenstrukturen umgehen können, die DeepChem zum Speichern von Molekülen nutzt. Fangen wir mit dem Default-Ansatz an: dem Random Splitter. Dieses Tool verhält sich genau so, wie der Name sagt. Es nimmt dein geladenes Dataset und teilt die chemischen Verbindungen gleichmäßig und zufällig in Training, Validation und Testing Sets auf. Wenn du mit einem perfekt balancierten Dataset arbeitest, in dem deine aktiven und inaktiven Verbindungen gleich häufig vorkommen, funktioniert dieses Random Shuffling wunderbar. Aber wissenschaftliche Daten sind praktisch nie balanciert. Nimm zum Beispiel ein Toxicity Dataset wie Tox21. In der echten Welt ist die große Mehrheit der chemischen Verbindungen, die du testest, sicher, und toxische Verbindungen sind relativ selten. Angenommen, nur ein Prozent der Verbindungen in deinem Dataset sind als toxisch geflaggt. Das ist eine extreme Class Imbalance. Wenn du dieses Dataset durch einen Standard Random Splitter jagst, kann es rein statistisch passieren, dass dein Validation oder Test Set am Ende null toxische Beispiele enthält. Wenn dein Test Set komplett aus sicheren Verbindungen besteht, wird ein Model, das bei jedem einzelnen Input einfach auf "sicher" rät, hundert Prozent erreichen. Du landest bei einem mathematisch perfekten Score für ein komplett nutzloses Model. Genau hier wird der Random Stratified Splitter zur Pflicht. Anstatt Verbindungen blind in Buckets zu werfen, erzwingt die Stratification, dass der Split die tatsächliche Verteilung deiner Labels respektiert. Der Random Stratified Splitter scannt die Properties deines Datasets, bevor er irgendwas aufteilt. Wenn deine gesamten Daten genau ein Prozent toxische und neunundneunzig Prozent sichere Verbindungen enthalten, garantiert der Splitter, dass dein Training Set ein Verhältnis von eins zu neunundneunzig hat, dein Validation Set ein Verhältnis von eins zu neunundneunzig hat und dein Test Set exakt dieselbe Proportion beibehält. Hier ist der entscheidende Punkt. DeepChem Datasets beinhalten normalerweise Multi-Task Learning. Das bedeutet, dass eine einzelne chemische Verbindung nicht nur auf eine Property evaluiert wird, sondern oft für Dutzende verschiedene biologische Assays gleichzeitig. Die Labels über diese Tasks hinweg sind extrem sparse. Du hast vielleicht nur eine Handvoll positive Hits für einen spezifischen Toxicity Assay auf zehntausend Rows an Daten. Der Random Stratified Splitter navigiert durch diese multidimensionale Matrix. Er stellt sicher, dass diese extrem seltenen positiven Hits fair über deine Splits verteilt werden. Jedes Subset deiner Daten bekommt ein repräsentatives Slice der aktiven Verbindungen, was verhindert, dass irgendein einzelner Task während des Splits seine Minority Class verliert. Ohne diesen Mechanismus verlässt sich deine Model Evaluation komplett auf Glück. Für stark imbalanced, wissenschaftliche Multi-Task Datasets ist Stratification keine optionale Optimierung. Sie ist ein fundamentales Requirement, um zu beweisen, dass dein Model die zugrundeliegende Chemie wirklich gelernt hat, anstatt nur einen statistischen Blind Spot auszunutzen. Danke, dass du ein paar Minuten mit mir verbracht hast. Bis zum nächsten Mal, mach's gut.
7

Daten bändigen mit Transformers

4m 17s

Erfahre, wie man wilde wissenschaftliche Verteilungen mit DeepChem Transformers normalisiert. Wir diskutieren den NormalizationTransformer und den MinMaxTransformer für ein stabiles Training.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 7 von 15. Echte wissenschaftliche Daten sind wild, unausgewogen und über riesige Zahlenbereiche verteilt. Wenn du diese rohen experimentellen Werte direkt in ein Neural Network einspeist, bettelst du quasi um nicht-konvergierende Gradients während der Backpropagation. Um das zu beheben, musst du deine Distributions bändigen, bevor sie dein Model berühren, und genau da kommen die DeepChem Transformers ins Spiel. Wenn du im modernen Machine Learning das Wort Transformer hörst, denkst du wahrscheinlich sofort an Attention Mechanisms, Large Language Models oder BERT. Vergiss all das für diese Folge. Im DeepChem-Ökosystem ist ein Transformer einfach ein Data Preprocessing Utility. Er ist kein Neural Network Layer. Er ist ein Object, das ein Dataset nimmt und seine Features, Labels oder Weights so anpasst, dass sie in die strengen mathematischen Grenzen von Machine Learning Algorithmen passen. Stell dir ein Szenario vor, in dem du die experimentelle molekulare Löslichkeit vorhersagst. Deine rohen Training Data könnten Target Values enthalten, die von winzigen negativen Zahlen bis in die Zehntausende reichen. Neural Network Weights werden normalerweise als sehr kleine Zahlen initialisiert. Wenn deine Input Features oder Target Labels einen Wert von vierzigtausend enthalten, erzeugt die resultierende Loss Calculation einen massiven Gradient. Die Network Weights werden während des Update Steps wild ausschlagen und nicht zu einer Lösung konvergieren. Du musst die Daten herunterskalieren. Ein Weg, damit umzugehen, ist der MinMax Transformer. Dieses Utility scannt dein gesamtes Dataset, findet die absoluten Minimum- und Maximum-Werte für deine angegebenen Features oder Labels und quetscht die gesamte Distribution in einen strikten Null-bis-Eins-Bereich. Der niedrigste Wert wird zu null, der höchste zu eins, und alles andere fällt proportional dazwischen. Du initialisierst den Transformer, indem du ihm dein Target Dataset übergibst, damit er diese Grenzen berechnen kann. Dann rufst du seine transform Method auf, die ein frisches Dataset mit den neu skalierten Zahlen ausgibt. Jetzt bleiben die Gradients stabil. Daten zwischen null und eins zu quetschen, ist nicht immer ideal, besonders wenn dein Dataset massive Outliers enthält. Ein extremer Outlier zwingt den Rest deiner normalen Data Points dazu, sich in einen winzigen, nicht unterscheidbaren Streifen dieses Null-bis-Eins-Bereichs zu komprimieren. Dafür nutzt du den Normalization Transformer. Anstatt harte Grenzen zu erzwingen, verschiebt er deine gesamte Distribution so, dass der Mean exakt bei null liegt, und skaliert die Streuung so, dass die Standard Deviation eins ist. Das zentriert deine Daten perfekt und richtet sie auf den operativen Sweet Spot der meisten Neural Network Activation Functions aus. Hier ist die entscheidende Erkenntnis. Das Skalieren von Input Features ist eine Einbahnstraße, aber das Transformieren deiner Labels erzeugt ein zweites Problem. Wenn dein Model auf normalisierten Löslichkeits-Targets trainiert, werden seine finalen Predictions ebenfalls normalisiert sein. Ein Predicted Value von null Komma vier ist mathematisch korrekt, aber praktisch nutzlos für einen Chemiker, der eine reale Messung erwartet. DeepChem löst das, indem es den State der Scaling Metrics innerhalb des Transformer Objects beibehält. Sobald dein Model eine normalisierte Prediction generiert, übergibst du diesen Output an die untransform Method von exakt demselben Transformer. Er kehrt die Arithmetik um und mappt die skalierte Prediction direkt zurück in ihre ursprüngliche wissenschaftliche Einheit. Das Normalisieren deiner Daten ist kein optionaler Optimierungsschritt im Deep Learning, es ist eine strukturelle Voraussetzung für die Training Stability. Danke fürs Zuhören, Happy Coding zusammen!
8

Die Model-API und Scikit-Learn-Wrapper

3m 21s

Entdecke die einheitliche Model-Schnittstelle von DeepChem und wie man traditionelle Algorithmen mit dem SklearnModel verpackt. Erfahre, warum die beste Lösung manchmal kein tiefes neuronales Netz ist.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 8 von 15. Manchmal ist die beste Lösung für ein wissenschaftliches Problem kein riesiges neuronales Netzwerk, dessen Training eine Woche dauert. Oft genügt ein robuster Random Forest. Der Wechsel zwischen einem traditionellen Algorithmus und einer komplexen Deep-Learning-Pipeline bedeutet jedoch in der Regel, dass du deinen gesamten Data-Handling-Code neu schreiben musst. In dieser Folge geht es um die Model API und die Scikit-Learn Wrapper, die genau dieses Problem lösen. DeepChem verwendet eine einheitliche Basisklasse, die einfach Model heißt. Diese Klasse standardisiert, wie du Algorithmen in der gesamten Library trainierst und evaluierst. Die Kernlogik basiert auf zwei Hauptmethoden. Du nutzt fit, um den Algorithmus zu trainieren, und du nutzt predict, um Outputs für neue Daten zu generieren. Das Besondere an diesem Interface ist, dass diese Methoden DeepChem Dataset Objekte als Input erwarten. Du übergibst keine rohen Arrays oder Dataframes direkt an das Model. Das Dataset dient als Standardcontainer für deine Features, Labels und Weights, und die Model API weiß genau, wie sie dieses lesen muss. Du nimmst vielleicht an, dass eine spezialisierte Library wie DeepChem eigene Custom-Implementierungen für grundlegende Machine-Learning-Algorithmen schreibt. Das tut sie nicht. DeepChem erfindet Scikit-Learn nicht neu. Stattdessen stellt es einen Adapter namens SklearnModel bereit. Dieser Wrapper nimmt jeden Standard-Scikit-Learn-Estimator und gibt ihm das DeepChem Model Interface. Stell dir ein Szenario vor, in dem du die physikalischen Eigenschaften eines neuen Materials vorhersagen möchtest. Zuerst importierst du einen Standard Random Forest Regressor direkt aus Scikit-Learn und initialisierst ihn. Anschließend übergibst du diesen Standard-Regressor an den SklearnModel-Wrapper von DeepChem. Du hast nun ein DeepChem-kompatibles Objekt. Um es zu trainieren, rufst du fit auf dem gewrappten Model auf und übergibst dein DeepChem Dataset. Im Hintergrund extrahiert der Wrapper automatisch die Feature-Matrizen, Targets und Sample Weights aus dem Dataset und übergibt sie an den zugrundeliegenden Scikit-Learn-Algorithmus. Wenn es Zeit zum Testen ist, rufst du predict für ein neues Dataset auf, und der Wrapper formatiert den Output zurück in ein Standard-Array. Hier ist die wichtigste Erkenntnis. Weil der SklearnModel-Wrapper exakt dieselben fit- und predict-Methoden bereitstellt wie ein nativ in DeepChem gebautes tiefes neuronales Netzwerk, kannst du den zugrundeliegenden Algorithmus austauschen, ohne deine Data Pipeline anzufassen. Du kannst schnell eine Baseline mit einem traditionellen Machine-Learning-Model etablieren und später nahtlos ein komplexes neuronales Netzwerk einwechseln, indem du lediglich die eine Codezeile änderst, die das Model initialisiert. Das Data Loading, der Training Loop und die Evaluation Steps bleiben identisch. Das wichtigste Takeaway ist, dass die Model API deine Data Ingestion von deiner Algorithmus-Wahl entkoppelt. Das gibt dir die Freiheit, verschiedene mathematische Ansätze zu testen, ohne ständig Glue Code neu schreiben zu müssen. Wenn du diese Folgen nützlich findest und die Show unterstützen möchtest, kannst du auf Patreon nach DevStoriesEU suchen. Das war's für diese Folge. Bis zum nächsten Mal!
9

Spezialisierte molekulare Graph-Modelle

4m 17s

Tauche ein in Deep-Learning-Architekturen, die speziell für die Chemie entwickelt wurden. Wir behandeln Graph Convolutional Networks (GCNModel) und Message Passing Neural Networks (MPNNModel).

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 9 von 15. Du kannst ein Molekül nicht einfach in ein Standard-Neural-Network für Bilder einspeisen. Moleküle sind keine starren Pixel-Grids, sondern komplexe Netzwerke aus Atomen unterschiedlicher Größe und Verbindungen. Wenn du sie in ein Standard-Grid zwingst, zerstörst du die Strukturchemie, die sie einzigartig macht. Um das zu lösen, nutzen wir spezialisierte Molecular Graph Models. Diese Modelle sind speziell dafür entwickelt, die Featurized Graphs, die in deinen früheren Preprocessing-Schritten generiert wurden, nativ zu verarbeiten. Zuhörer verwechseln das manchmal mit traditionellen Convolutional Neural Networks. Ein Standard-CNN schiebt einen Filter mit fester Größe über ein zweidimensionales Grid. Aber ein Molekül hat keine obere linke Ecke oder eine feste Auflösung. Stattdessen arbeiten spezialisierte Graph Models dynamisch mit chemischen Bindungen als Edges und Atomen als Nodes. Grid-Koordinaten sind ihnen egal. Es geht ihnen ausschließlich um Connectivity. DeepChem bietet dafür ein paar spezifische Architekturen. Die erste ist das GCNModel, was für Graph Convolutional Network steht. Stell dir ein GCN als eine Möglichkeit vor, lokale atomare Nachbarschaften zu sammeln. Für jedes Atom in deinem featurized Molekül schaut sich das GCN seine direkten Nachbarn an. Es nimmt die Features dieser benachbarten Atome, wie ihren Elementtyp oder Hybridisierungszustand, und poolt sie zusammen, um die Features des ursprünglichen Atoms zu updaten. Es wiederholt diesen Prozess über ein paar Layers. Am Ende hat jedes Atom eine mathematische Repräsentation, die den Kontext aus seiner chemischen Umgebung enthält. Das Modell aggregiert dann all diese Atom-Repräsentationen in einen einzigen mathematischen Vektor, um eine allgemeine chemische Eigenschaft wie Toxizität oder Löslichkeit vorherzusagen. Das deckt GCNs ab, die sich hauptsächlich auf das Aggregieren von Node-Daten konzentrieren. Aber was ist mit den Bindungen selbst? Eine Doppelbindung verhält sich ganz anders als eine Einfachbindung, und manchmal muss das Network diesen Unterschied stark gewichten. Hier kommt das MPNNModel, oder Message Passing Neural Network, ins Spiel. Message Passing Neural Networks schauen sich ein Molekül nicht einfach nur an. Sie simulieren mathematisch, wie Informationen zwischen atomaren Nachbarn fließen. Sagen wir mal, du trainierst ein MPNNModel, um die quantenmechanischen Eigenschaften eines Moleküls vorherzusagen. Um das präzise zu tun, ist die genaue Art der Bindungen enorm wichtig. In einem MPNN enthalten sowohl die Atome als auch die Bindungen explizite Feature-Daten. Während des Training-Steps führt das Modell eine Message Passing Phase durch. Jedes Atom generiert eine Message basierend auf seinem aktuellen State und sendet sie entlang der verbindenden Bindungen an seine Nachbarn. Entscheidend ist, dass die Bindung selbst diese Message modifiziert. Eine Message, die über eine starre aromatische Bindung wandert, wird anders berechnet als eine, die über eine flexible Einfachbindung wandert. Wenn ein Atom Messages von all seinen Nachbarn empfängt, nutzt es ein kleines internes Neural Network, um seinen eigenen State zu updaten. Es berechnet im Grunde, dass es ein Kohlenstoffatom ist, das gerade von einem Sauerstoffatom an einer Doppelbindung und einem Wasserstoffatom an einer Einfachbindung beeinflusst wird. Dieser Prozess iteriert mehrere Male. Informationen breiten sich Schritt für Schritt über das gesamte Bindungsnetzwerk aus. Nach einer festgelegten Anzahl von Steps sammelt das Modell die finalen States aller Atome, um seine Vorhersage zu treffen. Weil das MPNN die echte chemische Struktur nativ respektiert, ist es hervorragend darin, komplexe Quantenverhalten vorherzusagen, die einfachere Modelle übersehen. Hier ist die wichtigste Erkenntnis. Du musst keine Wege erfinden, um Moleküle in flache Arrays zu mappen. Indem du GCN- und MPNN-Models nutzt, bewahrst du die exakte atomare Topologie deiner Daten, was es dem Network erlaubt, direkt aus der Chemie selbst zu lernen. Das war's für diese Folge. Danke fürs Zuhören, und keep building!
10

Evaluierung wissenschaftlicher Modelle

4m 52s

Erfahre, warum die Standard-Accuracy im wissenschaftlichen ML versagt. Wir untersuchen die Metric-Klasse von DeepChem, den Matthews Correlation Coefficient und wie man unausgewogene Multi-Task-Modelle evaluiert.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 10 von 15. Wenn du Moleküle für ein neues Medikament screenst, wirkt vielleicht eines von zehntausend. Ein Modell, das einfach jedes Molekül als nutzlos einstuft, erreicht eine Accuracy von 99,99 Prozent, ohne dabei irgendetwas zu entdecken. Deshalb ist einfache Accuracy oft ein furchtbares Maß für wissenschaftliche Entdeckungen, und genau deshalb müssen wir über das Evaluieren wissenschaftlicher Modelle sprechen. In den Naturwissenschaften sind Datensätze fast immer stark imbalanced. Stell dir vor, du baust einen Classifier zur Vorhersage von HIV-Hemmung. Die überwiegende Mehrheit der getesteten chemischen Verbindungen hemmt das Virus nicht. Die aktiven Wirkstoffkandidaten sind extrem selten. Wenn du Standard-Accuracy benutzt, um dein Modell zu evaluieren, werden dich die Ergebnisse anlügen. Das Modell lernt einfach, die Majority Class zu raten, erzielt sehr hohe Scores und findet dabei kein einziges funktionierendes Medikament. Um das zu fixen, brauchst du Metrics, die dieses Verhalten aufdecken. Die erste ist der Recall Score. Recall misst, wie viele der tatsächlich aktiven Verbindungen dein Modell erfolgreich identifiziert hat. Er bestraft Modelle streng, die echte Entdeckungen verpassen. Allerdings liefert Recall allein kein vollständiges Bild. Ein naives Modell könnte einfach raten, dass jede einzelne Verbindung aktiv ist, und so einen perfekten Recall Score erzielen, während es Tausende von False Positives generiert. Hier wird der Matthews Correlation Coefficient, oder MCC, essenziell. MCC ist ein balanciertes Maß, das alle vier Kategorien deiner Ergebnisse evaluiert. Er betrachtet True Positives, True Negatives, False Positives und False Negatives gleichzeitig. Er liefert einen Score zwischen minus eins und plus eins. Ein Score von plus eins bedeutet eine perfekte Prediction, null bedeutet, dass das Modell nicht besser als zufälliges Raten ist, und minus eins bedeutet totale Diskrepanz. MCC generiert nur dann einen hohen Score, wenn das Modell sowohl bei den seltenen aktiven als auch bei den häufigen inaktiven Verbindungen akkurat predictet. Er bestraft ein Modell brutal, das den einfachen Weg wählt und die Majority Class rät. Du fragst dich vielleicht, warum du diese Metric-Funktionen nicht einfach direkt aus scikit-learn importieren kannst. Scikit-learn hat absolut gute Implementierungen von sowohl Recall als auch MCC. Das Problem liegt in der Data Shape. DeepChem-Modelle führen häufig Multi-Task Learning durch und predicten Dutzende verschiedener chemischer Eigenschaften gleichzeitig. Standard-Funktionen von scikit-learn erwarten einfache flache Arrays. Wenn du ihnen die komplexen, mehrdimensionalen Outputs von DeepChem übergibst, werden sie entweder crashen oder den Score falsch berechnen. DeepChem löst diesen Mismatch mit seiner eigenen Metric-Klasse. Diese Klasse fungiert als Wrapper um mathematische Standard-Scoring-Funktionen. Wenn du eine DeepChem Metric instanziierst, übergibst du ihr die rohe Scoring-Funktion, die du nutzen willst, wie die MCC-Funktion von scikit-learn. Der DeepChem Metric Wrapper übernimmt ab da. Er managt das Batching deiner Daten und gleicht die True Labels mit deinen Model Predictions über den gesamten Dataset ab. Hier ist die wichtigste Erkenntnis. Die Metric-Klasse verlässt sich stark auf einen internen Mechanismus namens normalize prediction shape. Er inspiziert deine Daten, um festzustellen, ob dein Modell einen Single Task, Multiple Tasks oder One-Hot-encoded Probability Vectors ausgibt. Dann reshaped er diese mehrdimensionalen Raw Outputs in genau die flachen Arrays, die die zugrundeliegenden mathematischen Funktionen benötigen. Du musst keine manuellen Loops schreiben, um deine Multi-Task Arrays zu slicen und zu entpacken, bevor du sie scorest. Der Wrapper kümmert sich automatisch um die strukturelle Komplexität, sodass die Mathematik genau wie beabsichtigt funktioniert. Wenn du ein wissenschaftliches Modell auf einem imbalanced Dataset evaluierst, ist dein primärer Job zu beweisen, dass das Modell nicht die Baseline cheatet. Wähle also eine Metric, die das Modell dazu zwingt, die seltene Chemie tatsächlich zu lernen. Danke, dass du ein paar Minuten mit mir verbracht hast. Bis zum nächsten Mal, mach's gut.
11

Intelligentes Hyperparameter-Tuning

3m 53s

Gehe über die Brute-Force-Grid-Search hinaus. Entdecke, wie du GaussianProcessHyperparamOpt in DeepChem nutzt, um intelligent durch komplexe Hyperparameter-Räume zu navigieren.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 11 von 15. Jede mögliche Kombination aus Learning Rate, Layer Size und Penalty für ein komplexes Modell durchzutesten, kann Wochen oder sogar Monate dauern. Was aber, wenn dein Code nach nur wenigen Trials intelligent erraten könnte, wo die beste Modellkonfiguration liegt? Heute schauen wir uns intelligentes Hyperparameter-Tuning in DeepChem an. Bevor wir uns die Suchmethoden ansehen, lass uns ein häufiges Missverständnis klären. DeepChem bietet eine Basisklasse namens HyperparamOpt. Das ist nicht dein eigentlicher Model Training Loop. Es ist ein äußerer Optimization Loop. Du übergibst eine Funktion namens Model Builder. Diese Funktion weiß, wie dein spezifisches Modell anhand eines Parameter-Sets gebaut wird. Die HyperparamOpt-Klasse wrappt diesen Builder, füttert ihn mit verschiedenen Parameter-Sets, trainiert das resultierende Modell auf einem Dataset, evaluiert es mit einer bestimmten Metrik und gibt die beste Konfiguration zurück. Der einfachste Weg, diesen Parameter Space zu durchsuchen, ist GridHyperparamOpt. Du übergibst ihm diskrete Listen von Werten. Zum Beispiel drei Learning Rates, vier verschiedene Anzahlen von Estimators und zwei Penalty-Typen. Grid Search nutzt den Brute-Force-Ansatz. Sie evaluiert jede einzelne Kombination nacheinander. Wenn du ein kleines Modell und einen kleinen Parameter Space hast, ist Grid Search völlig in Ordnung. Aber sobald du mehr Parameter hinzufügst, stößt du auf eine kombinatorische Explosion. Wenn dein Parameter Grid tausend Kombinationen erzeugt und jede eine Stunde zum Trainieren braucht, ist Grid Search nicht mehr machbar. Hier kommt GaussianProcessHyperparamOpt ins Spiel. Statt eines Brute-Force-Grids führt es eine probabilistische Suche durch, und zwar mit einer Backend-Library namens pyGPGO. Du definierst kontinuierliche Ranges oder kategorische Auswahlmöglichkeiten für deine Parameter, anstatt fester Listen. Der Gaussian Process behandelt deine Model Evaluation wie eine Black-Box-Funktion. Er will die maximale Performance-Metrik mit so wenigen Evaluations wie möglich finden. Hier ist die wichtigste Erkenntnis: Der Gaussian Process lernt währenddessen dazu. Wenn er eine bestimmte Kombination aus Learning Rate und Penalty testet, schaut er sich den resultierenden Evaluation Score an. Dann baut er eine mathematische Karte des Parameter Space auf und sagt voraus, wo die Scores am höchsten sein könnten und wo seine Predictions am unsichersten sind. Für seinen nächsten Trial wählt er nicht einfach das nächste Element in einer Liste. Er berechnet eine Acquisition Function, um den schlausten nächsten Versuch zu bestimmen. Er wägt das Erkunden unbekannter Zonen deines Parameter Space gegen das Ausnutzen von Bereichen ab, die bereits gute Scores geliefert haben. In einem Szenario, in dem du also ein komplexes Modell tunest, übergibst du deinen Model Builder an GaussianProcessHyperparamOpt. Du definierst einen Search Space, der die Upper und Lower Bounds für die Learning Rate und die Anzahl der Estimators vorgibt. Du sagst dem Optimizer, dass er zwanzig Trials laufen soll. Anstatt blind durch tausend Kombinationen zu marschieren, sondiert der Algorithmus den Space, erkennt, dass bestimmte Learning Rates schlecht performen, meidet dieses Gebiet komplett und konzentriert sich auf die optimale Zone. Du sparst enorme Mengen an Rechenzeit. Das wichtigste Takeaway hier ist, deine Search Strategy an dein Rechenbudget anzupassen. Nutze Grid Search, wenn du eine Handvoll diskreter Werte und schnelle Trainingszeiten hast. Aber wenn das Training teuer und der Parameter Space riesig ist, verlass dich auf einen Gaussian Process, um aktiv das beste Modell zu jagen. Ich möchte mir kurz die Zeit nehmen, dir fürs Zuhören zu danken – das hilft uns sehr. Mach's gut!
12

Metalearning für datenarme Szenarien

4m 36s

Entdecke Model-Agnostic Meta-Learning (MAML) in DeepChem. Erfahre, wie man Modelle trainiert, die sich mit sehr wenigen Daten schnell an neue, teure wissenschaftliche Experimente anpassen können.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 12 von 15. Wenn ein einzelnes biologisches Experiment zehntausend Dollar kostet, kannst du kein Big Data sammeln. Vielleicht bekommst du nur fünf Datenpunkte für einen brandneuen Assay. Standard Deep Learning overfittet hier sofort und versagt komplett. Was du brauchst, ist ein Algorithmus, der speziell dafür entwickelt wurde, aus fast nichts ein Signal zu extrahieren. Das bringt uns zu Metalearning für Low Data Regimes. DeepChem löst dieses Problem mit einer Klasse namens MAML, was für Model-Agnostic Meta-Learning steht. In vielen wissenschaftlichen Bereichen, insbesondere in der Drug Discovery oder Materialwissenschaft, hast du schlichtweg nicht das Datenvolumen, das für traditionelle Neural Networks erforderlich ist. Du bist gezwungen, in einem Low Data Regime zu arbeiten, wo Few-Shot Learning der einzig praktikable Ansatz ist. Viele Engineers werden annehmen, dass Standard Transfer Learning hier die Lösung ist. Ist es aber nicht. Transfer Learning trainiert ein Modell auf einem riesigen Dataset in der Hoffnung, dass die gelernten statischen Features einen guten Warm-Start für ein kleineres Dataset bieten. MAML macht nicht einfach nur einen Warm-Start der Weights. Es optimiert mathematisch die Gradient Trajectory des Modells. Es lernt nicht nur die Daten, sondern auch, sich effizient an neue Daten anzupassen. Wie macht es das? MAML verwendet einen Nested Loop zur Optimierung über eine Verteilung von Tasks. Während des Trainings fütterst du den Algorithmus nicht mit einem einzigen kontinuierlichen Datenstrom. Du fütterst ihn mit Batches von unterschiedlichen Tasks. Für jeden Task im Batch nimmt der Algorithmus eine winzige Datenmenge. Er berechnet die Gradients und ermittelt, wie die neuen Model Weights nach ein oder zwei Standard Training Steps aussehen würden. Hier ist die entscheidende Erkenntnis. Der Algorithmus wendet diese aktualisierten Weights noch nicht dauerhaft an. Stattdessen nimmt er diese hypothetischen Weights und testet sie gegen ein zweites, separates Dataset aus genau demselben Task. Er berechnet den Loss auf diesem Validation Set. Dann berechnet er den Gradient dieses Validation Loss in Bezug auf die ursprünglichen Starting Weights und updatet diese ursprünglichen Weights. Die Mathematik zwingt das Modell, einen Initialization Point zu finden, bei dem schon wenige Gradient Steps einen massiven Fehlerabfall für jeden neuen Task aus dieser Domain erzeugen. Lass uns das auf ein konkretes Szenario anwenden. Angenommen, du hast historische Daten aus Dutzenden älterer biologischer Assays. Du willst die Ergebnisse eines brandneuen, extrem teuren Assays vorhersagen, bei dem du es dir nur leisten kannst, fünf tatsächliche Datenpunkte zu sammeln. In DeepChem instanziierst du das MAML-Objekt und übergibst ihm ein Base Model. Dieses Base Model wird als Learner bezeichnet. Dann trainierst du den MAML-Algorithmus, indem du kleine Tasks aus deinen historischen Assays sampelst. Der Algorithmus übt ständig, sich anzupassen. Er nimmt fünf Datenpunkte aus Assay A, updatet sich selbst, checkt seinen Prediction Error auf weiteren Daten aus Assay A und gibt das Ergebnis per Backpropagation an die globalen Starting Weights zurück. Dann wiederholt er genau diese Simulation für Assay B, Assay C und so weiter. Mit der Zeit konvergiert das Modell auf ein optimales Set von Starting Parameters für die gesamte Familie von Assays. Wenn dein neuer, teurer Assay endlich da ist, nimmst du diese Starting Parameters und machst einen Standard Fine-Tuning Pass mit deinen fünf winzigen Datenpunkten. Weil die MAML-Optimierung die Gradient Trajectory speziell für eine schnelle Anpassung ausgerichtet hat, konfiguriert sich das Modell fast sofort von selbst. Du bekommst hochpräzise Vorhersagen für ein neuartiges Problem mit einem mikroskopisch kleinen Dataset. MAML verlagert das grundlegende Ziel des Pre-Trainings von der Minimierung des Prediction Errors auf alten Daten hin zur Maximierung der Anpassungsfähigkeit an neue Daten. Das war's für diese Folge. Danke fürs Zuhören und keep building!
13

Entdeckung von Bindungstaschen

4m 48s

Verstehe die Geometrie von Protein-Ligand-Interaktionen. Wir untersuchen den ConvexHullPocketFinder von DeepChem zur algorithmischen Lokalisierung von Bindungsfurchen auf 3D-Proteinstrukturen.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 13 von 15. Du hast eine frisch gemappte 3D-Struktur eines viralen Proteins, aber herauszufinden, wo ein therapeutisches Medikament tatsächlich andocken kann, ist, als würdest du versuchen, ein einzelnes Puzzleteil in ein zehntausendteiliges Puzzle einzusetzen, das im dreidimensionalen Raum schwebt. Du kannst nicht einfach ein kleines Molekül auf ein riesiges Protein werfen und hoffen, dass es hängen bleibt. Du musst zuerst die strukturellen Vertiefungen mappen, und genau dafür ist Binding Pocket Discovery da. Bevor wir weitergehen, lass uns ein häufiges Missverständnis klären. Pocket Discovery platziert kein Medikament in einem Protein. Sie scannt lediglich den leeren Raum, um potenzielle Binding Sites zu finden. Die tatsächliche Position des Moleküls innerhalb dieser Site zu generieren, nennt man Pose Generation. Das ist ein komplett separater Schritt. Heute kümmern wir uns nur darum, die leeren Parkplätze zu finden. In DeepChem beginnt dieser Workflow mit der Binding Pocket Finder Base Class. Das ist ein abstraktes Template. Ihre Aufgabe ist es, ein Standard-Interface bereitzustellen, das ein 3D-Makromolekül als Input nimmt und eine Liste potenzieller Pockets als Output zurückgibt. Durch die Verwendung einer Base Class stellt DeepChem sicher, dass die Pipeline konsistent bleibt, egal ob du einen Built-in-Algorithmus verwendest oder deinen eigenen schreibst. Aber die eigentliche Schwerstarbeit wird von spezifischen Implementierungen erledigt, wobei der Convex Hull Pocket Finder die häufigste ist. Der Convex Hull Pocket Finder analysiert algorithmisch die dreidimensionale Geometrie deines viralen Proteins. Stell dir vor, du wickelst das gesamte Makromolekül eng in Schrumpffolie ein. Die Folie spannt sich direkt über die Lücken, Spalten und Ritzen auf der Oberfläche. Diese äußere Begrenzung ist die mathematische Convex Hull. Die leeren Räume, die zwischen dieser flachen äußeren Begrenzung und der tatsächlichen, unebenen atomaren Oberfläche des Proteins eingeschlossen sind, sind deine potenziellen Binding Pockets. Das sind die angreifbaren Vertiefungen, in denen ein neues Medikament erfolgreich ankern könnte. Um diese Räume systematisch zu identifizieren, unterteilt der Algorithmus das Volumen um das Protein in ein feines dreidimensionales Grid. Er scannt dieses Grid und identifiziert Voxel, also winzige 3D-Boxen. Er sucht nach Voxeln, die innerhalb der Convex Hull liegen, aber keine Proteinatome enthalten. Er misst außerdem die Distanz von diesen leeren Boxen zum nächsten Proteinatom. Wenn eine Box zu sehr der Oberfläche ausgesetzt ist, wird sie ignoriert. Wenn sie zu tief im Proteinkern vergraben ist, wird sie ebenfalls ignoriert. Der Algorithmus clustert die verbleibenden validen Boxen zusammen, um die zusammenhängenden Formen der Oberflächenhohlräume zu bilden. Sobald er einen Hohlraum gemappt hat, generiert der Finder eine Bounding Box darum. Hier ist die entscheidende Erkenntnis: Der Algorithmus schneidet diese Bounding Box nicht perfekt auf die exakten Dimensionen des Lochs zu. Er fügt eine berechnete Schicht Padding um die Ränder herum hinzu. Dieser zusätzliche Margin ist kritisch, weil Moleküle in der Biologie dynamisch sind. Wenn du diese Pocket-Koordinaten später in deiner Pipeline an einen Docking-Algorithmus übergibst, bietet dieses Padding den nötigen Spielraum. Es gibt dem nächsten Schritt genug umgebenden Platz, um zu berechnen, wie sich das Medikament drehen, rotieren oder verschieben könnte, während es sich in der Vertiefung niederlässt. Du übergibst dein virales Protein an den Convex Hull Pocket Finder, und er gibt dir ein sauberes Array von gepaddeten Bounding Boxes zurück. Du weißt jetzt genau, wo die strukturellen Schwachstellen liegen, und kannst deine Rechenressourcen rein auf diese spezifischen Koordinaten fokussieren. Wenn du helfen möchtest, dass diese Episoden weiterhin erscheinen, kannst du die Show unterstützen, indem du auf Patreon nach DevStoriesEU suchst. Das Padding stellt sicher, dass deine nachgelagerten Docking-Simulationen nicht einfach fehlschlagen, nur weil sie gegen eine künstliche mathematische Wand gestoßen sind. Das war's für diese Folge. Danke fürs Zuhören und viel Spaß beim Entwickeln!
14

Posen-Generierung mit Vina und Gnina

4m 50s

Mache den nächsten Schritt im molekularen Docking durch die Berechnung von Bindungsposen. Erfahre, wie der VinaPoseGenerator und der GninaPoseGenerator räumliche Geometrien bewerten, um Interaktionen vorherzusagen.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 14 von 15. Du hast ein Target-Protein und ein potenzielles Wirkstoffmolekül, aber zu wissen, dass sie interagieren könnten, ist nutzlos, solange du nicht genau weißt, wie sie physikalisch zusammenpassen. Wir müssen Formen nicht länger blind erraten. Wir können vortrainierte Convolutional Neural Networks nutzen, um die tatsächliche Physik von Binding Poses vorherzusagen. Das ist Pose Generation mit Vina und Gnina. Zunächst klären wir ein häufiges Missverständnis. Hörer verwechseln oft Docking mit Molecular Dynamics. Molecular Dynamics ist eine zeitbasierte Simulation, die zeigt, wie sich Moleküle über Mikrosekunden drehen, falten und vibrieren. Pose Generation, oder Docking, macht das nicht. Sie berechnet eine statische Momentaufnahme. Sie berechnet die optimale Ruhegeometrie eines Liganden in einer Proteintasche und weist ihm basierend auf dieser einzelnen Position einen stationären energetischen Score zu. In DeepChem findet die rechenintensive Arbeit hierfür in der PoseGenerator-Klasse statt. Ihre spezifische Aufgabe ist es, mehrere dreidimensionale Anordnungen deines Liganden, sogenannte Posen, innerhalb einer eingeschränkten Bounding Box auf dem Protein zu berechnen. Dann rankt sie diese Posen. Die Standardimplementierung hierfür ist der VinaPoseGenerator. Dieser wrappt die AutoDock Vina Engine, die auf einer empirischen Scoring Function basiert. Er berechnet einen klassischen Binding Energy Score, indem er physikalische Wechselwirkungen wie Wasserstoffbrückenbindungen, hydrophobe Kontakte und sterische Abstoßung evaluiert. Vina testet eine geometrische Konfiguration, berechnet die Energy Penalty oder den Reward, passt die Atome leicht an und versucht es erneut. Es durchsucht diesen riesigen geometrischen Raum und gibt eine Liste von Posen zurück, gerankt nach ihrer niedrigsten Binding Energy. Klassische Physikformeln sind extrem schnell, aber sie können komplexe molekulare Wechselwirkungen manchmal falsch einschätzen. Hier kommt der GninaPoseGenerator ins Spiel. GNINA ist ein Deep-Learning-Upgrade. Es nimmt das zugrundeliegende Vina-Framework und evaluiert die Konfigurationen mithilfe eines vortrainierten Convolutional Neural Networks. Nehmen wir ein Szenario, in dem du einen neuen Krebs-Wirkstoffkandidaten evaluierst. Der Pose Generator berechnet 10 verschiedene geometrische Konfigurationen dieses Wirkstoffs, der in einer Target Binding Pocket ruht. Anstatt lediglich klassische physikalische Terme zusammenzuzählen, leitet GNINA die dreidimensionalen Atomstrukturen dieser 10 Posen durch sein Neural Network. GNINA rankt diese 10 Posen anhand von drei unterschiedlichen Metriken. Erstens berechnet es weiterhin den traditionellen empirischen Vina-Score als Baseline. Zweitens gibt es einen CNN Pose Score aus. Das ist eine Wahrscheinlichkeit zwischen null und eins, die angibt, wie genau die generierte Pose einer hochwertigen, experimentell bewiesenen Struktur entspricht. Drittens berechnet es einen CNN Affinity Score, der die tatsächliche Bindungsstärke vorhersagt. Der CNN Pose Score ist hier die entscheidende Ergänzung. Er fungiert als fortschrittlicher Filter und verhindert, dass das System eine Pose hoch rankt, die für klassische Gleichungen mathematisch stabil aussieht, aber in der Natur physikalisch unrealistisch ist. Das zu implementieren, erfordert nur wenige Schritte. Du initialisierst den GninaPoseGenerator. Du rufst seine generate-Methode auf und übergibst die Protein-Strukturdatei, die Liganden-Strukturdatei und die Koordinatendimensionen, die die Bounding Box der Tasche definieren. Die Suche auf eine spezifische Box zu beschränken, verhindert, dass das System Compute Cycles für leeren Raum verschwendet. Die Methode gibt dann deine gerankten Posen zusammen mit den CNN Scores zurück, sodass du den besten physikalischen Kandidaten extrahieren kannst. Hier ist die wichtigste Erkenntnis. GNINA erreicht diese hohe Genauigkeit, indem es den physikalischen 3D-Raum der Proteintasche wie ein strukturiertes Bild behandelt. Es unterteilt die Atomkoordinaten in ein dreidimensionales Grid. Das Convolutional Neural Network scannt dann dieses volumetrische Grid nach räumlichen und chemischen Mustern, genau so, wie ein Standard-Bilderkennungsnetzwerk nach Kanten und Texturen in einem Foto sucht. Das war's für diese Folge. Danke fürs Zuhören und keep building!
15

Reinforcement Learning in der Wissenschaft

4m 41s

Entdecke, wie Reinforcement Learning autonom Moleküle entwerfen kann. Wir behandeln die Environment- und Policy-Abstraktionen von DeepChem zusammen mit dem Advantage Actor-Critic (A2C) Algorithmus.

Herunterladen
Hallo, hier ist Alex von DEV STORIES DOT EU. Mastering DeepChem, Folge 15 von 15. Du möchtest ein hochstabiles Molekül entwerfen, hast aber keinen riesigen Datensatz an perfekten Beispielen, um ein Modell zu trainieren. Du hast nur eine Reihe physikalischer Regeln. Wenn dir statische Daten fehlen, kannst du kein Standard-Supervised-Learning verwenden. Stattdessen brauchst du eine KI, die durch Trial, Error und Feedback lernt. Das bringt uns zum Reinforcement Learning in der Wissenschaft. Wenn du tief im traditionellen Machine Learning steckst, verwechselst du das vielleicht mit Supervised Training. Sie sind aber grundlegend verschieden. Supervised Learning erfordert einen expliziten, gelabelten statischen Datensatz. Reinforcement Learning verlässt sich auf kontinuierliche, interaktive Rewards, die von einem Environment generiert werden. Das Modell probiert einen Zug, das Environment antwortet mit einem Score, und das Modell passt seine Strategie an. In DeepChem ist die Environment-Klasse die Grundlage für diese Interaktion. Stell dir das Environment wie deinen hochpräzisen wissenschaftlichen Simulator vor. Es definiert die physikalischen Regeln des Universums, in dem deine KI operiert. Es trackt den aktuellen State deines Systems, definiert die mathematischen Actions, die dein Modell ausführen darf, und stellt eine Step-Funktion bereit. Wenn dein Modell eine Action ausführt, übergibt es diese an die Step-Funktion. Das Environment berechnet die Physik und gibt dann drei Dinge zurück: den neuen State, einen numerischen Reward, der darauf basiert, wie gut der resultierende State ist, und ein Boolean Flag, das anzeigt, ob der Task abgeschlossen ist. Wenn du bereits mit Standard-Tools von außerhalb der Chemie arbeitest, bietet DeepChem die GymEnvironment-Klasse. Diese wrappt einfach Standard-OpenAI-Gym-Simulations-Environments, sodass sie sich direkt in deine DeepChem-Workflows einklinken. Die Komponente, die tatsächlich mit diesem Environment interagiert, heißt Policy. Die Policy ist die Abstraktion, die das Gehirn deines Agents repräsentiert. Sie nimmt den aktuellen State vom Environment und mappt ihn auf eine spezifische Action, oder gibt eine Reihe von Wahrscheinlichkeiten für verschiedene mögliche Actions aus. Um eine Policy effizient zu trainieren, implementiert DeepChem Algorithmen wie Advantage Actor-Critic, meistens A2C genannt. Hier ist die entscheidende Erkenntnis. A2C teilt den Lernprozess in zwei separate neuronale Netze auf, die parallel laufen: den Actor und den Critic. Der Actor schaut sich den State an und entscheidet, welche Action er ausführen muss, um den Task voranzubringen. Der Critic beobachtet das Ergebnis und schätzt den Gesamtwert ein, in diesem neuen State zu sein. Das Wort Advantage bezieht sich auf die Differenz zwischen dem tatsächlichen Reward, der vom Environment empfangen wurde, und dem Reward, den der Critic vorhergesagt hat. Wenn die Action zu einem höheren Reward geführt hat, als der Critic erwartet hat, ist die Advantage positiv, und das Actor-Netzwerk wird geupdatet, um diese Action in Zukunft öfter auszuführen. Stell dir ein konkretes Szenario vor, in dem du autonom neue Moleküle konstruieren willst. Dein Environment ist eine Chemie-Engine, die darauf programmiert ist, molekulare Stabilität zu berechnen. Du startest mit einem einfachen chemischen Ring. Der Actor evaluiert diesen Start-State und entscheidet, ein Kohlenstoffatom anzuhängen. Das Environment verarbeitet diesen Step, simuliert die neue chemische Struktur, stellt einen Stabilitätsabfall fest und gibt einen negativen Reward zurück. Der Critic beobachtet dieses Ergebnis, updatet seine Baseline-Erwartung und signalisiert dem Actor, dass das ein schlechter Zug war. In der nächsten Iteration versucht der Actor stattdessen, ein Sauerstoffatom anzuhängen. Das Environment simuliert die Änderung, berechnet eine höhere Stabilität, gibt einen positiven Reward zurück, und der Critic verstärkt diese Entscheidung. Schritt für Schritt navigiert der A2C-Algorithmus durch den chemischen Simulator und baut völlig autonom ein komplexes, hochstabiles Molekül, ohne jemals auf einen statischen Datensatz von guten Molekülen zurückzugreifen. Reinforcement-Learning-Agents können Simulatoren millionenfach abfragen und so Lösungen entdecken, die der menschlichen Intuition völlig entgehen würden. Diese Folge bringt uns ans Ende unseres Deep Dives in DeepChem. Wenn du diese Tools weiter nutzen möchtest, erkunde die offizielle Dokumentation und versuche hands-on, deine eigenen Environments zu bauen. Du kannst auch devstories dot eu besuchen, um Themen für zukünftige Serien vorzuschlagen. Das war’s für diese Folge. Danke fürs Zuhören und keep building!