STEP 28:独立プロジェクト

🚀 STEP 28: 独立プロジェクト

自分で選んだテーマでディープラーニングプロジェクトを完成させよう!

📋 このステップの目標

  • 3つのプロジェクトから1つを選択
  • これまで学んだ技術を総合的に活用
  • 自分の力でモデルを構築・改善
  • ポートフォリオとして活用できる成果物を作成

🎯 プロジェクトを選ぼう

以下の3つのプロジェクトから、興味のあるものを1つ選んで取り組んでください。
各プロジェクトで使用する技術と難易度が異なります。

🎨 プロジェクトA: Fashion-MNIST 画像分類

CNN 入門

Tシャツ、ズボン、靴など10種類のファッションアイテムを画像から分類します。
MNISTの発展版で、CNNの実践的な活用を学べます。

  • データ:Fashion-MNIST(60,000枚訓練、10,000枚テスト)
  • 目標精度:92%以上
  • 使用技術:CNN、データ拡張、Batch Normalization
  • 推奨時間:60〜90分

📈 プロジェクトB: 株価予測(時系列予測)

RNN/LSTM 中級

過去の株価データから将来の価格を予測するモデルを構築します。
LSTMを使った時系列予測の実践的なスキルが身につきます。

  • データ:Yahoo Finance API または CSV
  • 目標:翌日の株価方向(上昇/下降)を60%以上の精度で予測
  • 使用技術:LSTM/GRU、シーケンス処理、正規化
  • 推奨時間:90〜120分

✍️ プロジェクトC: 手書き文字認識(日本語ひらがな)

CNN 上級

日本語のひらがな手書き文字を認識するモデルを構築します。
46クラス分類という複雑なタスクに挑戦します。

  • データ:Kuzushiji-49 または ETL9
  • 目標精度:85%以上
  • 使用技術:CNN、転移学習、データ拡張
  • 推奨時間:90〜120分

🎨 プロジェクトA: Fashion-MNIST 詳細

A-1. データセットの準備

import tensorflow as tf from tensorflow.keras.datasets import fashion_mnist import numpy as np import matplotlib.pyplot as plt # データの読み込み (X_train, y_train), (X_test, y_test) = fashion_mnist.load_data() # クラス名 class_names = [‘Tシャツ’, ‘ズボン’, ‘セーター’, ‘ドレス’, ‘コート’, ‘サンダル’, ‘シャツ’, ‘スニーカー’, ‘バッグ’, ‘ブーツ’] # データの確認 print(f”訓練データ: {X_train.shape}”) print(f”テストデータ: {X_test.shape}”) # サンプル画像の表示 fig, axes = plt.subplots(2, 5, figsize=(12, 5)) for i, ax in enumerate(axes.flat): ax.imshow(X_train[i], cmap=’gray’) ax.set_title(class_names[y_train[i]]) ax.axis(‘off’) plt.tight_layout() plt.show()

A-2. 要件

📌 必須要件
  • CNNモデルを構築する(Conv2D、MaxPooling2Dを使用)
  • 92%以上のテスト精度を達成する
  • 学習曲線を可視化する
  • 混同行列を作成し、誤分類されやすいクラスを特定する
💡 ヒント
  • データを(28, 28, 1)の形状にreshapeする
  • Batch Normalizationを追加すると学習が安定する
  • Dropoutで過学習を防ぐ
  • データ拡張(回転、シフト)も効果的

A-3. スターターコード

# 前処理 X_train = X_train.reshape(-1, 28, 28, 1).astype(‘float32’) / 255.0 X_test = X_test.reshape(-1, 28, 28, 1).astype(‘float32′) / 255.0 # One-hotエンコーディング from tensorflow.keras.utils import to_categorical y_train_cat = to_categorical(y_train, 10) y_test_cat = to_categorical(y_test, 10) # TODO: ここにCNNモデルを構築 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout, BatchNormalization model = Sequential([ # あなたのコードをここに追加 ]) # コンパイルと学習 model.compile(optimizer=’adam’, loss=’categorical_crossentropy’, metrics=[‘accuracy’]) # TODO: 学習を実行し、92%以上を目指す

📈 プロジェクトB: 株価予測 詳細

B-1. データセットの準備

# yfinanceのインストール(Google Colabで実行) !pip install yfinance -q import yfinance as yf import numpy as np import pandas as pd import matplotlib.pyplot as plt # 株価データの取得(例:Apple) ticker = “AAPL” data = yf.download(ticker, start=”2020-01-01″, end=”2024-01-01″) # 終値を使用 prices = data[‘Close’].values print(f”データ数: {len(prices)}”) print(f”期間: {data.index[0]} 〜 {data.index[-1]}”) # プロット plt.figure(figsize=(12, 4)) plt.plot(data.index, prices) plt.title(f'{ticker} 株価推移’) plt.xlabel(‘日付’) plt.ylabel(‘価格 ($)’) plt.show()

B-2. 要件

📌 必須要件
  • LSTM または GRU モデルを構築する
  • 過去N日間のデータから翌日を予測
  • 予測値と実際の値をプロットして比較
  • RMSE(Root Mean Square Error)を計算
💡 ヒント
  • MinMaxScalerで0-1に正規化する
  • シーケンス長は30〜60日が目安
  • Dropoutで過学習を防ぐ
  • 予測後は逆スケーリングを忘れずに

B-3. スターターコード

from sklearn.preprocessing import MinMaxScaler # 正規化 scaler = MinMaxScaler() prices_scaled = scaler.fit_transform(prices.reshape(-1, 1)) # シーケンスデータの作成 def create_sequences(data, seq_length): X, y = [], [] for i in range(len(data) – seq_length): X.append(data[i:i+seq_length]) y.append(data[i+seq_length]) return np.array(X), np.array(y) SEQ_LENGTH = 60 X, y = create_sequences(prices_scaled, SEQ_LENGTH) # 訓練/テスト分割(時系列なのでシャッフルしない) split = int(len(X) * 0.8) X_train, X_test = X[:split], X[split:] y_train, y_test = y[:split], y[split:] print(f”X_train: {X_train.shape}, y_train: {y_train.shape}”) # TODO: LSTMモデルを構築 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense, Dropout model = Sequential([ # あなたのコードをここに追加 ]) # TODO: 学習を実行し、予測結果を可視化

✍️ プロジェクトC: ひらがな認識 詳細

C-1. データセットの準備

# Kuzushiji-49データセット import tensorflow as tf import numpy as np # データのダウンロード !wget -q http://codh.rois.ac.jp/kmnist/dataset/k49/k49-train-imgs.npz !wget -q http://codh.rois.ac.jp/kmnist/dataset/k49/k49-train-labels.npz !wget -q http://codh.rois.ac.jp/kmnist/dataset/k49/k49-test-imgs.npz !wget -q http://codh.rois.ac.jp/kmnist/dataset/k49/k49-test-labels.npz # データの読み込み X_train = np.load(‘k49-train-imgs.npz’)[‘arr_0’] y_train = np.load(‘k49-train-labels.npz’)[‘arr_0’] X_test = np.load(‘k49-test-imgs.npz’)[‘arr_0’] y_test = np.load(‘k49-test-labels.npz’)[‘arr_0’] print(f”訓練データ: {X_train.shape}”) print(f”テストデータ: {X_test.shape}”) print(f”クラス数: {len(np.unique(y_train))}”)

C-2. 要件

📌 必須要件
  • CNNモデルを構築する(または転移学習を使用)
  • 85%以上のテスト精度を達成する
  • データ拡張を適用する
  • 混同行列で誤分類パターンを分析
💡 ヒント
  • 49クラスあるため、より深いネットワークが必要
  • 転移学習(MobileNetV2)を使う場合は画像を拡大
  • Learning Rate Schedulerで学習率を調整
  • 類似した文字(あ/お、は/ほ等)の混同に注目

📋 評価基準

項目 配点 内容
モデル構築 30点 適切なアーキテクチャの選択と実装
目標精度達成 25点 プロジェクトごとの目標精度をクリア
可視化 20点 学習曲線、混同行列、予測結果のプロット
コードの品質 15点 コメント、構造化、再現性
分析・考察 10点 結果の解釈、改善点の提案

📤 提出方法

📌 提出手順
  1. Google Colabでプロジェクトを完成させる
  2. 全てのセルを上から順に実行し、エラーがないことを確認
  3. ノートブックを保存(Ctrl+S または ファイル→保存)
  4. 共有設定を「リンクを知っている全員が閲覧可能」に変更
  5. 共有リンクをコピーして提出
⚠️ 提出前チェックリスト
  • 全てのセルがエラーなく実行できる
  • 目標精度を達成している
  • 学習曲線がプロットされている
  • 混同行列(または予測結果)が表示されている
  • コードにコメントが付いている
  • 結果に対する考察が書かれている

🎉 おめでとうございます!

ディープラーニング基礎コース(全28ステップ)を完了しました!

このコースで習得したスキル:
ニューラルネットワーク / CNN / RNN / LSTM / GRU / Attention
転移学習 / データ拡張 / ハイパーパラメータチューニング

✅ 次のステップ
  • 自然言語処理(NLP)コース:Transformer、BERT、GPTを学ぶ
  • コンピュータビジョンコース:物体検出、セグメンテーションを学ぶ
  • Kaggleコンペ:実際のデータサイエンスコンペに挑戦
  • ポートフォリオ作成:GitHubでプロジェクトを公開
💡 学習を続けるためのアドバイス
  • 毎日少しずつ:週5時間より毎日30分の方が効果的
  • 手を動かす:読むだけでなく必ずコードを書く
  • アウトプット:学んだことをブログやSNSで発信
  • コミュニティ:勉強会やオンラインコミュニティに参加
📝

学習メモ

ディープラーニング基礎 - Step 28

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE