Table of Contents

0. Wstęp

Niniejszy artykuł - Sieci neuronowe (C#) - ma na celu zilustrowanie podstawowych pojęć z zakresu sieci neuronowych za pomocą przykładów napisanych w C#. Równolegle, część z tu zaprezentowanych programów ma swoje odpowiedniki przeniesione do Delphi Object Pascala.

Dla kogo jest ten artykuł? Przede wszystkim dla programistów C#, którzy chcą zrozumieć, jak działają sieci neuronowe "od środka", bez korzystania z gotowych bibliotek i frameworków. Artykuł zakłada podstawową znajomość programowania w C# oraz podstaw matematyki (algebra liniowa, rachunek różniczkowy). I to w zasadzie tyle - reszta wiedzy jest przekazywana w trakcie lektury.

Pełne kody źródłowe dostępne są w repozytorium na GitHub.

Dostępna jest również wersja w formacie PDF.

Spis treści

Artykuł został podzielony na następujące rozdziały:

W rozdziale tym opisano regresję liniową (jako szczególny przypadek sieci neuronowej), metodę najmniejszych kwadratów, metodę spadku gradientowego do uczenia modelu, funkcję straty MSE oraz jej pochodne (względem współczynnika kierunkowego i wyrazu wolnego).

W rozdziale tym opisana została regresja wieloraka, macierze i implementacja podstawowych operacji macierzowych, które posłużą w dalszej części artykułu do konstrukcji sieci neuronowych.

Przedstawiono proces uczenia modelu regresji wielorakiej na rzeczywistych danych z zestawu Boston Housing z użyciem metod omówionych w rozdziale 2. Przedstawiono również sposób przygotowania danych do uczenia modelu (podział na zbiór uczący i testowy, standaryzacja).

Przedstawiono budowę i działanie prostej sieci neuronowej z jedną warstwą ukrytą, porównując ją z modelem regresji wielorakiej. Omówiono proces uczenia sieci za pomocą metody spadku gradientowego i reguły łańcuchowej. Przedstawiono podstawowe wzory na pochodne funkcji straty względem wag i biasów poszczególnych warstw sieci.

Przedstawiono strukturę i funkcjonalność biblioteki NeuralNetworks (C#), służącej do definiowania i trenowania modeli sieci neuronowych oraz do przeprowadzania procesu wnioskowania (inferencji) z użyciem tych modeli. Omówiono sposób definiowania architektury sieci, funkcji aktywacji, funkcji straty oraz metod optymalizacji dostępnych w bibliotece. Przedstawiono wzory matematyczne i implementacje podstawowych elementów, takich jak funkcje aktywacji, funkcje straty oraz algorytmy optymalizacji. Zaprezentowano również przykład użycia tej biblioteki do utworzenia modelu trenowanego na danych Boston Housing.

Zaprezentowano przykłady wykorzystania biblioteki NeuralNetworks do definiowania i trenowania modeli sieci neuronowych na zbiorze danych Boston Housing i MNIST (rozpoznawanie ręcznie pisanych cyfr).

Zaprezentowano sieci konwolucyjne 1D i 2D, omówiono ich architekturę, działanie oraz zastosowania. Przedstawiono wzory matematyczne opisujące operacje konwolucji, poolingu oraz normalizacji, a także implementacje tych operacji w C#. Omówiono również proces uczenia sieci konwolucyjnych za pomocą metody spadku gradientowego i reguły łańcuchowej. Omówiono zastosowanie sieci konwolucyjnych dla zbiorów ECG200 i MNIST.

Zaproponowano implementację modelu językowego GPT-2 w C# opartą o oryginalny kod w Pythonie zaprezentowany przez OpenAI, omijając proces trenowania modelu i korzystając z gotowych wag.

Reszta in progress...


Created: 2025-11-10

Last modified: 2026-02-08

Title: 0. Wstęp

Tags: [C#] [Object Pascal] [Delphi] [Sieci neuronowe] [Regresja liniowa]