Skip to content

Commit

Permalink
Merge pull request #123 from trueberryless-org/refactor
Browse files Browse the repository at this point in the history
Refactor site structure with Sidebar Topics Dropdown Plugin
  • Loading branch information
trueberryless authored Feb 13, 2025
2 parents 9d36d75 + 89871f4 commit c5709dc
Show file tree
Hide file tree
Showing 56 changed files with 6,371 additions and 6,272 deletions.
5 changes: 5 additions & 0 deletions .changeset/thin-bulldogs-lie.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"starlight": patch
---

Refactor site structure with Sidebar Topics Dropdown Plugin
1,481 changes: 733 additions & 748 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

196 changes: 154 additions & 42 deletions starlight/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import rehypeMathjax from "rehype-mathjax";
import starlightImageZoom from "starlight-image-zoom";
import starlightViewModes from "starlight-view-modes";
import starlightLinksValidator from "starlight-links-validator";
import starlightSidebarTopicsDropdown from "starlight-sidebar-topics-dropdown";

// https://astro.build/config
// https://starlight.astro.build/reference/configuration/
Expand All @@ -29,12 +30,12 @@ export default defineConfig({
lastUpdated: true,
defaultLocale: "de",
locales: {
de: {
label: "Deutsch",
},
en: {
label: "English",
},
de: {
label: "Deutsch",
},
},
tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 3 },
expressiveCode: {},
Expand All @@ -45,49 +46,160 @@ export default defineConfig({
"@fontsource-variable/jetbrains-mono/wght.css",
],
components: {
DownloadFile: "./src/components/DownloadFile.astro",
},
sidebar: [
{
label: "Informationstechnologie",
collapsed: false,
translations: {
en: "Information Technology",
},
autogenerate: { directory: "information_technology" },
},
{
label: "Projektmanagement",
collapsed: false,
translations: {
en: "Project Management",
},
autogenerate: { directory: "project_management" },
},
{
label: "Sprachen",
collapsed: false,
translations: {
en: "Languages",
},
autogenerate: { directory: "languages" },
},
{
label: "Wirtschaft und Recht",
collapsed: false,
translations: {
en: "Economy and Law",
},
autogenerate: { directory: "economy_and_law" },
},
],
components: {
// DownloadFile: "./src/components/DownloadFile.astro",
Pagination: "./src/components/CustomPagination.astro",
},
plugins: [
starlightImageZoom(),
starlightLinksValidator(),
starlightViewModes(),
// starlightViewModes(),
starlightSidebarTopicsDropdown([
{
label: {
en: "Software Development",
de: "Softwareentwicklung",
},
icon: "puzzle",
link: "/software-development/object-oriented-programming",
items: [
{
label: "",
items: [
"software-development/object-oriented-programming",
"software-development/software-metrics",
"software-development/design-patterns/behavioral-design-patterns/command",
"software-development/design-patterns/behavioral-design-patterns/strategy",
"software-development/design-patterns/creational-design-patterns/singleton",
"software-development/design-patterns/structural-design-patterns/adapter",
"software-development/design-patterns/structural-design-patterns/decorator",
],
},
],
},
{
label: {
en: "Databases",
de: "Datenbanken",
},
icon: "document",
link: "/databases/relational-databases/",
items: [
{
label: "",
items: [
"databases/relational-databases",
"databases/document-oriented-databases",
"databases/schema",
"databases/cap-theorem",
],
},
],
},
{
label: {
en: "Artificial Intelligence",
de: "Künstliche Intelligenz",
},
icon: "star",
link: "/artificial-intelligence/",
items: [
{
label: "",
items: [
"artificial-intelligence",
"artificial-intelligence/python",
"artificial-intelligence/numpy",
"artificial-intelligence/pandas",
"artificial-intelligence/matplotlib",
"artificial-intelligence/seaborn",
"artificial-intelligence/machine-learning",
"artificial-intelligence/deep-learning",
"artificial-intelligence/supervised-learning",
"artificial-intelligence/natural-language-processing",
],
},
],
},
{
label: {
en: "Decentralised Systems",
de: "Dezentrale Systeme",
},
icon: "cloud-download",
link: "/decentralised-systems/cloud-computing/",
items: [
{
label: "",
items: [
"decentralised-systems/cloud-computing",
"decentralised-systems/storage-account",
"decentralised-systems/azure-functions",
"decentralised-systems/durable-functions",
],
},
],
},
{
label: {
en: "Embedded Systems",
de: "Hardwarenahe Programmierung",
},
icon: "laptop",
link: "/embedded-programming/",
items: [
{
label: "",
items: [
"embedded-programming",
"embedded-programming/basic-programm",
"embedded-programming/special-function-register",
"embedded-programming/light-emitting-diode",
"embedded-programming/button",
"embedded-programming/liquid-crystal-display",
"embedded-programming/interrupts",
"embedded-programming/analogue-digital-converter",
"embedded-programming/timer",
"embedded-programming/pointer",
"embedded-programming/usart",
"embedded-programming/spi",
"embedded-programming/eeprom",
],
},
],
},
{
label: {
en: "Deployment",
de: "Bereitstellung",
},
icon: "rocket",
link: "/deployment/virtualisation/",
items: [
{
label: "",
items: [
"deployment/virtualisation",
"deployment/storage-systems",
"deployment/security-strategies",
],
},
],
},
// {
// label: {
// de: "Überblick",
// en: "Overview",
// },
// icon: "magnifier",
// link: "/overview/",
// items: [
// {
// label: "",
// items: ["overview"],
// },
// ],
// },
]),
],
credits: true,
}),
Expand All @@ -97,6 +209,6 @@ export default defineConfig({
rehypePlugins: [rehypeMathjax],
},
redirects: {
"/": "/de/",
"/": "/en/",
},
});
8 changes: 4 additions & 4 deletions starlight/lunaria.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@
}
],
"defaultLocale": {
"label": "Deutsch",
"lang": "de"
"label": "English",
"lang": "en"
},
"locales": [
{
"label": "English",
"lang": "en"
"label": "Deutsch",
"lang": "de"
}
],
"dashboard": {
Expand Down
7 changes: 4 additions & 3 deletions starlight/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,20 @@
},
"dependencies": {
"@11ty/eleventy-fetch": "^4.0.1",
"@astrojs/starlight": "^0.29.2",
"@astrojs/starlight": "^0.31.1",
"@fontsource-variable/jetbrains-mono": "^5.0.21",
"@lunariajs/core": "^0.1.0",
"@zachleat/table-saw": "^1.0.6",
"astro": "^4.16.15",
"astro": "^5.1.10",
"astro-expressive-code": "^0.34.2",
"astro-feelback": "^0.3.4",
"rehype-mathjax": "^6.0.0",
"remark-expressive-code": "^0.34.2",
"remark-math": "^6.0.0",
"sharp": "^0.33.4",
"starlight-image-zoom": "^0.5.0",
"starlight-links-validator": "^0.7.1"
"starlight-links-validator": "^0.7.1",
"starlight-sidebar-topics-dropdown": "^0.3.0"
},
"devDependencies": {
"starlight-view-modes": "^0.5.3"
Expand Down
2 changes: 1 addition & 1 deletion starlight/src/components/CustomPagination.astro
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
import Pagination from "@astrojs/starlight/components/Pagination.astro";
import Pagination from "starlight-sidebar-topics-dropdown/overrides/Pagination.astro";
import FeedbackComponent from "./FeedbackComponent.astro";
const { entry } = Astro.props;
Expand Down
6 changes: 3 additions & 3 deletions starlight/src/content/config.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { defineCollection } from "astro:content";
import { docsSchema, i18nSchema } from "@astrojs/starlight/schema";
import { docsLoader } from "@astrojs/starlight/loaders";
import { docsSchema } from "@astrojs/starlight/schema";

export const collections = {
docs: defineCollection({ schema: docsSchema() }),
i18n: defineCollection({ type: "data", schema: i18nSchema() }),
docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
title: Deep Learning
---

Eine weiter Unterteilung im maschinellen Lernen ist das **Deep Learning** (DL). Die Besonderheit dieser Art von maschinellen Lernen ist die Aneinanderreihung von mehreren Schichten, welche die Daten von vorne nach hinten verarbeiten und Parameter in der `Backwards-Propagation` optimieren. Dadurch kann das Modell sehr komplexe Muster und Beziehungen erkennen. Allgemein kann man sagen, dass alle Neuronalen Netzwerke (Neural Networks) in die Kategorie „Deep Learning“ fallen.

Neben **Neuronalen Netzwerken** sind auch **Transformatoren** ein wichtiges Konzept im Deep Learning Bereich, da auch diese aus vielen `Layers` bestehen. Jede Architektur hat besondere Stärken in bestimmten Einsatzgebieten -- Transformatoren vor allem im generativen Sektor (Text-, Bild-, Videoerstellung).

Das Gegenteil des „Deep Learning“ (tiefen Lernens) ist das „Shallow Learning“ (flaches Lernen), welches alle anderen Algorithmen des maschinellen Lernens umfasst, wie zum Beispiel die `Support Vector Machine` (SVM), den `Random Forest Classifier` (RFC) oder ganz allgemein die verschiedenen mathematischen Methoden der `Regression`.

:::danger[Achtung]
Deep Learning bedeutet allerdings nicht zwangsmäßig, dass das Modell anschließend besser als Algorithmen des flachen Lernens sein muss. Deep Learning klassifiziert nur, dass das Modell aus mehreren Schichten (Layer) besteht.
:::
22 changes: 22 additions & 0 deletions starlight/src/content/docs/de/artificial-intelligence/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
title: Überblick
---

Künstliche Intelligenz (KI) bezeichnet die Fähigkeit von Maschinen, menschliche Intelligenz nachzuahmen, indem sie Aufgaben wie Lernen, Problemlösen und Entscheidungsfindung durchführen. Die Entwicklung der KI hat in der Vergangenheit drei bedeutende Hype-Phasen erlebt: in den 1960er, 1980er und 2010er Jahren.

## Geschichte & Entwicklung

In den 1960er Jahren erlebte die KI ihre erste Blütezeit, angetrieben durch frühe Fortschritte in der symbolischen KI und die Entwicklung der ersten neuronalen Netzwerke. Der zweite Hype in den 1980er Jahren wurde durch die Einführung von Expertensystemen und verbesserten Algorithmen beflügelt. Der jüngste und bislang bedeutendste Hype begann in den 2010er Jahren, als Fortschritte in der Hardware, wie leistungsfähigere und erschwinglichere GPUs, die Demokratisierung der KI ermöglichten. Gleichzeitig führte die Verfügbarkeit großer Datenmengen (Big Data) dazu, dass maschinelles Lernen und insbesondere Deep Learning enorme Fortschritte machten.

In den letzten Jahren hat die Entwicklung von KI einen weiteren Schub erhalten. Modelle wie ChatGPT, das öffentlich zugänglich gemacht wurde, demonstrieren die Leistungsfähigkeit moderner Sprachmodelle, die in der Lage sind, menschenähnliche Texte zu generieren und komplexe Anfragen zu beantworten. Heutzutage wird KI in vielen Bereichen inkludiert, darunter Gesundheitswesen, Finanzwesen, Bildung, Automobilindustrie und Kundenservice. Diese Anwendungen revolutionieren die Art und Weise, wie wir leben und arbeiten, und machen KI zu einem integralen Bestandteil unseres Alltags.

## Anwendungsbereiche

Künstliche Intelligenz (KI) hat in den letzten Jahren eine Vielzahl von Anwendungsbereichen gefunden, die unser tägliches Leben und verschiedene Industrien revolutionieren. Von der Medizin bis zum Verkehr bietet KI Lösungen, die Effizienz und Genauigkeit erhöhen. Hier sind einige der wichtigsten Anwendungsbereiche von KI:

- **Medizin**: Erkennung von Krankheiten und Unterstützung bei Diagnosen.
- **Finanzen**: Analyse von Finanzmärkten und Betrugserkennung.
- **Generierung** von Medien: Erstellen von Texten, Bildern und Videos.
- **Gesichtserkennung**: Sicherheitsanwendungen wie Überwachung und Zugangskontrolle.
- **Verkehr**: Autonomes Fahren und Verkehrssteuerung.
- **Chatbots**: Kundenservice und automatisierte Kommunikation.
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
title: Machine Learning
---

Maschinelles Lernen ist ein Bereich der Informatik, der es ermöglicht, Modelle zu trainieren, um Muster und Beziehungen in Daten zu erkennen. Der große Unterschied zum herkömmlichen Programmieren besteht darin, dass beim maschinellen Lernen anhand von unglaublich vielen Datensätzen (mit zugehörigen richtigen Antworten) **Regeln** erlernt werden, die dann auf neue Daten angewendet werden können, während ein Algorithmus anhand von festgelegten Regeln die **Antworten** findet. Folgendes Bild veranschaulicht dieses Konzept:

<img
src="/images/artificial_intelligence/machine_learning_concept_lm.png"
alt="ML Konzept"
class="light-only"
/>
<img
src="/images/artificial_intelligence/machine_learning_concept_dm.png"
alt="ML Konzept"
class="dark-only"
/>

## Umsetzung von KI-Projekten

Der Prozess des maschinellen Lernens ist im folgenden Diagramm dargestellt:

<img
src="/images/artificial_intelligence/machine_learning_process_lm.png"
alt="Prozess des maschinellen Lernens"
class="light-only"
/>
<img
src="/images/artificial_intelligence/machine_learning_process_dm.png"
alt="Prozess des maschinellen Lernens"
class="dark-only"
/>

Wie man sehen kann, beginnt dieser Prozess mit dem **Aggregieren** der Daten und **Bereinigung** dieser. Auch wenn man es nicht glaubt, machen diese Teilaufgaben **ca. 50-70%** des Arbeitsaufwandes vom gesamten Prozess aus. Hierbei muss besonders auf den Datenschutz der Kunden, die Datenqualität und die Datensicherheit geachtet werden. Die Daten selbst können im Internet gratis oder kostenlos gefunden werden. Saubere Daten sind Gold wert!

Der eigentliche interessante Teil beginnt dann beim Aufbereitung und Trainieren des Modells mit den Daten und dem anschließenden Testen. Hierbei gibt es einige Methoden der deskriptiven Statistik, um die Qualität des Modells zu beurteilen. Sobald der Kunde mit dieser zufrieden ist, kann das Modell in der Produktionsumgebung eingesetzt werden.

## Einordnung in die Kategorien

Maschinelles Lernen unterteilt sich hierbei in die drei großen Kategorien `Supervised Learning`, `Unsupervised Learning`, `Reinforcement Learning`.

- **Supervised Learning**
Das überwachte Lernen kategorisiert alle Aufgaben des Maschinellen Lernens, bei welchem das Trainieren mithilfe von Daten und zugehörigen richtigen bzw. gewollten Antworten stattfindet. Das Modell wird demnach auf eine Art „Soll-Zustand“ hintrainiert. Um die Datensätze möglichst effizient zu nutzen, werden meistens 70% der Ursprungsdaten für den Prozess des Trainierens verwendet und die restlichen 30% für das Testen der Genauigkeit des Modells.

Beispiele für das überwachte Lernen sind die Klassifizierung von Bildern, Texten, Sprache, Emotionen, die Erkennung von Spam-E-Mails, Empfehlungssysteme in Online-Shops oder gewissen Formen von Vorhersagen in bestimmten Bereichen.

Die größten Herausforderungen dieser Sparte sind das `Overfitting` und `Underfitting`. Aufgrund des Daseins der korrekten Antworten kann es geschehen, dass das Modell zu sehr and die Trainingsdaten trainiert wird und somit keine allgemein gültigen Regeln erstellen kann (`Overfitting`). Oder die Beschaffenheit der Daten, die falsch ausgewählte Architektur (Neuronales Netz) oder Algorithmus lässt keine allgemeinen Regeln erkennen (`Underfitting`).

Nichtsdestotrotz ist das überwachte Lernen das weit verbreitetste und am häufigsten genutzte Verfahren, da es sich als sehr effektiv erwiesen hat.

- **Unsupervised Learning**
Beim unüberwachten Lernen versucht der Algorithmus im Trainingsprozess die Daten in Gruppen zu clustern, um gemeinsame oder unterschiedliche Eigenschaften festzustellen. Dabei sind als Datengrundlage keine Antworten vorhanden und das Modell muss selbständig die Muster in den Daten erkennen.

Diese Sparte ist vor allem in Bereichen des Clustern vorzufinden. Beispielsweise kann man unbeaufsichtigtes Lernen in Echtzeit nutzen, um Muster in Kundenmerkmalen (Marketingabteilung), Anomalien (Betrugserkennung), Empfehlungssystemen oder selten auf der Bildverarbeitung zu identifizieren.

Diese Art des maschinellen Lernens wird nicht so häufig verwendet, da die Interpretierbarkeit der Ergebnisse, die Skalierbarkeit und Komplexität oft zu großen Problemen führt. Erstaunlicherweise basiert unser Gehirn jedoch am ehesten auf dieser Methodik, da in unseren frühen Lebensjahren ausschließlich Rohdaten eingespeist werden (Hören, Sehen, Schmecken, ...).

- **Reinforcement Learning**
Das verstärkende Lernen ist ein iterativer Prozess, bei welchem das Modell mithilfe des Belohnungssystems trainiert wird. Das Ziel des Modells ist die Maximierung der Belohnung, welches mit dem Ziel der Programmierer (Maximierung der Genauigkeit) stark korreliert. Außerdem werden schlechte Belohnungen bzw. Bestrafungen vom Modell vermieden, was bedeutet, dass die Bewerter des Modells bereits in der Trainingsphase die Robustheit und Fairness des Modells sicherstellen kann. Somit kann diese künstliche Intelligenz schwer manipuliert werden, schädliche Informationen preiszugeben, und hat keine Vorurteile.

Hierbei muss man bei der Implementierung des Learnprozesses jedoch aufpassen, nicht versehentlich das Belohnungssystem zu negieren. Dies ist nämlich wirklich einmal auch OpenAI passiert, weswegen [GPT-2 das unanständigste Modell](https://openai.com/index/fine-tuning-gpt-2/) in der Geschichte wurde ([YouTube](https://www.youtube.com/watch?v=qV_rOlHjvvs)).
Loading

0 comments on commit c5709dc

Please sign in to comment.