はじめに
「ニューラルネットワーク」という言葉を聞くと、難しそうに感じる方も多いと思います。でも実は、Pythonのライブラリを使えばシンプルなものなら数十行で実装できます。
僕がE資格の勉強でニューラルネットワークを初めて実装したとき、「意外と書けるじゃないか」と思いました。この記事では、ニューラルネットワークの仕組みから実装まで、できるだけわかりやすく解説します。
ニューラルネットワークとは
ニューラルネットワークは、人間の脳の神経回路(ニューロン)を模倣した機械学習モデルです。入力層・隠れ層・出力層という3つの層が基本構造です。
データは入力層から受け取られ、隠れ層で複雑な変換が行われ、出力層から予測結果が出ます。隠れ層を増やすと「ディープラーニング」になります。
実装の準備
まずは必要なライブラリをインストールします。
pip install tensorflow scikit-learn numpy matplotlib
シンプルな分類モデルを実装する
Irisデータセット(花の分類)を使って実装してみます。
データの準備
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, to_categorical
import numpy as np
# データ読み込み
iris = load_iris()
X, y = iris.data, iris.target
# スケーリング
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# one-hotエンコーディング
y_onehot = to_categorical(y, num_classes=3)
# 分割
X_train, X_test, y_train, y_test = train_test_split(
X_scaled, y_onehot, test_size=0.2, random_state=42
)
モデルの構築
import tensorflow as tf
model = tf.keras.Sequential([
# 入力層(4特徴量)
tf.keras.layers.Dense(64, activation='relu', input_shape=(4,)),
# 隠れ層
tf.keras.layers.Dense(32, activation='relu'),
# 出力層(3クラス分類)
tf.keras.layers.Dense(3, activation='softmax')
])
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy']
)
model.summary()
学習と評価
history = model.fit(
X_train, y_train,
epochs=100,
batch_size=16,
validation_split=0.2,
verbose=1
)
# テストデータで評価
loss, accuracy = model.evaluate(X_test, y_test)
print(f"テスト精度: {accuracy:.3f}")
学習曲線の可視化
学習の推移を確認することで、過学習していないかチェックできます。
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 4))
# 精度の推移
plt.subplot(1, 2, 1)
plt.plot(history.history['accuracy'], label='訓練')
plt.plot(history.history['val_accuracy'], label='バリデーション')
plt.title('精度の推移')
plt.legend()
# ロスの推移
plt.subplot(1, 2, 2)
plt.plot(history.history['loss'], label='訓練')
plt.plot(history.history['val_loss'], label='バリデーション')
plt.title('ロスの推移')
plt.legend()
plt.tight_layout()
plt.show()
主要な活性化関数
隠れ層でよく使われる活性化関数の特徴を押さえておきましょう。
- ReLU:最も広く使われる。計算が速く、勾配消失が起きにくい
- Sigmoid:出力を0〜1に変換。二値分類の出力層で使う
- Softmax:多クラス分類の出力層で使う。確率の合計が1になる
- tanh:出力が-1〜1。隠れ層で使われることもある
まとめ
ニューラルネットワークの実装で押さえるべきポイントをまとめます。
- 基本構造は「入力層→隠れ層→出力層」
- TensorFlow/Kerasを使えば数十行で実装できる
- スケーリングと活性化関数の選択が重要
- 学習曲線で過学習をチェックする
- 分類ならcategorical_crossentropy、回帰ならmse
最初はシンプルな実装から始めて、少しずつ層を増やしたり正則化を加えたりしながら試行錯誤してみてください。
📌 プログラミング・AI学習のおすすめスクール
- 資格と仕事に強い個人レッスン → 【Winスクール】プログラミング・AI講座

※本記事にはアフィリエイトリンクが含まれます。


コメント