Blog


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.

Inside X-ROCKET: Das erklärbare ROCKET-Modell


Felix Brunner


Willkommen auf der Brücke, Pilot! In diesem zweiten Teil unserer dreiteiligen Reise werden wir einen detaillierten Blick auf das Innere der X-ROCKET- Implementierung werfen. Nachdem in Teil eins die Voraussetzungen für die Klassifizierung von Zeitreihen und eine grundlegende Einführung in das ROCKET-Modell geschaffen wurden, bietet dieser Artikel einen Überblick über die notwendigen Mechanismen für erklärbare Einbettungen, bevor Teil drei X-ROCKET in ein holpriges Wettrennen auf einem realen Datensatz schickt. Die Blaupause für Erklärbarkeit Auch hier besteht unser Ziel darin, einen leistungsfähigen Zeitreihencodierer, das ROCKET, erklärbar zu machen. Eine Möglichkeit, dies zu erreichen, besteht darin, jedes Element der Einbettungsvektoren zu seinen Ursprüngen zurückzuverfolgen und ihnen damit eine Bedeutung zu verleihen. Anders ausgedrückt: Wenn es uns gelingt, jedes Einbettungselement sinnvoll zu benennen, verwandeln wir nachgelagerte Aufgaben effektiv in tabellarische Probleme. Angesichts der Komplexität und Nichtlinearität neuronaler Netze ist dies in der Regel leichter gesagt als getan. Im Fall von ROCKET ist die Architektur jedoch flach genug, um mit ein wenig Technik und Tricks Licht in ihr Innenleben zu bringen. Genauer gesagt wird das MiniROCKET von Dempster et al. (2021) als Ausgangspunkt dienen, dem wir Transparenz hinzufügen, indem wir seine Kodierungsmechanismen vollständig zurückverfolgen. Obwohl Faltungen nicht unbedingt in einem Deep-Learning-Framework implementiert werden müssen, kann dies die Rechengeschwindigkeit durch die Nutzung von GPUs erhöhen. Dementsprechend gibt es bereits gute Implementierungen von verschiedenen ROCKET-Varianten in Python. Zum Beispiel ist der Numpy-Code der Originalautoren Teil der sktime -Bibliothek, und tsai enthält eine GPU-fähige PyTorch-Version davon. Obwohl diese Implementierungen rechnerisch bereits sehr effizient sind, erfordern unsere Bemühungen einige Änderungen, die sich nach einer Umstrukturierung des Modells leichter erreichen lassen. Gehen wir näher auf die technischen Details der X-ROCKET Implementierung ein. Wie bereits erwähnt, ähneln die ROCKET-Architekturen sehr einfachen CNNs, warum also nicht auch ihre Implementierung wie ein neuronales Netz strukturieren? Das heißt, wir behandeln die Berechnungsschritte als Schichtobjekte und fügen sie entsprechend den Ideen hinter ROCKET zusammen. Genauer gesagt, wir definieren Module für jeden Berechnungsschritt, so dass es einfacher ist, den zugrunde liegenden Berechnungsgraphen zu verstehen. Das folgende Diagramm zeigt schematisch die gesamte Architektur von X-ROCKET. Eine Eingangszeitreihe wird mehreren Dilatationsblöcken parallel zugeführt, von denen jeder aus einem Faltungsmodul, einem Kanalmischmodul und einem Schwellenwert-Pooling-Modul besteht. Nach der sequentiellen Verarbeitung der Daten in seinen Untermodulen gibt jeder Dilatationsblock einen Vektor von Einbettungen aus. Schließlich werden diese Einbettungen zusammengefügt, um die vollständige X-ROCKET-Ausgangseinbettung zu bilden, die von nachgelagerten Modellen aufgegriffen werden kann, um eine Vorhersage zu erstellen - in unserem Fall eine Klassifizierung. Beachten Sie, dass die Interpretierbarkeit der endgültigen Vorhersage davon abhängt, wie erklärbar das nachgelagerte Vorhersagemodell ist. Während erklärbare KI (XAI) ein sehr aktives Forschungsgebiet ist, mit einer ganzen Literatur, die sich damit beschäftigt, Algorithmen erklärbar zu machen, folgen wir dem Vorschlag der Originalautoren, relativ einfache Vorhersageköpfe zu verwenden, die ohne zusätzliche Raffinesse erklärbar sind. Vollständiger Überblick über die X-ROCKET-Architektur. Im Folgenden werde ich die verschiedenen Module, aus denen X-ROCKET besteht, näher erläutern. ROCKET-Konvolutionen Der erste Schritt bei der Verarbeitung der Daten besteht in der Anwendung von Faltungskernen, die nach festen Mustern in den Daten suchen. Da wir es mit Zeitreihen zu tun haben, sind 1-dimensionale Kerne die richtige Wahl. Die nachstehende Zeichnung veranschaulicht, wie die Faltungen angewendet werden. Bei einer Sequenz von Eingabedaten werden Faltungskerne angewandt, indem sie über die Eingabe geschoben und die elementweisen Produkte im jeweiligen Fenster summiert werden. Auf diese Weise wird die Eingabe nach dem Vorkommen des jeweiligen Musters durchsucht, was zu einer Ausgabe führt, die die gleiche Form wie die Eingabe hat. In der folgenden Abbildung ist zu erkennen, dass die Ausgabesequenz immer dann große Werte aufweist, wenn die Eingabe eine Spitze aufweist. Umgekehrt ist die Ausgabe negativ, wenn es eine Senke in der Eingabe gibt. Das liegt daran, dass in diesem Beispiel die Eingabe nach dem Muster [-1, 2, -1] gefiltert wird, das selbst die Form eines Spikes hat. X-ROCKET verwendet dieselben 84 Filter mit einer Länge von neun Werten wie in Dempster et al. (2021) vorgeschlagen, aber im Gegensatz zu den Originalautoren polstern wir die Eingaben immer auf, um Ausgabesequenzen gleicher Länge zu erhalten. Um die Erklärbarkeit in diesem Schritt aufrechtzuerhalten, genügt es, die jeder Ausgangssequenz entsprechenden Kernel zu speichern. Illustration einer 1D-Faltung. Kanalmischung Bei multivariaten Zeitreihen, d. h. bei Zeitreihen mit mehreren Kanälen, kann es sinnvoll sein, Korrelationen von Mustern in mehreren Kanälen zu berücksichtigen. Während sich die ursprüngliche Implementierung hauptsächlich auf den univariaten Fall konzentriert und vorschlägt, zufällige Kombinationen von ROCKET-Faltungen naiv zu addieren, möchten wir einen ausgewogenen Vergleich von Merkmalen bieten. Daher entfernt X-ROCKET die Zufälligkeit und bietet stattdessen die Möglichkeit, den Merkmalspool mit Kanalkombinationen bis zu einer bestimmten Reihenfolge zu erweitern. Als zusätzliche Option können Kanäle multiplikativ statt additiv kombiniert werden, um dem Konzept einer Korrelation näher zu kommen. Die Erklärbarkeit in diesem Schritt wird dadurch gewährleistet, dass die Kanäle, aus denen die gemischten Ergebnisse gebildet wurden, gespeichert werden. Illustration von Kanalkombinationen. PPV-Schwellenwert-Pooling Die bisherigen Transformationen haben den Umfang der Daten keineswegs verringert. Das heißt, die Anwendung mehrerer Faltungsfilter auf jeden Kanal und das Hinzufügen von Kombinationen der Eingangskanäle zu den einkanaligen Faltungsausgängen führt zu einer weitaus größeren Anzahl von Ausgangskanälen gleicher Länge als ursprünglich eingegeben. Daher ist es an der Zeit, die zeitliche Dimension durch einen Pooling-Mechanismus zu reduzieren. In Anlehnung an die Vorschläge des Originalpapiers wendet X-ROCKET das Proportion-of-Positive-Values-Pooling (PPV) an. Genauer gesagt werden die Werte in jedem Zwischenkanal mit einem oder mehreren Schwellenwerten pro Kanal versehen, wobei die Schwellenwerte automatisch auf der Grundlage repräsentativer Beispiele in einem ersten Anpassungsschritt ausgewählt werden. Anschließend zählt PPV den Anteil der Werte, die den jeweiligen Schwellenwert über die Zeitachse hinweg überschreiten. Die sich daraus ergebenden Prozentsätze dienen schließlich direkt als Merkmalswerte im Einbettungsvektor. Zur Erklärung können die Elemente im Embedding also eindeutig mit einer Kombination aus Faltungs-Kernel, einem oder mehreren Eingangskanälen und einem Schwellenwert verknüpft werden. Veranschaulichung der Zusammenführung der Anteile positiver Werte über Schwellenwerte. Dilatationsblöcke Da die betrachteten Faltungskerne nur neun Beobachtungen umfassen, ist die Kapazität des Modells bisher auf die Erkennung einer sehr engen Gruppe von Eingangsmerkmalen beschränkt. Um dies zu ändern, werden mehrere Dilatationswerte gleichzeitig auf identische Kernel angewandt, um deren rezeptive Felder zu erweitern. X-ROCKET erreicht dies in der Praxis, indem es die oben erwähnte Abfolge von Faltung, Kanalmischung und PPV-Schwellwertbildung in mehreren Dilatationsblöcken parallel ausführt. Im Prinzip sind Dilatationen ein Standardverfahren im Zusammenhang mit CNNs, aber die meisten Architekturen verwenden in jedem Schritt nur einen einzigen Wert. Eine ähnliche Idee hat sich jedoch kürzlich als vielversprechend erwiesen, um die kontextuellen Fähigkeiten von LLMs drastisch zu verbessern, indem Kontextfenster durch dilatierte Aufmerksamkeit vergrößert werden (siehe Ding et al. (2023) ). Um besser zu verstehen, wie die Filterdilatation funktioniert, betrachten Sie die folgende Zeichnung. Die Anwendung eines Dilatationswerts bedeutet, dass der Kernel über einen längeren Zeitraum gestreckt wird und dadurch niedrigere Frequenzen nach den entsprechenden Mustern durchsucht werden. Beispielsweise zeigt die resultierende Aktivierung mit einem Dilatationswert von zwei das Auftreten des Musters bei der Hälfte der Datenfrequenz an. Für die Erklärbarkeit ist es daher wichtig, auch den Dilatationswert zu speichern, der jedem Einbettungselement entspricht. Veranschaulichung von Frequenzdilatationen. Das vollständige Modell Um zum vollständigen Modell zurückzukehren, können wir nun die Teile zusammensetzen. Um den Encoder zu initialisieren, müssen wir einige Hyperparameter wählen, die die genaue Struktur des Modells bestimmen. Zunächst muss die Anzahl der Eingangskanäle in_channels entsprechend der Anzahl der Kanäle in den Daten festgelegt werden. Zweitens muss für die automatische Auswahl der zu berücksichtigenden Dilatationswerte eine Obergrenze für die Breite der rezeptiven Faltungsfelder festgelegt werden, die sogenannte max_kernel_span . Normalerweise wählt X-ROCKET dann 20-30 verschiedene Frequenzen aus, die berücksichtigt werden. Als nächstes bestimmt die combination_order , wie viele Kanäle bei der Suche nach Korrelationen miteinander kombiniert werden. Standardmäßig ist dieses Schlüsselwortargument der Einfachheit halber auf 1 gesetzt. Schließlich begrenzt feature_cap die Dimensionalität der Ausgabe standardmäßig auf 10.000 Merkmale. X-ROCKET baut dann den Feature-Pool deterministisch auf, d.h. es wird darauf geachtet, alle Kanal-Dilatations-Kernel-Kombinationen zu berücksichtigen. Daher muss die resultierende Anzahl von Merkmalen ein Vielfaches aller möglichen Kombinationen sein und liegt nicht notwendigerweise in der Nähe des angegebenen Wertes. Wenn innerhalb der Merkmalsobergrenze noch Platz ist, werden im Pooling-Schritt mehrere Schwellenwerte auf jede Kanal-Dilatations-Kernel-Kombination angewendet, um zusätzliche Merkmale zu erzeugen. Um schließlich die Einbettungen in Vorhersagen umzuwandeln, muss der Encoder mit einem Vorhersagemodell kombiniert werden. Da wir an der Interpretierbarkeit interessiert sind, sind erklärbare Modelle hier die richtige Wahl. Nachdem das Problem durch den X-ROCKET-Encoder effektiv tabellarisch strukturiert wurde, sind viele Modelle für tabellarische Daten geeignete Kandidaten. Zum Beispiel bietet scikit-learn eine große Auswahl an aufschlussreichen Algorithmen für tabellarische Daten. Auch Gradient-Boosting-Algorithmen wie XGBoost sind leistungsstarke Alternativen. Beachten Sie, dass die Standardisierung der Einbettungsvektoren ein wesentlicher Zwischenschritt sein kann, um die Interpretierbarkeit einiger dieser Vorhersagealgorithmen zu gewährleisten. Schließlich ist es mit dem X-ROCKET-Code im PyTorch -Framework auch einfach, den Encoder mit einem tiefen neuronalen Feed-Forward-Netzwerk zu kombinieren. Alles, was über eine einzelne lineare Schicht hinausgeht, könnte jedoch auch in diesem Fall schwer zu interpretieren sein. Im nächsten und letzten Teil werde ich ein einfaches Anwendungsbeispiel der X-ROCKET-Implementierung zeigen, das auch veranschaulicht, welche Art von Erkenntnissen man neben der reinen Vorhersageleistung aus X-ROCKET ableiten kann. 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). Ding, J., Ma, S., Dong, L., Zhang, X., Huang, S., Wang, W., & Wei, F. (2023). Longnet: Scaling transformers to 1,000,000,000 tokens. arXiv preprint arXiv:2307.02486 . Die Zeichnungen wurden in excalidraw erstellt. 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 .

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?


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