Blog


LLM-Strategien Teil 1: Möglichkeiten zur Implementierung von Sprachmodellen in Ihrer Organisation


David Berscheid


Große Sprachmodelle (eng.: Large Language Models, kurz: LLMs) sind aktuell ein viel diskutiertes Thema in Strategieabteilungen uns bekannter Organisationen. Dieser Artikel ist der erste von zwei Teilen, in denen einige Anhaltspunkte zur Identifizierung sinnvoller LLM-Strategien gegeben und Lösungsansätze zur Bewältigung damit verbundener Komplexitäten vorgestellt werden sollen. Weitere Inhalte über LLMs finden Sie in unserer LLM-Übersicht .

Mit X-ROCKET zum Mond


Felix Brunner


Dies sind die Reisen des Encodermodells X-ROCKET. Seine fortwährende Mission: fremde, neue Zeitreihen zu erforschen; neue Erklärungen und neue Interpretationen zu finden; kühn nach Bedeutung zu suchen, wo noch niemand zuvor gesucht hat. In den vorangegangenen Teilen dieser Serie haben wir uns in Teil eins mit den Grundlagen der Zeitreihenklassifizierung beschäftigt und in Teil zwei gelernt, wie X-ROCKET funktioniert. Aber genug geredet, jetzt ist es an der Zeit, die X-ROCKET-Motoren anzuwerfen und dieses Modell in Aktion zu sehen. Lasst uns loslegen! Bereiten Sie sich auf den Abflug vor! Wir werden den Datensatz " AsphaltPavementTypeCoordinates " von Souza (2018) als Beispiel verwenden. Dieser Datensatz besteht aus 2.111 Beispielen von Beschleunigungsmessdaten, die von Autos aufgezeichnet wurden, die über verschiedene Arten von Straßenbelägen fuhren. Jedes Zeitreihenbeispiel im Datensatz hat drei Kanäle (entsprechend der X-, Y- und Z-Richtung), von denen jeder mit 100 Hz gemessen wird. Die Länge der Aufzeichnungen variiert von 66 Zeitbeobachtungen bis zu 2.371. Die Klassen sind "flexibel" (38,6 %), "Kopfsteinpflaster" (25,0 %) und "unbefestigte Straße" (36,4 %). Laut Beschreibung erreichte das beste Modell eine Genauigkeit von 80,66% bei dieser Aufgabe, die wir als Benchmark verwenden werden. Houston, wir haben also unser Problem - ein relativ ausgewogenes dreifaches multivariates Zeitreihenklassifizierungsproblem, um genau zu sein. Das Modul aeon bietet eine einfache Möglichkeit, diesen Datensatz für unsere maschinelle Lernaufgabe zu laden. Wir werden auch scikit-learn verwenden, um den Originalautoren zu folgen und den vollständigen Datensatz in gleich große Trainings- und Test-Splits zu unterteilen: from aeon.datasets import load_classification from sklearn.model_selection import train_test_split X, y, meta = load_classification("AsphaltPavementTypeCoordinates") X_train, X_test, y_train, y_test = train_test_split( X, z, test_size=0.5, random_state=0 ) Wie man eine ROCKET baut Als Nächstes wollen wir ein geeignetes Gefäß zur Kodierung dieses Datensatzes zusammenstellen. Nachdem wir das Modul xrocket mit seinen Abhängigkeiten in unserer Umgebung installiert haben, können wir sofort das vollständige Encoder-Modul importieren. Dann müssen wir nur noch eine Instanz davon mit geeigneten Parametern für unser Problem initialisieren. Da unser Datensatz drei Kanäle hat, ist die Wahl von in_channels klar. Da die Länge der Zeitreihen innerhalb unseres Datensatzes stark variiert, ist es sinnvoll, max_kernel_span auf einen Wert zu setzen, der auch für die kürzeren Beispiele geeignet ist, in diesem Fall also auf 100. Schließlich belassen wir combination_order und feature_cap vorerst auf den Standardwerten von eins und 10.000: from xrocket import XRocket encoder = XRocket( in_channels=3, max_kernel_span=100, combination_order=1, feature_cap=10_000, ) Angesichts dieser Eingaben wird unser Encoder automatisch so eingestellt, dass er die üblichen 84 MiniROCKET-Kernel bei 12 verschiedenen Dilatationswerten hat. Bei drei Datenkanälen wählt X-ROCKET drei Pooling-Schwellenwerte für jede Kernel-Dilatations-Kanal-Kombination, um innerhalb der feature_cap zu bleiben. Daher beträgt die Einbettungsdimension 84 12 3 * 3 = 9.072. Um diesen Apparat schließlich zum Einsteigen vorzubereiten, müssen wir nur noch geeignete Werte für die 9.072 Pooling-Schwellenwerte finden. Wir tun dies, indem wir unsere XRocket -Instanz an ein Datenbeispiel anpassen. Da das Modell mit PyTorch-Tensoren arbeitet, bei denen die erste Dimension für das Stapeln mehrerer Beispiele in einem Stapel reserviert ist, müssen wir die Daten nur von einem 2D-Numpy-Array in einen 3D-Tensor umwandeln und in den Encoder einspeisen: from torch import Tensor encoder.fit(Tensor(X_train[0]).unsqueeze(0)) Los geht's! Nun, da unser X-ROCKET kalibriert ist, können wir den Countdown starten. Auch hier müssen die Eingaben im 3D-Tensorformat vorliegen, also müssen wir die Beispiele in PyTorch-Tensoren umwandeln, bevor wir sie an das Modell übergeben. Aufgrund der unterschiedlichen Längen der Zeitreihen können wir nicht so einfach mehrere Beispiele zu einem Stapel zusammenfassen. Daher ist es bequemer, die Beispiele einzeln zu kodieren und die Einbettungen in zwei Listen zu sammeln, eine für die Trainingsmenge und eine für die Testmenge. Zeit für den vollen Schub, viel Erfolg! embed_train, embed_test = [], [] for x in X_train: embed_train.append(encoder(Tensor(x).unsqueeze(0))) for x in X_test: embed_test.append(encoder(Tensor(x).unsqueeze(0))) 8,02 Sekunden auf einer mäßig schnellen Consumer-CPU später sind die Einbettungen sowohl des Trainings- als auch des Testsatzes fertig. Das heißt, wir haben jetzt eine Darstellung der Eingabedaten unterschiedlicher Größe in festdimensionalen Vektoren. Es ist also an der Zeit, aus diesem Problem ein tabellarisches Problem mit benannten Merkmalen zu machen, die in einem DataFrame gespeichert sind. Der Encoder stellt das Attribut feature_names zur Verfügung, das die Namen der einzelnen Einbettungswerte als Tupel von (pattern, dilation, channel, threshold) enthält. Wir legen diese Tupel in einem Index ab und benennen sie entsprechend. Schließlich erstellen wir die Rahmen, um die transformierten Datensätze zu speichern. Wer sagt denn, dass die Klassifizierung von Zeitreihen eine Wissenschaft für sich ist? from torch import concat import pandas as pd feature_names = pd.Index(encoder.feature_names) df_train = pd.DataFrame(data=concat(embed_train), columns=feature_names) df_test = pd.DataFrame(data=concat(embed_test), columns=feature_names) X-ROCKET einen Zweck geben Wie so viele Dinge im Universum kämpft auch X-ROCKET damit, seinen Weg ohne einen Kopf zu finden. Um sicherzustellen, dass es seiner Flugbahn zum vorgesehenen Ziel - der Zeitreihenklassifizierung - folgen kann, müssen wir einen geeigneten Vorhersagekopf finden, der die Nutzlast liefert. Wie bereits erwähnt, ist prinzipiell jedes Vorhersagemodell, das für den beabsichtigten Zweck geeignet ist, in Ordnung. Beachten Sie, dass dies theoretisch auch tiefe neuronale PyTorch Feed-Forward-Netzwerke einschließt, die es ermöglichen, Backpropagation von Ende zu Ende zurück zu den X-ROCKET-Gewichten laufen zu lassen, um ihre Einbettungen zu verbessern. Aber keine Panik, es ist auch ohne Deep Thought möglich, Antworten zu finden! Da wir letztlich an der Erklärbarkeit der Vorhersagen interessiert sind, wählen wir stattdessen ein einfaches und erklärbares Klassifikationsmodell. Der RandomForestClassifier von Scikit-learn ist dafür ein guter Anfang. Wir müssen ihn nur laden und auf unsere Trainingsdaten anwenden: from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier(random_state=0) clf.fit(df_train, y_train) Wow, das ging ja fast ab wie eine Rakete! Nur 3,13 Sekunden später haben wir unseren Klassifikator. Schauen wir mal, wie er sich in dem Datensatz schlägt. Da in der Originalarbeit eine Genauigkeit von 80,66 % angegeben wird, wollen wir unser Modell auf die gleiche Weise mit dem Hold-Out-Datensatz bewerten, wie sie es getan haben: from sklearn.metrics import accuracy_score pred_test = clf.predict(df_test) acc_test = accuracy_score(y_test, pred_test) Und da haben wir es, unser Modell erreicht eine Genauigkeit von 90,19% auf dem Testsatz! Nicht schlecht, aber ist das genug, um einen kleinen Rocket Man stolz zu machen? Um diese Frage schlüssig zu beantworten, sind natürlich genauere Vergleiche erforderlich. Dennoch scheint dies ein erfolgreicher Start gewesen zu sein! Wo noch kein ROCKET Man zuvor war Es ist an der Zeit, X-ROCKET auf seiner ultimativen Suche nach Bedeutung bis an die letzte Grenze zu führen. Da das Modell akzeptabel zu funktionieren scheint, ist es sinnvoll, auch die Erklärungen zu analysieren, die es für seine Vorhersagen liefert. Glücklicherweise bietet der von uns gewählte Random-Forest-Klassifikator ein Attribut namens feature_importances_ , das allen Merkmalen des Modells Wichtigkeitswerte zuweist. Da wir den entsprechenden Index in feature_names gespeichert haben, können wir die beiden Arrays leicht zusammenführen: feature_importances = pd.Series( data=clf.feature_importances_, index=feature_names, ) Die Analyse dieses Objekts ist ohnehin nur bedingt sinnvoll. Wir können zum Beispiel sehen, dass die wichtigste Einbettung für unser Modell das Muster HLHLLLHLL bei Dilatation zwei im Y-Kanal mit einem Pooling-Schwellenwert von -10,84 ist. Ein H in dem Muster steht für einen hohen Wert, ein L für einen niedrigen, so dass das Muster etwa wie |_|___|__ aussieht. Es ist nun jedoch einfach, die Wichtigkeitswerte zusammenzufassen, um die relative Wichtigkeit z. B. der Eingangskanäle zu untersuchen. Summiert man die einzelnen Kanäle, erhält man die nachstehenden Wichtigkeitswerte. Da X-ROCKET die Zufälligkeit bei der Zusammenstellung der Einbettungen beseitigt, werden aus jedem Kanal und jedem Dilatationswert die gleichen Merkmale extrahiert. Daher bietet der Vergleich der gruppierten Merkmalsbedeutungen auf diese Weise einen fairen Vergleich. Relative Bedeutung der Eingangskanäle für die Vorhersagen. Das heißt, der Y-Kanal scheint der klare Favorit zu sein, gefolgt vom X-Kanal. Ähnlich verhält es sich, wenn man die verschiedenen Dilatationswerte zusammenzählt: Es zeigt sich, dass die höheren Frequenzen ausschlaggebend sind. Bei Einträgen, die mit 100 Hz aufgezeichnet werden, bedeutet ein Dilatationswert von 2 zum Beispiel eine Frequenz von 50 Hz. Wie in der nachstehenden Abbildung zu sehen ist, sind die meisten Informationen in diesen höheren Frequenzen enthalten, d. h. in denjenigen mit kleineren Dilatationswerten. Relative Bedeutung der verschiedenen Frequenzdilatationen für die Vorhersagen. Was hat der Arzt zur ROCKET gesagt? "Time to get your booster shot!" Dementsprechend könnte man sich fragen, wie man diesem Raketenschiff einen zusätzlichen Leistungsschub verschaffen könnte. Im Bereich des maschinellen Lernens sind die Möglichkeiten natürlich endlos. Man könnte zum Beispiel alternative Modellköpfe wie Gradient-Boosting-Algorithmen ausprobieren oder die entsprechenden Hyperparameter besser optimieren. Auf einem anderen Weg könnte man darüber nachdenken, wie man die Datenqualität verbessern oder den vorhandenen Datensatz mit künstlichen Beispielen anreichern kann. Dies würde jedoch den Rahmen dieser einfachen Demonstration sprengen. Es wäre jedoch interessant zu sehen, ob der Kodierer weiter verbessert werden kann, um zusätzliche Erkenntnisse über die Einflussfaktoren für die Vorhersagekraft zu gewinnen, wenn neben den bisher gesehenen univariaten auch mehrkanalige Merkmale berücksichtigt werden. Lassen wir also alles unverändert, ändern aber nur den Encoder, indem wir combination_order=2 setzen und die Anzahl der Features mit feature_cap=15_000 bei der Initialisierung von X-ROCKET leicht erhöhen. Die resultierende Einbettung ist nun 12.096-dimensional mit 6 Kanalkombinationen anstelle von nur 3 Kanälen und 2 Pooling-Schwellenwerten für jeden Ausgang. Neben einem leichten Anstieg der Genauigkeit des Testsatzes auf 91,13% , stellen wir erneut fest, dass der Y-Kanal wieder am wichtigsten zu sein scheint, aber jetzt haben Kombinationen von Y mit den anderen Kanälen eine größere Bedeutung: Relative Bedeutung der Eingangskanalkombinationen für die Vorhersagen. Schlussfolgerungen In dieser Artikelserie haben wir gesehen, wie ein bestehendes Zeitreihen-Encoder-System umstrukturiert werden kann, um neue Erkenntnisse über die Vorhersagetreiber zu gewinnen. Teil eins hat einige der Fortschritte im maschinellen Lernen für den Zeitreihenbereich beleuchtet. Dann wurde in Teil zwei und in diesem dritten Teil X-ROCKET, ein erklärbarer Zeitreihen-Encoder, sowohl technisch als auch mit einem praktischen Anwendungsbeispiel vorgestellt. Auch wenn dieses Konstrukt im vorliegenden Beispiel seine Aufgabe erfüllt hat, ist es wichtig, darauf hinzuweisen, dass die von X-ROCKET gelieferten Erklärungen nur so gut sind wie die Vorhersagefähigkeiten des Modells für das jeweilige Problem. Das heißt, es hat keinen Sinn, ein Modell zu interpretieren, das in Bezug auf seine Vorhersagen nicht gut genug ist. Es gibt also keine Garantie dafür, dass derselbe Ansatz in verschiedenen Umgebungen gleich gut funktioniert, insbesondere wenn die Eingabedaten wenig Signal enthalten. Nichtsdestotrotz: Raketen sind cool, daran führt kein Weg vorbei! Referenzen Dempster, A., Schmidt, D. F., & Webb, G. I. (2021, August). Minirocket: A very fast (almost) deterministic transform for time series classification. In Proceedings of the 27th ACM SIGKDD conference on knowledge discovery & data mining (pp. 248–257). Souza, V. M. (2018). Asphalt pavement classification using smartphone accelerometer and complexity invariant distance. Engineering Applications of Artificial Intelligence , 74, 198–211. Dieser Artikel entstand im Rahmen des vom Bundesministerium für Bildung und Forschung (BMBF) unter dem Förderkennzeichen 02P20A501 geförderten Projekts "AI-gent3D - KI-gestütztes, generatives 3D-Drucken" unter Koordination des PTKA Karlsruhe.

Computer Vision

Mehr anzeigen ->

Frühzeitige Klassifizierung von Anbauflächen anhand von Satellitenbild-Zeitreihen


Tiago Sanona


In einer schnelllebigen und sich ständig verändernden globalen Wirtschaft bietet die Möglichkeit, Erntefelder am Ende eines Wachstumszyklus per Fernerkundung zu klassifizieren, nicht den dringend benötigten unmittelbaren Einblick, den die Entscheidungsträger benötigen. Um dieses Problem zu lösen, haben wir ein Modell entwickelt, das eine kontinuierliche Klassifizierung von Anbaufeldern zu jedem beliebigen Zeitpunkt ermöglicht und die Vorhersagen verbessert, sobald mehr Daten zur Verfügung stehen. In der Praxis haben wir ein einziges Modell entwickelt, das in der Lage ist, auf der Grundlage von Satellitendaten Vorhersagen darüber zu treffen, welche Kulturen zu einem beliebigen Zeitpunkt im Anbau sind. Bei den Daten, die zum Zeitpunkt der Inferenz zur Verfügung stehen, kann es sich um einige wenige Bilder zu Beginn des Jahres oder um eine vollständige Zeitreihe von Bildern aus einer kompletten Wachstumsperiode handeln. Dies übersteigt die Möglichkeiten aktueller Deep-Learning -Lösungen, die entweder nur Vorhersagen am Ende der Vegetationsperiode bieten oder mehrere Modelle verwenden müssen, die auf Ergebnisse zu vorher festgelegten Zeitpunkten spezialisiert sind. Dieser Artikel beschreibt die wichtigsten Änderungen, die wir an dem Modell vorgenommen haben, das in einem früheren Blog-Beitrag " Classification of Crop fields through Satellite Image Time Series" beschrieben wurde. Die in diesem Artikel vorgestellten Ergebnisse beruhen auf einem kürzlich von der dida veröffentlichten Forschungspapier. Ausführlichere Informationen zu diesem Thema und weitere Experimente zu diesem Modell finden Sie im Originalmanuskript: "Early Crop Classification via Multi-Modal Satellite Data Fusion and Temporal Attention" .

Mit Machine Learning die Umwelt schützen


Edit Szügyi


Maschinelles Lernen löst schon seit Jahrzehnten komplexe Probleme. Man denke nur daran, wie Methoden des maschinellen Sehens lebensbedrohliche Krankheiten zuverlässig vorhersagen können, wie selbstfahrende Autos auf dem Weg sind, die Verkehrssicherheit zu revolutionieren, oder wie die automatische Übersetzung uns in die Lage versetzt, mit fast jedem Menschen auf der Welt zu sprechen. Die Möglichkeiten des maschinellen Lernens sind in vielen Bereichen der Industrie und Wissenschaft angekommen. Es gibt jedoch einige Bereiche, in denen das Potenzial des maschinellen Lernens schwerer zu erkennen ist und auch weniger genutzt wird. Einer dieser Bereiche ist der Umweltschutz. Der Schutz der Natur ist eine der größten Herausforderungen unserer Generation, die mit drängenden Problemen wie Klimawandel, Plastikverschmutzung oder Ressourcenverknappung konfrontiert ist. Sehen wir uns nun an, wie maschinelles Lernen als Werkzeug im Umweltschutz eingesetzt wurde und werden kann.

Einführungen

Mehr anzeigen ->

LLM-Strategien Teil 1: Möglichkeiten zur Implementierung von Sprachmodellen in Ihrer Organisation


David Berscheid


Große Sprachmodelle (eng.: Large Language Models, kurz: LLMs) sind aktuell ein viel diskutiertes Thema in Strategieabteilungen uns bekannter Organisationen. Dieser Artikel ist der erste von zwei Teilen, in denen einige Anhaltspunkte zur Identifizierung sinnvoller LLM-Strategien gegeben und Lösungsansätze zur Bewältigung damit verbundener Komplexitäten vorgestellt werden sollen. Weitere Inhalte über LLMs finden Sie in unserer LLM-Übersicht .

Wie ChatGPT mit Hilfe von Reinforcement Learning optimiert wird


Thanh Long Phan


Ende 2022 veröffentlichte OpenAI ChatGPT (ein auf Transformer basierendes Sprachmodell) für die Öffentlichkeit. Obwohl es auf dem bereits viel diskutierten GPT-3 basiert, löste es einen beispiellosen Boom in Sachen generativer KI aus. Es ist in der Lage, menschenähnlichen Text zu generieren, und bietet eine breite Palette von Anwendungen, darunter Sprachübersetzung, Sprachmodellierung und die Generierung von Text für Anwendungen wie Chatbots. Lesen Sie sich dazu gerne unsere Einführung zu LLMs durch. ChatGPT scheint so leistungsfähig zu sein, dass es von vielen als ein wesentlicher Schritt in Richtung künstliche allgemeine Intelligenz angesehen wird. Der Hauptgrund für die jüngsten Erfolge von Sprachmodellen wie ChatGPT liegt in ihrer Größe (gemessen an den trainierbaren Parametern). Doch indem man Sprachmodelle größer macht, werden sie nicht automatisch besser darin, die Absichten des Benutzers zu verfolgen. Ein größeres Modell kann auch toxischer werden und eher zu "Halluzinationen" neigen. Eine Möglichkeit, diese Probleme zu entschärfen und die Modelle allgemeiner an die Absichten der Benutzer anzupassen, ist die Anwendung von Reinforcement Learning. In diesem Blogbeitrag geben wir einen Überblick über den Trainingsprozess von ChatGPT und werfen einen genaueren Blick auf die Verwendung von Reinforcement Learning bei der Sprachmodellierung. Auch interessant: Unser aggregierte Sammlung an LLM Inhalten .


Fairness im Machine Learning


Cornelius Braun


In einem vorherigen Blog-Beitrag haben wir die Fülle menschlicher Vorurteile erläutert, die in realen Datensätzen oft vorhanden sind. Da Praktiker gezwungen sein können, mit verzerrten Daten zu arbeiten, ist es wichtig zu wissen, wie die Fairness von Modellentscheidungen dennoch gewährleistet werden kann. In diesem Beitrag erkläre ich daher die wichtigsten Ideen rund um Fairness beim maschinellen Lernen (ML). Dazu gehört eine kurze Zusammenfassung der wichtigsten Metriken zur Messung der Fairness Ihrer Modellentscheidungen und ein Überblick über Tools, die Ihnen helfen können, die Fairness Ihres Modells zu garantieren oder zu verbessern.

Datenschutz: Machine Learning und die DSGVO


Ana Guerra


Datensätze sind für die Forschung und die Entwicklung von Modellen in den Bereichen der natürlichen Sprachverarbeitung (NLP) und des maschinellen Lernens (ML) unerlässlich. Mit der zunehmenden Nutzung, Sammlung und Speicherung von Daten nehmen jedoch auch die Bedenken hinsichtlich des Datenschutzes zu. Um mit bewährten Methoden ("best practice") in Einklang zu stehen, ist es wichtig zu verstehen, was Datenschutz bedeutet und wie er geregelt wird. Dieser Beitrag bietet daher einen kurzen Überblick darüber, wie der Datenschutz in der Europäischen Union geregelt ist. Neben der Einhaltung der EU-Vorschriften müssen datengesteuerte Projekte auch ethisch verantwortungsvoll sein. Daher endet dieser Artikel mit einigen Worten zur Ethik bei der Verarbeitung personenbezogener Daten.

Natural Language Processing

Mehr anzeigen ->

LLM-Strategien Teil 1: Möglichkeiten zur Implementierung von Sprachmodellen in Ihrer Organisation


David Berscheid


Große Sprachmodelle (eng.: Large Language Models, kurz: LLMs) sind aktuell ein viel diskutiertes Thema in Strategieabteilungen uns bekannter Organisationen. Dieser Artikel ist der erste von zwei Teilen, in denen einige Anhaltspunkte zur Identifizierung sinnvoller LLM-Strategien gegeben und Lösungsansätze zur Bewältigung damit verbundener Komplexitäten vorgestellt werden sollen. Weitere Inhalte über LLMs finden Sie in unserer LLM-Übersicht .

Erweitere das Wissen deines LLMs mit RAG


Thanh Long Phan, Fabian Dechent


Large Language Models (LLMs) haben aufgrund ihrer bemerkenswerten, menschenähnlichen Fähigkeit, Texte zu verstehen und zu generieren, rasch an Popularität gewonnen. Trotz der großen Fortschritte gibt es auf dem Weg zu wirklich zuverlässigen Assistenten noch einige Herausforderungen zu bewältigen. LLMs sind dafür bekannt, dass sie Antworten erfinden und oft Texte produzieren, die dem erwarteten Antwortstil entsprechen, denen es aber an Genauigkeit oder sachlicher Grundlage fehlt. Die generierten Wörter und Phrasen werden so ausgewählt, dass sie mit hoher Wahrscheinlichkeit auf einen früheren Text folgen. Die Wahrscheinlichkeit wird so angepasst, dass sie dem Trainingskorpus so gut wie möglich entspricht. Dadurch besteht die Möglichkeit, dass eine Information veraltet ist, wenn der Korpus nicht aktualisiert und das Modell neu trainiert wird. Oder dass sie einfach sachlich falsch ist, während die generierten Wörter zwar richtig klingen und dem gewünschten Genre zugeordnet werden können. Das Kernproblem dabei ist, dass das LLM nicht weiß, was es nicht weiß. Und selbst wenn eine Information korrekt ist, ist es schwierig, ihre Quelle zu finden, um eine Überprüfung der Fakten zu ermöglichen. In diesem Artikel stellen wir RAG (Retrieval-Augmented Generation) als eine Methode vor, die beide Probleme angeht und die darauf abzielt, die Zuverlässigkeit und Genauigkeit der von LLMs generierten Informationen zu verbessern.


Informationsextraktion aus technischen Zeichnungen


Dr. Frank Weilandt


Mussten Sie schon einmal Daten über ein Objekt aus zwei verschiedenen Quellen kombinieren, zum Beispiel Bilder und Text? Bei unserer Arbeit bei dida stehen wir oft vor solchen Herausforderungen. Hier stellen wir ein Beispiel aus dem Bereich technischer Zeichnungen vor. Solche Zeichnungen werden in vielen Bereichen von Fachleuten verwendet, um Informationen auszutauschen. Sie bestehen aus Zeichnungen, die ganz bestimmten Richtlinien folgen, damit jeder Fachmann verstehen kann, was darauf abgebildet ist. Normalerweise liegen technische Zeichnungen in Formaten vor, die eine Indizierung ermöglichen, wie z. B. svg, html, dwg, dwf, usw., aber viele, vor allem ältere, existieren nur im Bildformat (jpeg, png, bmp, usw.), z. B. aus Buchscans. Auf diese Art von Zeichnungen kann man nur schwer automatisch zugreifen, was ihre Verwendung schwierig und zeitaufwändig macht. Hier könnten automatische Erkennungstools eingesetzt werden, um die Suche zu erleichtern. In diesem Blogpost zeigen wir, wie sowohl traditionelle als auch Deep-Learning-basierte Computer-Vision-Techniken für die Informationsextraktion aus Explosionszeichnungen eingesetzt werden können. Wir gehen davon aus, dass eine solche Zeichnung zusammen mit einigen textuellen Informationen für jedes Objekt auf der Zeichnung gegeben ist. Die Objekte können durch Nummern, die mit ihnen verbunden sind, identifiziert werden. Hier ist ein recht einfaches Beispiel für eine solche Zeichnung: Eine elektrische Bohrmaschine. Auf jeder Zeichnung gibt es drei Hauptkomponenten: Die Zahlen, die Objekte und die Hilfslinien. Die Hilfslinien werden verwendet, um die Objekte mit den Zahlen zu verbinden. Die vorliegende Aufgabe besteht darin, alle Objekte einer bestimmten Art / Klasse über eine große Anzahl von Zeichnungen zu finden , z. B. die Buchse mit der Nummer 653 im obigen Bild kommt in mehreren Zeichnungen und sogar in Zeichnungen anderer Hersteller vor. Dies ist eine typische Klassifizierungsaufgabe, allerdings mit einer Einschränkung: Da es zu jedem Objekt zusätzliche Informationen gibt, die über die Nummern zugänglich sind, müssen wir zunächst jede Nummer auf dem Bild dem entsprechenden Objekt zuordnen . Im Folgenden beschreiben wir, wie diese Zusatzaufgabe mit Hilfe traditioneller Computer-Vision-Techniken gelöst werden kann.

21 Fragen, die wir unseren Kunden stellen: Start eines erfolgreichen ML-Projekts


Emilius Richter


Die Automatisierung von Prozessen mithilfe von Machine Learning (ML) kann die Effizienz eines Systems über menschliche Kapazitäten hinaus steigern und wird daher in vielen Branchen immer beliebter. Doch zwischen einer Idee und einem gut definierten Projekt gibt es einige Punkte, die berücksichtigt werden müssen, um das wirtschaftliche Potenzial und die technische Komplexität des Projekts richtig einzuschätzen. Gerade für Unternehmen wie dida, die individuelle Workflow-Automatisierungssoftware anbieten, hilft ein gut vorbereitetes Projekt dabei, die Machbarkeit und die technische Gesamtkomplexität der Projektziele schnell einzuschätzen - was es wiederum ermöglicht, Software entwicklen, die den Anforderungen des Kunden gerecht wird. In diesem Artikel besprechen wir, welche Themen im Vorfeld berücksichtigt werden sollten und warum die Fragen, die wir stellen, wichtig sind, um ein erfolgreiches ML-Softwareprojekt zu starten.

Remote Sensing

Mehr anzeigen ->

Frühzeitige Klassifizierung von Anbauflächen anhand von Satellitenbild-Zeitreihen


Tiago Sanona


In einer schnelllebigen und sich ständig verändernden globalen Wirtschaft bietet die Möglichkeit, Erntefelder am Ende eines Wachstumszyklus per Fernerkundung zu klassifizieren, nicht den dringend benötigten unmittelbaren Einblick, den die Entscheidungsträger benötigen. Um dieses Problem zu lösen, haben wir ein Modell entwickelt, das eine kontinuierliche Klassifizierung von Anbaufeldern zu jedem beliebigen Zeitpunkt ermöglicht und die Vorhersagen verbessert, sobald mehr Daten zur Verfügung stehen. In der Praxis haben wir ein einziges Modell entwickelt, das in der Lage ist, auf der Grundlage von Satellitendaten Vorhersagen darüber zu treffen, welche Kulturen zu einem beliebigen Zeitpunkt im Anbau sind. Bei den Daten, die zum Zeitpunkt der Inferenz zur Verfügung stehen, kann es sich um einige wenige Bilder zu Beginn des Jahres oder um eine vollständige Zeitreihe von Bildern aus einer kompletten Wachstumsperiode handeln. Dies übersteigt die Möglichkeiten aktueller Deep-Learning -Lösungen, die entweder nur Vorhersagen am Ende der Vegetationsperiode bieten oder mehrere Modelle verwenden müssen, die auf Ergebnisse zu vorher festgelegten Zeitpunkten spezialisiert sind. Dieser Artikel beschreibt die wichtigsten Änderungen, die wir an dem Modell vorgenommen haben, das in einem früheren Blog-Beitrag " Classification of Crop fields through Satellite Image Time Series" beschrieben wurde. Die in diesem Artikel vorgestellten Ergebnisse beruhen auf einem kürzlich von der dida veröffentlichten Forschungspapier. Ausführlichere Informationen zu diesem Thema und weitere Experimente zu diesem Modell finden Sie im Originalmanuskript: "Early Crop Classification via Multi-Modal Satellite Data Fusion and Temporal Attention" .

Die besten (Python-)Tools für die Fernerkundung


Emilius Richter


Schätzungsweise 906 Erdbeobachtungssatelliten befinden sich derzeit im Erdorbit und stellen der Wissenschaft und Industrie täglich mehrere Terabyte an Daten zur Verfügung. Die Satelliten arbeiten sowohl mit Radar als auch optischen Sensoren und decken dabei verschiedene Spektralbereiche mit unterschiedlicher spektraler, räumlicher und zeitlicher Auflösung ab. Durch dieses breite Spektrum an geographischen Daten, ist es möglich, dass Fernerkundungsmethoden in vielen Industriebranchen und staatlichen Einrichtungen neue Anwendungsbereiche finden. Auf unserer Webseite finden Sie einige Projekte , in denen wir erfolgreich Satellitendaten eingesetzt haben, und mögliche Anwendungsfälle von Fernerkundungsmethoden für verschiedene Industrien . Bekannte Satellitensysteme und -programme sind z.B. Sentinel-1 (Radar) und Sentinel-2 (optisch) von der ESA, Landsat (optisch) von der NASA, TerraSAR-X und TanDEM-X (beide Radar) von der DLR und PlanetScope (optisch) von Planet. Es gibt im Wesentliche zwei Arten an geographischen Daten: Rasterdaten und Vektordaten . Rasterdaten Rasterdaten sind ein Gitter von regelmäßig angeordneten Pixeln, wobei jeder Pixel mit einem geographischen Standort verbunden ist, und werden als Matrix dargestellt. Die Pixelwerte hängen von der Art der Informationen ab, die gespeichert werden, z.B. Helligkeitswerte bei digitalen Bildern oder Temperaturwerte bei Wärmebildern. Die Größe der Pixel bestimmen außerdem die räumliche Auflösung des Rasters. Geographischen Rasterdaten werden also dazu verwendet, Satellitenbilder zu repräsentieren. Rasterbilder enthalten in der Regel mehrere Bänder bzw. Kanäle, z.B. einen roten, grünen und blauen Kanal. Bei Satellitendaten gibt es zudem oft infrarote und/oder ultraviolette Bänder. Vektordaten Vektordaten repräsentieren geographische Eigenschaften auf der Erdoberfläche, wie z.B. Städte, Ländergrenzen, Straßen, Gewässer, Besitzrechte etc.. Solche Eigenschaften werden durch ein oder mehrere miteinander verbundene Vertices repräsentiert, wobei ein Vertex durch x-, y- und z-Werte eine Position im Raum festlegt. Ein einzelner Vertex ist ein Punkt, mehrere verbundene Vertices sind eine Linie und mehrere (>3) verbundene und geschlossene Vertices werden als Polygon bezeichnet. Die x-, y- und z-Werte sind dabei immer auf das entsprechende Koordinatenreferenzsystem (CRS) bezogen, das in Vektordateien als Metainformation gespeichert ist. Die gebräuchlichsten Dateiformate für Vektordaten sind GeoJSON, KML und SHAPEFILE. Um diese Daten prozessieren und analysieren zu können, werden verschiedene Tools benötigt. Im Folgenden stelle ich die Tools vor, mit denen wir bei dida die besten Erfahrungen gemacht haben und die in unseren Fernerkundungsprojekten regelmäßig zum Einsatz kommen. Ich stelle ein Tool nach dem anderen vor, in folgende Kategorien gruppiert: Abrufen von Satellitendaten EOBrowser Sentinelsat Sentinelhub Verarbeitung von Rasterdaten Rasterio Pyproj SNAP (new) pyroSAR Rioxarray (new) Verarbeitung von Vektordaten Shapely Python-geojson Geojson.io Geopandas Fiona Bereitstellung geographischer Daten QGIS GeoServer Leafmap (new) Verarbeitung meteorologischer Satellitendaten Wetterdienst Wradlib

Software Development

Mehr anzeigen ->

Mehrschichtige Requirements mit pip-tools verwalten


Dr. Augusto Stoffel


Bei der Erstellung von Python-Anwendungen für die Produktion ist es eine gute Praxis, alle Abhängigkeitsversionen zu fixieren, ein Prozess, der auch als "Einfrieren der Requirements" bekannt ist. Dies macht die Deployments reproduzierbar und vorhersehbar. (Bei Bibliotheken und Benutzeranwendungen sind die Anforderungen ganz anders; in diesem Fall sollte man eine große Bandbreite an Versionen für jede Abhängigkeit unterstützen, um das Konfliktpotenzial zu verringern.) In diesem Beitrag erklären wir, wie man ein mehrschichtiges Requirements-Setup verwaltet, ohne auf den verbesserten Konfliktlösungsalgorithmus zu verzichten, der kürzlich in pip eingeführt wurde. Wir stellen ein Makefile zur Verfügung, das Sie sofort in jedem Ihrer Projekte verwenden können!

Der Projektantrag - der erste Schritt zu einem erfolgreichen ML-Projekt


Emilius Richter


Viele Machine-Learning-Projekte (ML) sind zum Scheitern verurteilt. Dies kann verschiedene Gründe haben, die oft in Kombination auftreten. Um ein Scheitern zu vermeiden, müssen alle beteiligten Akteure die technischen und organisatorischen Anforderungen des Projekts verstehen. Neben allen Vorgesprächen, die das Projekt definieren, ist es wichtig, die projektrelevanten Informationen in einem umfassenden Projektantrag zusammenzufassen. Dieser sollte die technischen und organisatorischen Anforderungen, mögliche Problembereiche und technische Beschränkungen umfassen. In diesem Artikel beschreibe ich die wichtigsten Module eines Machine-Learning-Projektantrags. Für einen Softwareanbieter wie dida ist der Projektantrag der erste Schritt, um den Anforderungen des Kunden gerecht zu werden.

Talks & Events

Mehr anzeigen ->


Theorie & Algorithmen

Mehr anzeigen ->

Deep Learning vs. Maschinelles Lernen: Was ist der Unterschied? | dida blog


Serdar Palaoglu


Im Bereich der künstlichen Intelligenz sind zwei grundlegende Konzepte, Maschinelles Lernen und Deep Learning, als Schlüsselkomponenten für die Weiterentwicklung computerbasierter Lernsysteme hervorgetreten. Maschinelles Lernen dient als grundlegendes Prinzip, bei dem Computer die Fähigkeit erlangen, aus Daten zu lernen, ohne explizit programmiert zu sein. Deep Learning, nutzt künstliche neuronale Netzwerke, die vom menschlichen Gehirn inspiriert sind, um komplexe Datenanalysen durchzuführen. Dieser Artikel geht auf eine umfassende Erforschung dieser Bereiche ein, beleuchtet ihre Unterschiede, praktischen Anwendungen und Bedeutung im Bereich der künstlichen Intelligenz.

Wie ChatGPT mit Hilfe von Reinforcement Learning optimiert wird


Thanh Long Phan


Ende 2022 veröffentlichte OpenAI ChatGPT (ein auf Transformer basierendes Sprachmodell) für die Öffentlichkeit. Obwohl es auf dem bereits viel diskutierten GPT-3 basiert, löste es einen beispiellosen Boom in Sachen generativer KI aus. Es ist in der Lage, menschenähnlichen Text zu generieren, und bietet eine breite Palette von Anwendungen, darunter Sprachübersetzung, Sprachmodellierung und die Generierung von Text für Anwendungen wie Chatbots. Lesen Sie sich dazu gerne unsere Einführung zu LLMs durch. ChatGPT scheint so leistungsfähig zu sein, dass es von vielen als ein wesentlicher Schritt in Richtung künstliche allgemeine Intelligenz angesehen wird. Der Hauptgrund für die jüngsten Erfolge von Sprachmodellen wie ChatGPT liegt in ihrer Größe (gemessen an den trainierbaren Parametern). Doch indem man Sprachmodelle größer macht, werden sie nicht automatisch besser darin, die Absichten des Benutzers zu verfolgen. Ein größeres Modell kann auch toxischer werden und eher zu "Halluzinationen" neigen. Eine Möglichkeit, diese Probleme zu entschärfen und die Modelle allgemeiner an die Absichten der Benutzer anzupassen, ist die Anwendung von Reinforcement Learning. In diesem Blogbeitrag geben wir einen Überblick über den Trainingsprozess von ChatGPT und werfen einen genaueren Blick auf die Verwendung von Reinforcement Learning bei der Sprachmodellierung. Auch interessant: Unser aggregierte Sammlung an LLM Inhalten .


Mehrschichtige Requirements mit pip-tools verwalten


Dr. Augusto Stoffel


Bei der Erstellung von Python-Anwendungen für die Produktion ist es eine gute Praxis, alle Abhängigkeitsversionen zu fixieren, ein Prozess, der auch als "Einfrieren der Requirements" bekannt ist. Dies macht die Deployments reproduzierbar und vorhersehbar. (Bei Bibliotheken und Benutzeranwendungen sind die Anforderungen ganz anders; in diesem Fall sollte man eine große Bandbreite an Versionen für jede Abhängigkeit unterstützen, um das Konfliktpotenzial zu verringern.) In diesem Beitrag erklären wir, wie man ein mehrschichtiges Requirements-Setup verwaltet, ohne auf den verbesserten Konfliktlösungsalgorithmus zu verzichten, der kürzlich in pip eingeführt wurde. Wir stellen ein Makefile zur Verfügung, das Sie sofort in jedem Ihrer Projekte verwenden können!

Die besten (Python-)Tools für die Fernerkundung


Emilius Richter


Schätzungsweise 906 Erdbeobachtungssatelliten befinden sich derzeit im Erdorbit und stellen der Wissenschaft und Industrie täglich mehrere Terabyte an Daten zur Verfügung. Die Satelliten arbeiten sowohl mit Radar als auch optischen Sensoren und decken dabei verschiedene Spektralbereiche mit unterschiedlicher spektraler, räumlicher und zeitlicher Auflösung ab. Durch dieses breite Spektrum an geographischen Daten, ist es möglich, dass Fernerkundungsmethoden in vielen Industriebranchen und staatlichen Einrichtungen neue Anwendungsbereiche finden. Auf unserer Webseite finden Sie einige Projekte , in denen wir erfolgreich Satellitendaten eingesetzt haben, und mögliche Anwendungsfälle von Fernerkundungsmethoden für verschiedene Industrien . Bekannte Satellitensysteme und -programme sind z.B. Sentinel-1 (Radar) und Sentinel-2 (optisch) von der ESA, Landsat (optisch) von der NASA, TerraSAR-X und TanDEM-X (beide Radar) von der DLR und PlanetScope (optisch) von Planet. Es gibt im Wesentliche zwei Arten an geographischen Daten: Rasterdaten und Vektordaten . Rasterdaten Rasterdaten sind ein Gitter von regelmäßig angeordneten Pixeln, wobei jeder Pixel mit einem geographischen Standort verbunden ist, und werden als Matrix dargestellt. Die Pixelwerte hängen von der Art der Informationen ab, die gespeichert werden, z.B. Helligkeitswerte bei digitalen Bildern oder Temperaturwerte bei Wärmebildern. Die Größe der Pixel bestimmen außerdem die räumliche Auflösung des Rasters. Geographischen Rasterdaten werden also dazu verwendet, Satellitenbilder zu repräsentieren. Rasterbilder enthalten in der Regel mehrere Bänder bzw. Kanäle, z.B. einen roten, grünen und blauen Kanal. Bei Satellitendaten gibt es zudem oft infrarote und/oder ultraviolette Bänder. Vektordaten Vektordaten repräsentieren geographische Eigenschaften auf der Erdoberfläche, wie z.B. Städte, Ländergrenzen, Straßen, Gewässer, Besitzrechte etc.. Solche Eigenschaften werden durch ein oder mehrere miteinander verbundene Vertices repräsentiert, wobei ein Vertex durch x-, y- und z-Werte eine Position im Raum festlegt. Ein einzelner Vertex ist ein Punkt, mehrere verbundene Vertices sind eine Linie und mehrere (>3) verbundene und geschlossene Vertices werden als Polygon bezeichnet. Die x-, y- und z-Werte sind dabei immer auf das entsprechende Koordinatenreferenzsystem (CRS) bezogen, das in Vektordateien als Metainformation gespeichert ist. Die gebräuchlichsten Dateiformate für Vektordaten sind GeoJSON, KML und SHAPEFILE. Um diese Daten prozessieren und analysieren zu können, werden verschiedene Tools benötigt. Im Folgenden stelle ich die Tools vor, mit denen wir bei dida die besten Erfahrungen gemacht haben und die in unseren Fernerkundungsprojekten regelmäßig zum Einsatz kommen. Ich stelle ein Tool nach dem anderen vor, in folgende Kategorien gruppiert: Abrufen von Satellitendaten EOBrowser Sentinelsat Sentinelhub Verarbeitung von Rasterdaten Rasterio Pyproj SNAP (new) pyroSAR Rioxarray (new) Verarbeitung von Vektordaten Shapely Python-geojson Geojson.io Geopandas Fiona Bereitstellung geographischer Daten QGIS GeoServer Leafmap (new) Verarbeitung meteorologischer Satellitendaten Wetterdienst Wradlib