Středa , 25 Červen 2025
Domů Programování Simulace & strojové učení
ProgramováníPythonStrojové učeníUmělá inteligence

Simulace & strojové učení

blank
blank

Simulace v kontextu strojového učení je často zaměřena na vytváření modelů, které napodobují určité jevy nebo systémy. Jako příklad uveďme vytvoření jednoduchého programu, který simuluje lineární regresi. V tomto příkladě budeme „simulovat“ vztah mezi dvěma proměnnými.

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# Vytvoříme data pro trénink
X_train = np.linspace(0, 10, 100)
y_train = 2 * X_train + 1 + np.random.normal(0, 1, 100)

# Definujeme model - jednoduchý lineární model y = a*X + b
class LinearModel:
    def __init__(self):
        self.weight = tf.Variable(10.0)
        self.bias = tf.Variable(10.0)

    def __call__(self, x):
        return self.weight * x + self.bias

model = LinearModel()

# Definujeme funkci ztráty - použijeme mean square error
def loss(y_true, y_pred):
    return tf.reduce_mean(tf.square(y_true - y_pred))

# Definujeme optimalizační algoritmus - použijeme gradient descent
optimizer = tf.optimizers.SGD(learning_rate=0.1)

# Trénovací smyčka
for i in range(1000):
    with tf.GradientTape() as tape:
        y_pred = model(X_train)
        current_loss = loss(y_train, y_pred)

    grads = tape.gradient(current_loss, [model.weight, model.bias])
    optimizer.apply_gradients(zip(grads, [model.weight, model.bias]))

# Výsledky
print(f'Weight: {model.weight.numpy()}, Bias: {model.bias.numpy()}, Loss: {loss(y_train, model(X_train)).numpy()}')

# Vykreslení dat a naučeného modelu
plt.scatter(X_train, y_train, label='Data')
plt.plot(X_train, model.weight.numpy() * X_train + model.bias.numpy(), 'r-', label='Predicted')
plt.legend()
plt.show()

V tomto příkladě jsme „simulovali“ proces učení lineárního modelu na základě tréninkových dat. Model se učil, jak napodobit vztah mezi vstupem X_train a výstupem y_train. Po dokončení tréninku jsme vytiskli váhu a zkreslení modelu a nakreslili jsme data a předpovědi modelu.

Je důležité poznamenat, že simulace v kontextu strojového učení mohou být mnohem složitější a mohou zahrnovat takové úlohy, jako je simulace fyzikálních systémů, chování agentů v prostředí, biologické procesy a mnoho dalšího.Tento příklad je dobrým výchozím bodem pro pochopení základního procesu simulace v kontextu strojového učení.

Výsledkem tohoto konkrétního příkladu je lineární model, který byl naučen napodobovat vztah mezi vstupními a výstupními daty. Po tréninku by měl model umět předpovědět výstup (y) pro daný vstup (X) s určitou mírou přesnosti. Tato přesnost je dána hodnotou funkce ztráty – čím nižší je tato hodnota, tím lépe model napodobuje data.

Výsledný model je také vizualizován pomocí matplotlib, takže můžete vidět, jak dobře se naučil napodobovat data. Červená čára na grafu představuje předpovědi modelu a bodový graf představuje skutečná data. Měli byste vidět, že červená čára se pokouší co nejlépe se přizpůsobit bodům na grafu.

blank

V kódu výše jsem poskytl základní kostru pro vytvoření lineárního modelu v TensorFlow, který je schopen se učit z dat. Ale chybějí některé klíčové prvky potřebné k tomu, aby tento kód správně fungoval a vytvořil předpovězenou červenou čáru v grafu.

Kód tak, jak je nyní, vytvoří pouze datový bodový graf bez červené čáry, protože v kódu chybí fáze tréninku a predikce modelu. Model je sice definován (pomocí tf.keras.layers.Dense(1)), ale nikdy není trénován na datech ani použit k predikci.

Zde je dokončený kód:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# Create a simple linear model
model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=[1])
])

# Compile the model
model.compile(optimizer='sgd', loss='mean_squared_error')

# Provide the data
X = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
y = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float)

# Train the model
model.fit(X, y, epochs=500)

# Predict using the model
y_pred = model.predict(X)

# Plot the results
plt.scatter(X, y, color='blue')
plt.plot(X, y_pred, color='red')
plt.show()

Tento kód vytvoří a natrénuje lineární model na datech X a y, poté použije model k předpovědi y_pred pro dané X. Výsledky jsou poté zobrazeny v grafu. Modré body představují původní data a červená čára představuje předpovědi modelu.

blank

Zanechte komentář

Napsat komentář

Související články

blank
Strojové viděníUmělá inteligence

Strojové vidění & AI v průmyslu: Moderní řešení výroby a kontroly kvality

📸 ÚvodStrojové vidění ve spojení s umělou inteligencí (AI) mění průmyslové provozy:...

blank
Kvantové počítačeStrojové učeníUmělá inteligence

Kvantové strojové učení

⚛️ Úvod do kvantového strojového učeníKvantové strojové učení (Quantum Machine Learning, QML)...

blank
ProgramováníStrojové učeníUmělá inteligence

Neuromorfní čipy vs. GPU/TPU

Top články Neuromorfní čipy vs. GPU/TPU 19. 6. 2025 Edge-AI v IoT:...

blank
Umělá inteligence

Edge-AI v IoT: Výzvy a řešení pro inteligentní zařízení

🌐 Co je Edge-AI v IoT?Edge-AI kombinuje umělou inteligenci (AI) a Internet...