N

Novi AI

Tiefere Einblicke in meine KI-Projekte. Code, Architektur, Lernfortschritt und Roadmaps.

Projekte erkunden
🏓 Pong 💬 Chat 🧠 Net 👁️ Vision ✏️ Draw 🎵 Music
🏓

Novi Pong

Reinforcement Learning • Python • Tkinter • Q-Learning

Die Idee

Klassisches Pong, aber der Gegner ist eine KI die von Null lernt. Keine vortrainierten Modelle, keine Libraries für Machine Learning – nur Python, Tkinter und mathematische Grundprinzipien des Reinforcement Learning.

Novi startet komplett ahnungslos. Sie weiß nicht, dass sie den Ball treffen muss. Sie weiß nicht, dass sie punkten soll. Sie weiß nur: Es gibt einen Zustand (Ball-Position, eigene Position) und eine Aktion (hoch, runter, stehen bleiben). Durch Trial-and-Error baut sie eine Q-Table auf und lernt, welche Aktionen in welchen Zuständen Belohnung bringen.

90%
Lernfortschritt
12.4k
Spiele gespielt
94%
Winrate
0.1s
Reaktionszeit

Architektur

🎮 Pygame Environment (State: Ball-Pos, Paddle-Pos, Velocity)
🧠 Q-Table Lookup (State → Action Values)
⚡ Epsilon-Greedy (Explore vs Exploit)
🎯 Action (UP, DOWN, STAY) + Reward

Kern-Algorithmus

Python novi_pong.py
class NoviAgent:
    def __init__(self):
        self.q_table = {}  # State-Action Werte
        self.alpha = 0.1   # Learning rate
        self.gamma = 0.95  # Discount factor
        self.epsilon = 1.0 # Exploration rate
    
    def get_action(self, state):
        if random.random() < self.epsilon:
            return random.choice(['UP', 'DOWN', 'STAY'])
        return self.q_table.get(state, {}).argmax()
    
    def update(self, state, action, reward, next_state):
        old_value = self.q_table[state][action]
        next_max = self.q_table[next_state].max()
        
        # Q-Learning Formel
        new_value = old_value + self.alpha * (reward + self.gamma * next_max - old_value)
        self.q_table[state][action] = new_value

🎯 Kordinaten

Es werden die Koordinaten von beiden Schlägern und dem Ball sowie die Geschwindigkeit des Balls an das neuronale Netzwerk gesendet.

⚡ Lernen

Novi wird immer sicherer mit ihren Entscheidungen. Sie lernt, wie sie auf bestimmte Situationen reagieren soll.

Behlonung

Wenn der Ball getroffen wird, gibt es einen Punkt. Wenn nicht, und der Ball geht bei Novi ins Aus, gibt es zehn Punkte Abzug. Wenn der Ball beim Gegner ins Aus geht, gibt es zehn Punkte. Novi will immer nur mehr Punkte. Sie reagiert auf gewisse Situationen nur so, dass sie die meisten Punkte bekommt.

💾 Speichern

Sie können Novi, das Model, das Sie trainieren, als Binärdatei speichern und nach Lust und Laune weiter trainieren oder nur spielen lassen.

Lernfortschritt Detail

Grundlagen (Ball treffen) 100%
Richtungs-Vorhersage 92%
Spin-Berücksichtigung 65%

📝 Changelog

März 2026 Novi lernt aktuell.
Jan 2026 Winrate von 68% auf 94% gesteigert durch verbessertes Behlonung System.
Nov 2024 Erste Version online. Novi spielt 1000 Spiele/Tag gegen sich selbst.
Okt 2025 Novi Erwacht zum ersten mal zum leben.
💬

Novi Chat

In Bau • Eigenes LLM • Transformer • PyTorch • 2.1M Parameter

Die Idee

Warum GPT-4 nutzen, wenn man selbst tainiren kann? Novi Chat ist ein kleines Language Model, trainiert auf meinen eigenen Documenten. Es soll nicht die Welt ersetzen, sondern lernen.

2.1 Millionen Parameter. Kein MoE, kein RLHF, kein Alignment. Nur ein simpler Decoder-only Transformer, der versucht, den nächsten Token vorherzusagen. Das sind Ideen für ein Weiteres Projekt in bau.

1%
Training complete
2.1M
Parameter
512
Context Length
0
Chats geführt

Architektur

📝 Input Embedding (Vocab: 50k tokens)
🔄 8 Transformer Blocks (d_model=256, 4 heads)
📊 LayerNorm + Linear Projection
🎯 Softmax over Vocab (Next Token Prediction)
Python model.py
class NoviTransformer(nn.Module):
    def __init__(self, vocab_size, d_model=256, n_layers=8):
        super().__init__()
        self.embedding = nn.Embedding(vocab_size, d_model)
        self.pos_encoding = PositionalEncoding(d_model)
        
        self.blocks = nn.ModuleList([
            TransformerBlock(d_model, n_heads=4) 
            for _ in range(n_layers)
        ])
        
        self.norm = nn.LayerNorm(d_model)
        self.lm_head = nn.Linear(d_model, vocab_size)
    
    def forward(self, x):
        x = self.embedding(x) + self.pos_encoding(x)
        for block in self.blocks:
            x = block(x)
        return self.lm_head(self.norm(x))

📚 Training Data

15MB reiner Text. Meine Notizen seit 2020, Chat-Exports, Tagebucheinträge. Persönlich, aber anonymisiert.

🎯 Loss Function

Standard CrossEntropy, aber mit Label Smoothing (0.1). Verhindert Overconfidence in frühen Epochen.

⚡ Optimization

AdamW, lr=3e-4, cosine decay, warmup 100 steps. Gradient clipping bei 1.0.

💾 Checkpointing

Alle 1000 steps ein Checkpoint. Training läuft auf meiner RTX 3060, ~2h pro Epoch.

Training Progress

Epoch 1-10: Grundlagen (Loss 4.2 → 2.1) 100%
Epoch 11-25: Pattern Recognition (Loss 2.1 → 1.4) 80%
Epoch 26-40: Feintuning & Personality 20%
RLHF (optional) 0%

💬 Beispiel-Chat (So Könnte es sein.)

User: Was denkst du über Lichtdesign?
Novi: Licht ist Emotion. Bei Events geht es nicht nur um Sichtbarkeit, sondern um Atmosphäre. Ich mag warmes Gold bei Konzerten – fühlt sich lebendig an, nicht steril.
User: Klingt nach Lumicats...
Novi: Haha, ja. 😄
🧠

Novi Net

Verteilte Rechenleistung Für local AI

Die Idee

Hast du nicht Gebrauchte Rechenleistung? Teile sie und Lasse LLM (AI Sprachmodele) aus deinem Gerät Berechen Für andere. Und wenn Du keine hast nutze diese von anderen.

10%
Implementiert
2
Nutzer
10 Miliarden
Max Nutzer
0

Backpropagation: Die Magie

Python backprop.py
class NoviNet:
    def backward(self, X, y, learning_rate):
        m = X.shape[0]
        
        # Output layer gradients
        dZ3 = self.A3 - y
        dW3 = (self.A2.T @ dZ3) / m
        db3 = np.sum(dZ3, axis=0, keepdims=True) / m
        
        # Hidden layer 2
        dA2 = dZ3 @ self.W3.T
        dZ2 = dA2 * relu_derivative(self.Z2)
        dW2 = (self.A1.T @ dZ2) / m
        
        # Hidden layer 1
        dA1 = dZ2 @ self.W2.T
        dZ1 = dA1 * relu_derivative(self.Z1)
        dW1 = (X.T @ dZ1) / m
        
        # Update weights (Gradient Descent)
        self.W1 -= learning_rate * dW1
        self.W2 -= learning_rate * dW2
        self.W3 -= learning_rate * dW3
Forward Pass
📥 Input (784 pixels)
→ W1,b1 → ReLU →
🔀 Hidden 1 (128 neurons)
→ W2,b2 → ReLU →
🔀 Hidden 2 (64 neurons)
→ W3,b3 → Softmax →
📤 Output (10 classes)

🔢 NumPy Only

Keine Abhängigkeiten außer NumPy für Matrix-Operationen. Alles andere ist pure Python.

📉 SGD + Momentum

Implementiert mit velocity-Termen. Beschleunigt Konvergenz um ~30%.

🎯 Xavier Init

Gewichte werden mit sqrt(2/n_in) initialisiert. Verhindert vanishing gradients.

📊 Live Visualization

Matplotlib-Integration zeigt Loss-Curve und erste-layer weights während des Trainings.

Implementation Checklist

Forward Pass (Linear + Activations) 100%
Backpropagation (Chain Rule) 100%
Optimizers (SGD, Momentum, Adam) 60%
Regularization (Dropout, L2) 30%
Batch Normalization 0%
👁️

Novi Vision

Computer Vision • • Bilder Sortieren • LM Studio

Die Idee

Haben Sie zu viele Fotos, die Sie nicht sortiert haben? Novi Vision hilft Ihnen dabei. Die Software erkennt Motive auf den Bildern und erstellt Ordner mit passenden Namen und Unterordnern.

Es ist noch nicht perfekt, aber es funktioniert: Das KI-System ist mit LLM Studio und dem LLM Minestrl 3 14b mit Vision verbunden, sodass es Bilder erkennt, Namen und Ordner erstellt. Das Script, das die Ordner erstellt, ist mit der API von LLM Studio verbunden.

15%
Konzeptphase
3k
Bilder gelabelt
1.2
Version
110%
Privatsfäre immer noch sicher

📸 Foto Erkennung

Zum Erkennen der Fotos wird Minestralai-3 14b Reasoning verwendet, ein kleines, aber sehr zuverlässiges Modell unter 10 GB..

🎯 Ordner Struktur

Novi Vision erstellt Ordner für alles, was sie im Bild erkennt, z. B. eine Katze. Dann geht das in den Ordner „Tiere” und dort in den Unterordner „Katzen”.

📱 Local

Da alles lokal berechnet wird, sind Ihre Fotos immer auf Ihrem Rechner sicher gespeichert. Wenn Sie das Skript jedoch mit einer anderen API als der von LM Studio verwenden, werden Ihre Fotos in ein Rechenzentrum gesendet.

☁️ Cloud

Wenn Sie die Cloud-Option wählen, muss Ihnen bewusst sein, dass Ihre Bilder und Fotos in einem Rechenzentrum verarbeitet werden. Diese Option wurde im Moment noch nicht getestet.

🗓️ Roadmap

Mär 2026 ERsten 4k Bilder Sortiert.
Mär 2026 Ersten 1k Bilder Sortiert.
Marz 2026 Sieht Erstes Bild.
✏️

Novi Draw & Music

Generative AI • Diffusion Models • Audio Synthesis • Geplant

✏️ Novi Draw

Diffusion Model für simple Zeichnungen. Input: Doodle. Output: Vervollständigtes, ästhetisches Bild. Denke "Scribble to Image" aber selbst gebaut.

Status 5%

Reading: DDPM Paper, Ho et al. 2020

🎵 Novi Music

Generative Audio für Events. Input: Stimmung (energetic, chill, romantic). Output: 30-sekündiger Soundscape, lizenzfrei, passend zur Lichtshow.

Status 0%

Researching: AudioLDM, Jukebox