Cypher (Abfragesprache)

Was ist die Abfragensprache Cypher?

Cypher ist eine deklarative Abfragensprache, die für die Arbeit mit Graphdatenbanken entwickelt wurde. Graphdatenbanken sind spezialisierte Datenbanken, die Daten in Form von Knoten und Kanten in einem Graphenmodell organisieren. Knoten repräsentieren Entitäten, während Kanten Beziehungen zwischen den Entitäten darstellen. Eine der führenden Graphdatenbank ist Neo4j, wofür Cypher speziell entwickelt wurde.

Mit Cypher ist es möglich, komplexe Muster und Beziehungen in einem Graphen zu suchen, zu analysieren und zu manipulieren. Somit können komplexe Abfragen und Operationen auf graphenbasierten Datenstrukturen effizient und einfach durchgeführt werden. 

Syntax

Die Syntax von Cypher ist einfach und intuitiv, was die Arbeit mit graphenbasierten Datenstrukturen erleichtert. Eine grundlegende Abfrage besteht aus einer Kombination von Mustern, die auf den Graphen angewendet werden, um nach bestimmten Entitäten oder Beziehungen zu suchen. Ein Muster in Cypher wird in der Regel in Klammern geschrieben und kann aus Knoten, Kanten oder beidem bestehen.

Ein einfaches Beispiel für eine Cypher-Abfrage sieht folgendermaßen aus:

MATCH (n:Person)-[:FOLLOWS]->(m:Person)
WHERE n.name = 'Alice'
RETURN m.name

In dieser Abfrage wird nach Personen (Knoten mit dem Label „Person“) gesucht, die von einer bestimmten Person namens Alice gefolgt werden. Das Muster „(n:Person)-[:FOLLOWS]->(m:Person)“ gibt an, dass es eine Beziehung mit dem Namen „FOLLOWS“ von einem Knoten mit dem Label „Person“ zu einem anderen Knoten mit dem Label „Person“ geben muss. Die „WHERE“-Klausel stellt eine Bedingung für die Suche nach Personen mit dem Namen „Alice“ und die „RETURN“-Klausel gibt den Namen der gefundenen Personen zurück.

Anwendungsbereiche von Cypher

Cypher wird in verschiedenen Anwendungsbereichen eingesetzt, um komplexe Abfragen und Operationen auf graphenbasierten Datenstrukturen durchzuführen. Hier sind drei häufige Anwendungsbereiche von Cypher:

  • Soziale Netzwerkanalyse: Cypher eignet sich ideal für die Analyse von sozialen Netzwerken, da diese oft als Graphen modelliert werden. So können Beziehungen zwischen Personen, Organisationen oder anderen Entitäten in einem sozialen Netzwerk effizient untersucht werden. Zum Beispiel können Abfragen verwendet werden, um gemeinsame Freunde, Influencer oder zentrale Akteure in einem sozialen Netzwerk zu identifizieren.
  • Empfehlungssysteme: Cypher kann auch zur Erstellung von Empfehlungssystemen verwendet werden, die auf graphenbasierten Datenstrukturen basieren. So werden komplexe Muster und Beziehungen zwischen Entitäten identifiziert werden, um personalisierte Empfehlungen für Benutzer zu generieren. Zum Beispiel können Abfragen in Cypher verwendet werden, um gemeinsame Interessen, Verbindungen oder ähnliche Profile von Benutzern zu finden, um Empfehlungen für Produkte, Dienstleistungen oder Inhalte zu erstellen.
  • Betrugsbekämpfung: Cypher wird auch zur Betrugsbekämpfung eingesetzt, da es ermöglicht, komplexe Beziehungen und Muster in großen Datenmengen zu analysieren. So können Abfragen erstellt werden, um verdächtige Verbindungen, ungewöhnliche Verhaltensmuster oder potenzielle Betrugsnetzwerke zu identifizieren. Dies kann in verschiedenen Branchen wie Finanzdienstleistungen, E-Commerce oder Versicherungen eingesetzt werden, um Betrugsfälle frühzeitig zu erkennen und zu verhindern.

C# (C-Sharp)

Was ist C# (C-Sharp)

C# (gesprochen C sharp) ist eine moderne, allgemeine, objektorientierte Programmiersprache, die von Microsoft entworfen und entwickelt wurde. Sie wurde erstmals im Jahr 2000 als Teil des .NET Framework eingeführt. C# ist eine statisch typisierte Sprache, was bedeutet, dass die Datentypen der Variablen deklariert werden müssen, bevor sie verwendet werden. Sie verfügt über eine Vielzahl integrierter Funktionen und Bibliotheken, darunter auch die Unterstützung von Arrays, die eine wichtige Datenstruktur in der Programmierung darstellen. C-Sharp-Arrays ermöglichen die Speicherung und Bearbeitung großer Datenmengen und eignen sich daher ideal für komplexe Berechnungen und Kalkulationen.

Die Programmierung mit C# bietet viele Vorteile, darunter seine Einfachheit und Lesbarkeit. C# hat eine prägnante und leicht zu lesende Syntax, die es zu einer hervorragenden Wahl für Anfänger macht. Außerdem ist C-Sharp aufgrund seiner Ähnlichkeit mit anderen Programmiersprachen wie Java und C++ leicht zu erlernen. Das eingebaute Garbage-Collection-System erleichtert das Schreiben und Verwalten von Code ebenfalls.

Die Zeit, die für das Erlernen von C-Sharp benötigt wird, kann je nach Hintergrund und Programmiererfahrung einer Person variieren. C# gilt jedoch als eine relativ leicht zu erlernende Programmiersprache. Die meisten Personen mit früherer Programmiererfahrung können C# innerhalb weniger Wochen bis Monate beherrschen. Programmieranfänger benötigen unter Umständen ein paar zusätzliche Monate, um die Sprache zu lernen.

Was sind Anwendungsbereiche von C#? (C-Sharp)

C-Sharp wird in einer Vielzahl von Anwendungsbereichen eingesetzt, z. B. für Desktop-Anwendungen, Videospiele, mobile Anwendungen, Webentwicklung und Cloud Computing. Zu den häufigsten Anwendungsfällen gehören die Erstellung von Windows-Desktop-Anwendungen, die Entwicklung von Spielen mit beliebten Game-Engines wie Unity und die Erstellung von Webanwendungen mit ASP.NET. C# wird auch häufig in der Backend-Webentwicklung verwendet, da es die Hauptsprache für Microsofts Webentwicklungs-Framework ASP.NET ist. Außerdem kann C# für die plattformübergreifende Entwicklung mit dem .NET Core Framework verwendet werden.

Entwicklungsumgebungen von C# (C-Sharp)

Microsoft Visual Studio

Wenn es um Entwicklungsumgebungen geht, ist Microsoft Visual Studio die beliebteste Wahl für die C#-Entwicklung. Visual Studio ist eine umfassende IDE, die Code-Hervorhebung, Debugging und viele andere Funktionen bietet, die bei der Entwicklung helfen. Darüber hinaus verfügt Visual Studio über einen robusten Satz integrierter Tools für die Webentwicklung mit ASP.NET, was es zu einer hervorragenden Wahl für Webentwickler macht.

JetBrains Rider

JetBrains Rider ist eine plattformübergreifende integrierte Entwicklungsumgebung für die .NET-Entwicklung. Es bietet eine Reihe von leistungsstarken Funktionen, einschließlich Code-Analyse, Code-Vervollständigung und Debugging. JetBrains Rider bietet auch die Integration mit vielen gängigen Versionskontrollsystemen, wie Git, GitHub und TFS. Darüber hinaus unterstützt Rider Plugins für die Entwicklung von Unity-Spielen, was es zu einer ausgezeichneten Wahl für Unity-Entwickler macht, die C-Sharp verwenden möchten. Rider bietet eine kostenlose Testphase, nach der eine Lizenz erworben werden muss.

MonoDevelop

MonoDevelop ist eine integrierte Open-Source-Entwicklungsumgebung für die C-Sharp-Entwicklung, die für Linux, macOS und Windows verfügbar ist. Sie bietet eine Reihe von Funktionen, einschließlich Code-Hervorhebung, Code-Vervollständigung und Debugging. MonoDevelop unterstützt auch Plugins, zum Beispiel für die Entwicklung von Unity-Spielen. MonoDevelop ist eine ausgezeichnete Wahl für Entwickler, die Open-Source-Tools bevorzugen und eine schlanke, plattformübergreifende Entwicklungsumgebung wünschen.

C# vs. C++

Im Vergleich zu C++ hat C# eine einfachere Syntax und ist leichter zu lesen und zu schreiben. C++ ist eine komplexere Sprache, die detailliertere Kenntnisse der Speicherverwaltung und Low-Level-Programmierkonzepte erfordert. Außerdem bietet C-Sharp einen unkomplizierteren Ansatz für die Programmierung und ist damit eine ausgezeichnete Wahl für Anfänger und Fortgeschrittene.

C# vs. Python

Im Vergleich zu Python hat C# einen stärker strukturierten und objektorientierten Ansatz für die Programmierung. Python ist eine dynamisch typisierte Sprache, was bedeutet, dass die Datentypen der Variablen zur Laufzeit bestimmt werden. C-Sharp ist statisch typisiert, was eine bessere Leistung und ein besseres Debugging ermöglicht. Zudem eignet sich C# besser für umfangreiche Anwendungen, während Python in der Regel für Skripte und Automatisierung verwendet wird.

ChatGPT

Was ist ChatGPT?

ChatGPT beschreibt einen sogenannten Chatbot, welcher auf Basis künstlicher Intelligenz mit Menschen interagieren kann. Chatbots sind grundsätzlich in der Lage, eine Kommunikation zwischen einem Menschen und einer Maschine aufzubauen.

Veröffentlicht wurde ChatGPT von dessen Entwickler OpenAI im November 2022 und gilt als Nachfolger der InstructGPT-Modelle. OpenAI ist ein amerikanisches Unternehmen, welches sich mit der Erforschung von künstlicher Intelligenz beschäftigt und unter anderem von Elon Musk sowie Microsoft unterstützt wird. Die 2015 gegründete Non-Profit-Organisation veröffentlichte unter anderem auch die Sprachmodule GPT-2 und GPT-3 sowie das Programm DALL-E und dessen Nachfolger DALL-E 2, welche in der Lage sind, mithilfe von maschinellem Lernen auf Basis von Textbeschreibungen Bilder zu erzeugen.

Wie funktioniert das Sprachmodell?

Während ChatGPT als Schwestermodell vom erwähnten InstructGPT gehandelt wird, baut der Algorithmus auf einem Modell von GPT-3, konkret der GPT-3.5-Serie, auf. In der neuesten Version nutzt ChatGPT die Iteration des Modells GPT-4.

Das Sprachmodell nutzt das sogenannte „Reinforcement Learning from Human Feedback (RLHF)“, wobei die Grundlagen des Modells durch überwachtes Lernen (supervised learning) gelegt werden. Dafür wurden menschliche Trainer eingesetzt, um Trainingsdaten zu generieren, indem sie sowohl die Rolle des Benutzers als auch jene des KI-Assistenten einnahmen.

Im zweiten Schritt unterstützten sie bei der Erstellung von Belohnungsmodellen für das bestärkende Lernen (reinforcement learning) des Modells durch Bewertung der erzeugten Antworten durch die Trainer. Darauf basierend konnten die Belohnungsmodelle durch Optimierung der Proximalpolitik verfeinert werden.

Online-Zugang

ChatGPT kann aktuell auf der Website von OpenAI aufgerufen und verwendet werden. Nach Registrierung mittels eines OpenAI-Accounts und erfolgter Anmeldung kann das Modell aktuell begrenzt kostenlos oder kostenpflichtig ohne Einschränkungen genutzt werden.

OpenAI erhofft sich in dieser Phase Feedback von Nutzern zu erhalten sowie die Erprobung der Stärken und Schwächen des Tools durch die Anwender. Die Nutzungsvereinbarungen stellen klar, dass das Sprachmodell nicht für Zwecke verwendet werden darf, welche die Rechte von Personen verletzen, um den Quellcode zu ermitteln, andere groß angelegte Modelle zu entwickeln, welche mit OpenAI konkurrieren oder die Datenausgabe damit zu deklarieren, dass diese von Menschen generiert wurde, obwohl dies nicht der Fall ist.

Das Sprachmodell ist darauf ausgelegt, im Dialogformat mit Anwendern zu kommunizieren. Dabei soll es auch in der Lage sein, auf Folgefragen innerhalb einer Konversation korrekt zu antworten. Dies ist möglich, da ChatGPT zustandsbehaftet ist und sich an frühere Eingabeaufforderungen erinnert, wodurch sich der Anwender darauf beziehen kann und dies vom Sprachmodell auch verstanden wird.

ChatGPT soll auch in der Lage sein, unangemessene und illegale Anfragen abzulehnen und Antworten zu verweigern. Limitierungen in der Funktion gibt das Unternehmen in jener Weise an, indem darauf hingewiesen wird, dass der Chatbot teilweise plausibel klingende, aber falsche und unsinnige Antworten generiert. Es wird auf die Ursachen dieses Verhaltens eingegangen und damit begründet, dass während des bestärkenden Lernens keine Quelle der Wahrheit vorhanden ist, beim überwachten Lernen das Wissen des menschlichen Trainers ausschlaggebend ist sowie eine konservative oder vorsichtigere Antwortpolitik dazu führt, dass Fragen unbeantwortet bleiben, obwohl das System diese richtig beantworten könnte. Des Weiteren können geringfügige Änderungen der Eingabe zu einer Änderung der ausgegebenen Antwort führen bzw. versucht das Modell bei mehrdeutigen Anfragen die beabsichtigte Fragestellung zu erraten und zu beantworten, anstatt eine Rückfrage zu stellen.

ChatGPT liefert oft sehr umfangreiche Antworten, da diese von den Trainern bevorzugt wurden und daher höher belohnt werden. Obwohl das Sprachmodell auf das Unterbinden von unangemessenen Anfragen trainiert ist, kann dies nicht zur Gänze verhindert werden.

Chatbot

Was ist ein Chatbot?

Unter einem Chatbot versteht man ein Dialogsystem, welches eine Kommunikation zwischen einem Menschen und einer Software aufbauen kann. Dabei besteht die Funktionsweise darin, dass ein Mensch eine Nachricht als Texteingabe oder mittels gesprochener Sprache eingibt und der Chatbot mittels einer sinnvollen Antwort darauf reagiert. In dieser Form soll eine Konversation aufgebaut werden, in welcher der Bot auf Datenbanken zurückgreift bzw. durch maschinelles Lernen oder Deep Learning trainiert wird und so die Antworten optimieren kann.

Um den Anschein einer Kommunikation mit einem realen Gegenüber zu verstärken, werden Chatbots oft gemeinsam mit sogenannten Avataren eingesetzt. Dabei handelt es sich um eine virtuelle Person bzw. Identität mit Foto, Namen und fiktiven menschlichen Eigenschaften.

Grundsätzlich werden 2 Arten von Chatbots unterschieden. Jene, welche eine Freitexteingabe erlauben und jene, welche auf Regeln basieren. Bei regelbasierten Bots werden Eingabeoptionen vorgeschlagen, welche ausgewählt werden können, um so eine Kommunikation aufzubauen. Freitext-Bots erlauben hingegen eine freie Eingabe und basieren auf dem sogenannten Natural Language Processing (NLP). Hierbei handelt es sich um eine Methode, bei welcher Maschinen die menschliche Sprache verstehen und interpretieren können.

Die Schwierigkeit besteht in der richtigen Deutung der Grammatik sowie der Herausforderung den Sinn und Zusammenhang von Sätzen richtig zu verstehen. Für diesen Fall wird maschinelles Lernen eingesetzt, während dies bei der Anwendung von regelbasierten Bots nicht erforderlich ist.

Programmierung und technische Grundlagen

Chatbots können in vielen verschiedenen Programmiersprachen wie beispielsweise Python, Java oder PHP umgesetzt werden. Python bietet mit einer Bibliothek namens „Chatterbot“ ein vorgefertigtes Rahmenkonstrukt, in welchem Trainingsdaten in sogenannten Korpora hinterlegt sind, welche Bots zum selbstständigen Lernen nutzen.

Neben der Möglichkeit des selbstständigen Aufbaus eines Chatbots, bestehen am Markt auch eine Vielzahl von vorgefertigten Open Source Chatbot-Entwicklungsframeworks wie beispielsweise „Microsoft Bot Framework“, „IBM Watson“ oder „Botpress“, welche oft ohne Programmierkenntnisse erstellt werden können und darüber hinaus auch Schnittstellen zu sozialen Diensten sowie Analysemöglichkeiten bieten.

Alle Lösungen (egal, ob selbst programmiert oder mittels Open Source Modulsystem zusammengestellt) basieren auf demselben Prinzip, indem sie auf eine menschliche Eingabe mit einer Ausgabe mit dem höchsten Konfidenzniveau der vorhandenen Daten antworten und die Qualität der Antwort für folgende Konversationen miteinbeziehen.

Anwendungsbereiche von Chatbots

Die Anwendungsgebiete für Chatbots sind sehr weitreichend. Sie können beispielsweise in folgenden Gebieten eingesetzt werden:

  • Helpdesk: Bei diesem Anwendungsfall interagiert der Kunde mit dem Chatbot, um eine Problem- oder Fragestellung zu beantworten. Diese Methode soll im ersten Schritt eine Kontaktaufnahme per Mail oder Telefon ersetzen und bringt dem Kunden den Vorteil, dass ihm im Erfolgsfall (rund um die Uhr) eine sofortige Lösung bzw. Antwort präsentiert wird. Sollte die Konversation mit dem Bot zu keinem Erfolg führen, besteht oft die Möglichkeit, im Nachgang über konventionelle Möglichkeiten in Kontakt zu treten. Durch die automatische Datensammlung lernt der Bot mit jeder Fragestellung eines Kunden hinzu und kann dieses Erlernte in Zukunft ausgeben.
  • Kaufberatung/Produktempfehlung: In Onlineshops wird diese Art von Bots, auch Service Bot genannt, oftmals eingesetzt, um eine „persönliche“ Beratung aufgrund individueller Vorlieben anzubieten. Dabei filtert der Bot aufgrund der gestellten Fragen und gegebenen Antworten passende Produkte oder Dienstleistungen und bietet diese dem Kunden an. Somit soll gewissermaßen der persönlichen Beratung im Internet entsprochen und durch das sofortige Kundenfeedback Daten bezüglich Vorlieben und Trends gesammelt werden.
  • Interne Anwendung im „Backoffice“: Unternehmen können Bots auch innerhalb des eigenen Unternehmens ohne externen Kundenkontakt einsetzen. Hierbei eignen sie sich beispielsweise als Anlaufstelle für interne Fragestellungen sowie auch zum Klassifizieren und Kategorisieren von Nachrichten, Beiträgen oder Anträgen. Auch die Verteilung von Nachrichten an zuständige Mitarbeiter kann durch Bots übernommen werden.

Computational Neuroscience

Was ist Computational Neuroscience?

Mit Computational Neuroscience wird erforscht, wie Nervensysteme ihre Informationen verarbeiten. Die computergestützte Simulation des Nervensystems und eine naturgetreue Abbildung von Vorgängen im Gehirn bilden die Grundlagen der Computational Neuroscience. Dabei werden die Verarbeitung von Sinneseindrücken beobachtet.

Neuro-Forscher entwickeln auf Basis von experimentell gewonnenen Daten mathematische Modelle, die schließlich durch neuronale Funktionen am Computer simuliert werden. Dabei werden Vorhersagen von Modellen für das neuronale Verhalten experimentell überprüft und optimiert.

Viele innovative Technologien profitieren bereits von Forschungserfolgen auf diesem Gebiet. Mit dem Wissen über Hirnfunktionen können inzwischen intelligente technische Hilfsmittel entworfen werden, wie etwa Fahrerassistenz-Systeme, selbstlernende Computer, Roboter und auch intelligente Prothesen. Ein zentrales Ziel besteht darin, dass Computermodelle dabei helfen, Fehlfunktionen des Gehirns und Ursachen für Krankheiten frühzeitig zu erkennen und zu heilen. Therapieansätze können mithilfe der Computational Neuroscience virtuell erprobt werden und helfen somit bei der stetigen Weiterentwicklung von realen Therapien und Studien.

Auf welche Modelle und Grundlagen stützt sich die Computational Neuroscience?

Die Grundlage der Computational Neuroscience baut auf die Weiterentwicklung von Künstlicher Intelligenz und dem Modell der künstlichen neuronalen Netze. Die künstlichen neuronalen Netze (KNN) kann man als mathematische Nachbildungen der Reizverarbeitung im Gehirn betrachten. Diese Nachbildungen sind untereinander verbundene künstliche Neuronen. Es werden anstelle von elektrischen oder chemischen Signalen der biologischen Systeme nun Algorithmen mit Zahlenwerten verarbeitet.

Auf diesem System baut zum Beispiel maschinelles Sehen auf. Die mathematische Modellierung leitet sich aus den Erkenntnissen der Neurowissenschaften, Biophysik und Theorie von dynamischen und von komplexen Systemen ab. Solche Modelle können wegen ihrer Komplexität meist ausschließlich computergestützt simuliert werden. Experimentelle Daten sind häufig Grundlage dieser Berechnungen, wie etwa der elektrophysiologischen Eigenschaften von Nervenzellen und Synapsen und den Netzwerkstrukturen in realen Nervennetzen.