Entwicklung & Code
Künstliche Neuronale Netze im Überblick 1: Das künstliche Neuron
Neuronale Netze sind der Motor vieler Anwendungen in KI und GenAI. Diese Artikelserie gibt einen Einblick in die einzelnen Elemente. Der erste Teil stellt das künstliche Neuron vor.
Prof. Dr. Michael Stal arbeitet seit 1991 bei Siemens Technology. Seine Forschungsschwerpunkte umfassen Softwarearchitekturen für große komplexe Systeme (Verteilte Systeme, Cloud Computing, IIoT), Eingebettte Systeme und Künstliche Intelligenz.
Er berät Geschäftsbereiche in Softwarearchitekturfragen und ist für die Architekturausbildung der Senior-Software-Architekten bei Siemens verantwortlich.
Ein künstliches Neuron ist der Grundbaustein jedes neuronalen Netzwerks. Sein Design ist von biologischen Neuronen inspiriert, aber seine mathematische Form ist viel einfacher und für Berechnungen gut geeignet. Im Kern empfängt ein künstliches Neuron eine oder mehrere numerische Eingaben, multipliziert jede Eingabe mit einem entsprechenden Gewicht, summiert die Ergebnisse, addiert einen Bias-Term und leitet die Summe dann durch eine nicht lineare Aktivierungsfunktion. In diesem Teil der Serie werde ich die mathematischen Grundlagen dieses Prozesses untersuchen und zeigen, wie er sich direkt in Code umsetzen lässt.
Betrachten wir ein Neuron mit den Eingaben x₁, x₂, …, xₙ und den lernbaren Parametern w₁, w₂, …, wₙ (die Gewichte) und b (die Vorspannung). Das Neuron berechnet die Größe
z = w₁·x₁ + w₂·x₂ + … + wₙ·xₙ + b
Dieser Ausdruck kann auch in kompakter Vektor-Matrix-Notation geschrieben werden als
z = wᵀ·x + b
wobei w und x n-dimensionale Spaltenvektoren sind. Den Skalar z bezeichnet man oft als Voraktivierung, da das Neuron, bevor es seine endgültige Ausgabe erzeugen kann, z durch eine Aktivierungsfunktion σ leiten muss, was zu
a = σ(z)
führt.
Der Bias-Term b ermöglicht es, die Aktivierungsfunktion nach links oder rechts zu verschieben, sodass das Netzwerk Muster anpassen kann, die nicht durch den Ursprung verlaufen. Die Gewichte wᵢ bestimmen die Stärke und Richtung des Einflusses jeder Eingabe auf die Ausgabe. Während des Trainings passt das Netzwerk diese Parameter an, um eine bestimmte Verlustfunktion zu minimieren.
In der Praxis implementieren wir ein einzelnes Neuron in PyTorch wie folgt:
import torch
# Beispiel-Eingaben und Parameter definieren
x = torch.tensor([0.5, -1.2, 3.3], dtype=torch.float32)
w = torch.tensor([0.1, 0.4, -0.7], dtype=torch.float32)
b = torch.tensor(0.2, dtype=torch.float32)
# Berechne die gewichtete Summe z = w·x + b
z = torch.dot(w, x) + b
# Wende eine Aktivierungsfunktion an (vorerst die Identität)
a = z
Jede Zeile in diesem Ausschnitt hat eine klare Aufgabe. Die erste Zeile importiert PyTorch, eine Bibliothek, die Tensorberechnungen beschleunigt und Operationen für die Gradientenberechnung automatisch durchführt. Die nächsten drei Zeilen erstellen eindimensionale Tensoren für Eingaben, Gewichte und Bias. Durch die Angabe von dtype=torch.float32
stellen wir sicher, dass alle Berechnungen mit 32-Bit-Gleitkommaarithmetik erfolgen, was Präzision und Leistung auf moderner Hardware balanciert.
Der Ausdruck torch.dot(w, x)
berechnet das Skalarprodukt der Tensoren w
und x
und führt die Summe der elementweisen Produkte (w₁·x₁ + w₂·x₂ + w₃·x₃) aus. Durch Hinzufügen von b
übertragen wir die skalare Vorspannung auf das Ergebnis, wodurch wir den vollständigen Wert z
vor der Aktivierung erhalten. Zu diesem Zeitpunkt ist die Ausgabe des Neurons einfach z, aber sobald wir eine nicht lineare Aktivierungsfunktion σ einführen, ersetzen wir die Zeile a = z durch a = σ(z).
Im Hintergrund zeichnet PyTorch die Operationen auf diesen Tensoren in einem Berechnungsgraphen auf. Wenn wir später z.backward()
aufrufen, durchläuft PyTorch diesen Graphen und berechnet automatisch die partiellen Ableitungen ∂z/∂wᵢ und ∂z/∂b. Diese automatische Differentiation ermöglicht es, Millionen von Parametern in großen Netzwerken ohne manuelle Ableitungsberechnungen zu optimieren.
Die mathematische Einfachheit einer einzelnen Nervenzelle täuscht über ihre Ausdruckskraft hinweg, sobald viele Nervenzellen zu Schichten und Netzwerken verbunden sind. Durch Anpassen ihrer Gewichte und Vorspannungen kann eine Nervenzelle lernen, lineare Kombinationen ihrer Eingaben zu erkennen. Wenn wir Dutzende oder Hunderte solcher Nervenzellen kombinieren und mit nicht linearen Aktivierungen verschachteln, kann das Netzwerk beliebig komplexe Funktionen approximieren.
Der nächste Teil der Serie zeigt, wie man viele künstliche Neuronen zu Schichten zusammenfügt, den Datenfluss zwischen ihnen definiert und den Vorwärtslauf eines kompletten Netzwerks in PyTorch implementiert.
(rme)
Entwicklung & Code
Neu in .NET 9.0 [31]: Verbesserte Ausgabe bei Debug.Assert()
Die altbekannte Methode Debug.Assert()
bietet eine kleine Verbesserung in .NET 9.0: Beim Fehlschlagen der übergebenen Bedingung sehen Entwicklerinnen und Entwickler in der Ausgabe die komplette fehlgeschlagene Bedingung.
Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.
So kam beispielsweise bei
var x = 42;
var y = 42;
…
Debug.Assert(x > 0 && y < 0);
vor .NET 9.0 diese Nachricht:
Assertion failed.
at Program.SomeMethod(Int32 a, Int32 b)
Nun sehen Entwicklerinnen und Entwickler seit .NET 9.0 eine ausführlichere Information:
Assertion failed.
x > 0 && y < 0
at Program.SomeMethod(Int32 a, Int32 b)
Damit dies funktioniert, gibt es eine neue Überladung der Methode Debug.Assert()
mit der Annotation [CallerArgumentExpression]
vor dem zweiten Parameter:
public static void Assert([DoesNotReturnIf(false)] bool condition,
[CallerArgumentExpression("condition")] string? message = null);
Vor .NET 9.0 konnte man dies nur erreichen, indem man die Bedingung noch einmal explizit als Zeichenkette angab:
Debug.Assert(x > 0 && y < 0, "x > 0 && y < 0");
(rme)
Entwicklung & Code
Drei Fragen und Antworten: Welche Testmanagement-Tools lohnen sich?
Erst die Software entwickeln und das Ergebnis testen – das funktioniert nicht mehr. Die Qualitätssicherung beginnt heute frühzeitig im Entwicklungsprozess und benötigt gute Testmanagement-Tools. Aber wo trennt sich die Spreu vom Weizen? Wie findet man die Tools, die nicht bremsen, sondern unterstützen? Unser Titelautor Waldemar Klassen erklärt, wie sich der Markt entwickelt hat und worauf es ankommt.
Waldemar Klassen ist Analyst bei der techconsult GmbH, einem Unternehmen der Heise Group, und beschäftigt sich mit den Themenfeldern IoT, Big Data, digitale Nachhaltigkeit (CSR/ESG) und SAP S/4HANA.
Was sollte ein zeitgemäßes Testmanagement-Tool mitbringen?
Die Grundanforderungen haben sich nicht stark verändert. Testfälle verwalten, Ergebnisse dokumentieren, Anforderungsbezug sicherstellen. Was sich aber verändert hat, ist das Umfeld. Teams arbeiten heute iterativ, oft verteilt und mit vielen Tools parallel. Ein Testmanagement-Tool muss deshalb anschlussfähig sein, quasi ein Integrationshub. Das heißt einerseits technisch über Schnittstellen und andererseits organisatorisch den Prozess abdecken. Denn was ich beobachte, ist, dass die Tool-Landschaft fragmentierter wird. An sich kein Problem, wenn die Testprozesse ebenfalls hybrid werden und das Testmanagement-Tool andockfähig ist.
Wenn ich es jetzt in einem Satz beantworten soll: In DevOps-Umgebungen kommt es auf Echtzeit-Transparenz, offene Schnittstellen und eine stabile API an. Und gute Tools denken den gesamten Dev-Prozess mit, nicht nur das Testen.
Wie haben sich DevSecOps-Ansätze, die Security im Entwicklungsprozess von Anfang an mitdenken, auf Testabläufe und die Tools dafür ausgewirkt?
Security ist vom Rand in den Kern gerückt. Tests für Sicherheitsanforderungen, Compliance-Vorgaben oder Audits sind keine nachgelagerten Aktivitäten mehr, sondern integraler Bestandteil von Release-Zyklen. Testmanagement-Tools müssen also in der Lage sein, auch Security-Scans, statische Codeanalysen oder Schwachstellenprüfungen zu erfassen und nachvollziehbar zu dokumentieren. Wer heute DevSecOps ernst meint, braucht auch ein Testmanagement, das klassische Funktionstests mit Security-Anforderungen zusammenbringt. Einige Anbieter gehen inzwischen weiter und verknüpfen Findings aus SAST- oder DAST-Tools direkt mit dem Teststatus. Das funktioniert technisch aber nur wenn der Integrationsgedanke gelebt wird und kein Reibungskampf zwischen den Security- und Dev-Tools vorherrscht.
Gefühlt wird künstliche Intelligenz derzeit in so ziemlich jede Software integriert – welche Rolle spielt sie in diesem Bereich?
Noch eine zu starke Nebenrolle, wie ich finde, aber mit viel Potenzial. Testfälle automatisch vorzuschlagen, Logs zu analysieren oder Priorisierungen vorzunehmen – das erleichtert die Arbeit und steigert die Effizienz. Das funktioniert auch in vielen Pilotprojekten bereits, skaliert aber noch nicht flächendeckend. Die Anbieter sind da unterschiedlich weit. Viele arbeiten an KI-Funktionen, aber eher im Hintergrund. Die Dev-Teams sind zwar offen dafür, haben jedoch auch immer Sorgen, dass sie nicht mehr benötigt werden.
Ich finde, KI ohne Mensch dahinter funktioniert nicht und ist ein Werkzeug zur Unterstützung. „Nicht ersetzen, sondern entlasten“, ist meine Einstellung dazu, wie in der Marktübersicht auch gezeigt. Dazu zählt etwa das Auffinden redundanter Tests oder die Auswertung von Ergebnissen. Die Umsetzung und das Qualitätsmanagement bleiben beim Entwickler.
Herr Klassen, vielen Dank für die Antworten! Interessierte Leser finden im Titel der neuen iX alles zum Testmanagement: Wir beleuchten, was gutes Testmanagement ausmacht, zeigen in einer umfangreichen Marktübersicht, welche Software fürs Testmanagement es gibt, und erklären anhand des Open-Source-Tools TestLink, wie modernes Testmanagement funktioniert. Das August-Heft ist ab sofort im heise shop und am Kiosk erhältlich.
In der Serie „Drei Fragen und Antworten“ will die iX die heutigen Herausforderungen der IT auf den Punkt bringen – egal ob es sich um den Blick des Anwenders vorm PC, die Sicht des Managers oder den Alltag eines Administrators handelt. Haben Sie Anregungen aus Ihrer tagtäglichen Praxis oder der Ihrer Nutzer? Wessen Tipps zu welchem Thema würden Sie gerne kurz und knackig lesen? Dann schreiben Sie uns gerne oder hinterlassen Sie einen Kommentar im Forum.
(fo)
Entwicklung & Code
Bitte ohne KI: Sourcecode-Editor Zed bietet Ausschalter für KI-Funktionen
Wer den Sourcecode-Editor Zed verwendet, kann künftig mit einer Einstellung alle KI-Funktionen ausschalten. Damit reagieren die Projektverantwortlichen auf Wünsche aus der Community.
Das Team hinter dem Open-Source-Editor hatte im Mai 2025 in einem Blogbeitrag Zed zum schnellsten KI-Code-Editor erklärt. Zed ist von Grund auf in Rust geschrieben und seit Januar 2024 als Open-Source-Projekt unter GPL-Lizenz verfügbar. Seine Anfänge lagen auf macOS, im Juli 2024 folgte Linux und eine offizielle Windows-Version ist ebenfalls in Planung.
KI-Editor ohne KI
Auch wenn die oft nützlichen KI-Hilfen inzwischen für viele zum Alltag der Softwareentwicklung gehören, gibt es berechtigte Bedenken bezüglich der Codequalität und potenziell generierter Schwachstellen oder wegen der Daten und des Sourcecodes, die beim Einsatz der KI-Tools das Unternehmen verlassen.
Im GitHub-Repository des Editors finden sich bereits seit 2024 Diskussionen und Issues, die einen Ausschalter für KI-Funktionen wünschen.
Nun haben die Projektverantwortlichen reagiert und in der aktuellen Preview eine Einstellung in der settings.json-Datei eingeführt, die sämtliche KI-Funktionen deaktiviert:
{
"disable_ai": true
}
In Kürze ist zusätzlich ein Switch in den KI-Einstellungen innerhalb der UI des Editors geplant, der ebenfalls alle KI-Funktionen abschaltet.
Ein einzelner Klick in den Settings genügt demnächst, um die KI-Unterstützung zu deaktivieren.
(Bild: Zed)
Datenschutz trotz KI
Der Blogbeitrag zum Deaktivieren der KI-Funktionen betont, dass diejenigen, die vor allem Bedenken bezüglich des Datenschutzes haben, die KI-Funktionen nicht unbedingt deaktivieren müssen.
Zed lässt bei der Auswahl des KI-Anbieters freie Wahl und ermöglicht auch den Einsatz lokaler KI-Modelle mittels Ollama, damit der Code und die Daten den Rechner nicht verlassen.
Weitere Details zu den Hintergründen lassen sich dem Zed-Blog entnehmen.
(rme)
-
Datenschutz & Sicherheitvor 1 Monat
Geschichten aus dem DSC-Beirat: Einreisebeschränkungen und Zugriffsschranken
-
Online Marketing & SEOvor 1 Monat
TikTok trackt CO₂ von Ads – und Mitarbeitende intern mit Ratings
-
Apps & Mobile Entwicklungvor 1 Monat
Metal Gear Solid Δ: Snake Eater: Ein Multiplayer-Modus für Fans von Versteckenspielen
-
UX/UI & Webdesignvor 1 Monat
Philip Bürli › PAGE online
-
Digital Business & Startupsvor 4 Wochen
80 % günstiger dank KI – Startup vereinfacht Klinikstudien: Pitchdeck hier
-
Apps & Mobile Entwicklungvor 1 Monat
Patentstreit: Western Digital muss 1 US-Dollar Schadenersatz zahlen
-
Social Mediavor 1 Monat
LinkedIn Feature-Update 2025: Aktuelle Neuigkeiten
-
Social Mediavor 1 Monat
Aktuelle Trends, Studien und Statistiken