AIプログラミング実践ガイド:実験と探求

【概要】AI開発環境の構築手順:管理者権限のコマンドプロンプトでwingetを使い、Python 3.12、Git、Visual Studio Build Tools、CUDAをインストールする。pipでPyTorch、Matplotlib等をインストールする。パス設定はスクリプトで自動化される。Windsurfでのプログラム実行は、File→New Fileでファイル作成、コードを入力し実行ボタンをクリックする。探求を行うには、仮説を立て、パラメータ(例:学習率0.1→0.01や0.5)を変更し、プログラム実行で確認する。研究への発展:実験環境、実験手順を記録し、再現性を確保する。結果を記録し、考察を行う。

  1. AIプログラミング開発環境の構築
  2. Pythonプログラム実行による探求
  3. 探求プロセス

第1章 AIプログラミング開発環境クイックスタートガイド

目標

本章の目標は、自身のパソコンでAIプログラミングの実行と実験が可能な環境を構築することである。本章を完了すると、さまざまなAIプログラムを動作させたり、ソースコードの確認や修正ができる環境が整う。

1.1 Pythonの役割

PythonはAIプログラミングにおいて広く利用されているプログラミング言語である。機械学習やディープラーニングのライブラリが豊富であり、初学者にも扱いやすいという特徴がある。

1.2 AIプログラミングにおける開発環境の全体像

1.3 実行前の確認事項

1.4 ソフトウェアのインストール(Windows)

Windowsでは、wingetというWindowsの公式パッケージ管理ツールを用いて多くのソフトウェアをインストールできる。管理者権限で実行し、システム全体にインストールすることを推奨する。

管理者権限でコマンドプロンプトを起動(手順:Windowsキーまたはスタートメニュー → cmdと入力 → 右クリック → 「管理者として実行」)し、以下を実行する。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要である。

REM Python をシステム領域にインストール
winget install --scope machine --id Python.Python.3.12 -e --silent --accept-source-agreements --accept-package-agreements

REM パス長制限の解除
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
reg query "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled

REM Python のパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON_SCRIPTS_PATH=C:\Program Files\Python312\Scripts"
echo "%PATH%" | find /i "%PYTHON_PATH%" >nul
if errorlevel 1 setx PATH "%PATH%;%PYTHON_PATH%" /M >nul
echo "%PATH%" | find /i "%PYTHON_SCRIPTS_PATH%" >nul
if errorlevel 1 setx PATH "%PATH%;%PYTHON_SCRIPTS_PATH%" /M >nul

REM 7-Zip をシステム領域にインストール
winget install --scope machine --id 7zip.7zip -e --silent --accept-source-agreements --accept-package-agreements

REM 7-Zip のパス設定
set "SEVENZIP_PATH=C:\Program Files\7-Zip"
if exist "%SEVENZIP_PATH%" echo "%PATH%" | find /i "%SEVENZIP_PATH%" >nul
if exist "%SEVENZIP_PATH%" if errorlevel 1 setx PATH "%PATH%;%SEVENZIP_PATH%" /M >nul

REM Git をシステム領域にインストール
winget install --scope machine --id Git.Git -e --silent --accept-source-agreements --accept-package-agreements

REM Git のパス設定
set "GIT_PATH=C:\Program Files\Git\cmd"
if exist "%GIT_PATH%" echo "%PATH%" | find /i "%GIT_PATH%" >nul
if exist "%GIT_PATH%" if errorlevel 1 setx PATH "%PATH%;%GIT_PATH%" /M >nul

REM Visual Studio 2022 Build Toolsとランタイムのインストール
winget install --scope machine --wait --accept-source-agreements --accept-package-agreements Microsoft.VisualStudio.2022.BuildTools Microsoft.VCRedist.2015+.x64

REM インストーラーとインストールパスの設定
set VS_INSTALLER="C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe"
set VS_PATH="C:\Program Files\Microsoft Visual Studio\2022\BuildTools"

REM C++開発ワークロードのインストール(次のコマンドは全体で1行である)
%VS_INSTALLER% modify --installPath %VS_PATH% --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows11SDK.22621 --includeRecommended --quiet --norestart

REM CUDAをシステム領域にインストール
winget install --scope machine --accept-package-agreements --accept-source-agreements -e Nvidia.CUDA Microsoft.VCRedist.2015+.x64
REM CUDA のパス設定
set "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6"
if exist "%CUDA_PATH%" setx CUDA_PATH "%CUDA_PATH%" /M >nul
if exist "%CUDA_PATH%" setx CUDNN_PATH "%CUDA_PATH%" /M >nul

REM PyTorch をインストール
pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

REM Windsurf をシステム領域にインストール
winget install --scope machine --id Codeium.Windsurf -e --silent --accept-source-agreements --accept-package-agreements

REM Microsoft VS Code をシステム領域にインストール
winget install --scope machine --id Microsoft.VisualStudioCode -e --silent --accept-source-agreements --accept-package-agreements
if exist "C:\Program Files\Microsoft VS Code\bin" cd "C:\Program Files\Microsoft VS Code\bin"
if exist "C:\Program Files\Microsoft VS Code\bin" code --install-extension ms-python.python
if exist "C:\Program Files\Microsoft VS Code\bin" code --install-extension ms-python.vscode-pylance
if exist "C:\Program Files\Microsoft VS Code\bin" code --install-extension MS-CEINTL.vscode-language-pack-ja
if exist "C:\Program Files\Microsoft VS Code\bin" code --install-extension dongli.python-preview
if exist "C:\Program Files\Windsurf\bin" windsurf --install-extension MS-CEINTL.vscode-language-pack-ja

実行時のヒント

1.5 確認

次のプログラムを実行し、Pythonのバージョン、Gitのバージョン、PyTorchのバージョン、GPUの動作を確認する。Python 3.12、NVIDIA CUDA、Git、PyTorchのインストールに問題がないかも確認できる。

import sys
import subprocess
import torch

print(sys.version)
print(subprocess.check_output(['git', '--version'], text=True).strip())
print(torch.__version__)
print(torch.cuda.is_available())
Python、Git、PyTorch、GPUの動作確認結果の表示例

第2章 Pythonプログラム実行による探求

目標

第1章で構築した環境を使用して、実際にAIプログラムを実行し、パラメータ変更による効果を観察する。本章では、pipを使用したPythonライブラリのインストール方法と、プログラムの変更および再実行による探求手法を習得する。本章における「探求」とは、プログラムのパラメータを変更し、その結果を観察・考察するサイクルを指す。

2.1 Windsurfでのプログラムの実行手順

新規Pythonファイルの作成

  1. メニューから File → New File を選択する
  2. ファイル名を入力する(例:a.py)
  3. 保存したいフォルダ(ディレクトリ)を選び、Create File をクリックする

左側のメニューから既存のファイルを開くことも可能である。

コードの入力と実行

  1. 作成したファイルの画面で、コードを作成および編集する
  2. 画面上部の実行ボタン(再生マークのアイコン)をクリックしてプログラムを実行する
  3. 実行結果は画面下部のターミナルまたは出力ウィンドウに表示される

Windsurfの主な機能

  1. Ctrl+Shift+P を押し、コマンドパレットを開く
  2. "Python: Select Interpreter" と入力し、表示される候補から選択する
  3. システムにインストールされたPython 3.12が選択されていることを確認する(選択されていなければ変更する)

2.2 必要なライブラリのインストール

Pythonプログラムはそれぞれ異なるライブラリを必要とする場合がある(例:後述のプログラムはmatplotlibライブラリを必要とする)。必要なライブラリがインストールされていない場合は、以下の手順でインストールする。

手順

  1. 管理者権限でコマンドプロンプトを起動する
    • Windowsキーからcmdと入力し、右クリックして「管理者として実行」を選択する
  2. pipコマンドでライブラリをインストールする

必要なライブラリはプログラムによって異なる。以下は代表的な例である。

pip install numpy pandas matplotlib pillow requests

インストール完了後、正常に終了したことを確認する。

主要なPythonライブラリ

Pythonには、様々な分野で活用できるライブラリがある。機械学習やデータサイエンス分野では、以下のライブラリが使用される。

2.3 プログラム実行による探求の基本手順

プログラム実行による探求は以下のサイクルで行う。

  1. 仮説設定:プログラムの動作について予想を立てる
  2. コード変更:パラメータや値を変更する
  3. 実行:プログラムを実行して結果を得る
  4. 結果観察:出力やグラフを観察する
  5. 考察:結果から何が分かったかを整理し、次の仮説を立てる

このサイクルを繰り返すことで、プログラムの動作原理を理解する。次節で扱う学習率の変更は探求の一例であり、様々なパラメータや設定を対象とした探求が可能である。

2.4 学習率の変更と効果

本節では、学習率がモデルの学習速度に与える影響を観察する。以下のプログラムを使用して、学習率を変更した際の効果をグラフで確認する。

用語説明

サンプルプログラム

import torch
import matplotlib.pyplot as plt

# 入力データと目標値を定義
x = torch.tensor([1., 2., 3., 4.])
y = torch.tensor([3., 5., 7., 9.])

# 学習する重み 'a' とバイアス 'b' を初期化。requires_grad=True により勾配計算を有効にする
a = torch.tensor(0.5, requires_grad=True)
b = torch.tensor(0.0, requires_grad=True)

# 各反復での損失を記録するためのリスト
losses = []

# 勾配降下法による学習ループ
for _ in range(10):
    # 予測値と目標値の差の二乗平均を損失として計算
    loss = ((a * x + b - y) ** 2).mean()

    # 損失値をリストに追加(.item() でテンソルからPythonの数値に変換)
    losses.append(loss.item())

    # 損失の勾配を計算
    loss.backward()

    # 勾配降下法による重み 'a' とバイアス 'b' の更新
    # .data を直接変更することで、この操作が勾配計算に影響しないようにする
    a.data -= 0.1 * a.grad
    b.data -= 0.1 * b.grad

    # 勾配をゼロにリセット(次の反復のために必要)
    a.grad.zero_()
    b.grad.zero_()

# 学習後の重み 'a'、バイアス 'b' と最終的な損失値を出力
print(f"a={a:.2f}, b={b:.2f}, loss={loss:.3f}")

# 損失の推移をグラフで表示
plt.plot(losses)
plt.xlabel('Iteration')
plt.ylabel('Loss')
plt.title('Training Loss')
plt.show()

このプログラムは、線形関数y=ax+b(一次関数)の重みaとバイアスbを勾配降下法で学習するPyTorchの実装である。入力データ[1,2,3,4]と目標値[3,5,7,9]から、初期重みa=0.5、初期バイアスb=0.0を10回の反復で最適化し、各ステップの損失値をリストに記録してグラフ表示する。重みaやバイアスbの初期値、学習率0.1を変更することで、収束過程の違いを観察できる。

変更手順

  1. a.pyファイルを開き、コードを表示する
  2. 以下の行を探す
a.data -= 0.1 * a.grad
b.data -= 0.1 * b.grad
  1. この行の0.1を別の数値に書き換える
    • 例:0.01(学習率を小さくする)
    • 例:0.5(学習率を大きくする)
  2. コードを変更したら、ファイルを保存する(Ctrl+SまたはメニューのFile → Save)
  3. 画面上部の実行ボタンをクリックしてプログラムを再実行する

期待される効果

学習率を変更すると、表示される損失のグラフに以下のような違いが見られる。

実行結果の確認方法

プログラムが正常に実行されると、以下の結果が得られる。

グラフの横軸は反復回数(0から9まで)、縦軸は損失値を表す。正常な学習では、グラフの線が左上から右下に向かって下降する。学習率が適切な場合、滑らかな減少曲線を描いて最終的に損失がほぼ0に収束する。学習率が大きすぎると振動や発散を示し、小さすぎると変化が緩慢になる。

様々な学習率を試して損失のグラフがどのように変化するかを観察することで、学習率がモデルの収束に与える影響を理解できる。

演習

  1. 上記のプログラムを実行し、損失のグラフを確認する
  2. 学習率を0.01に変更して実行し、グラフの変化を観察する
  3. 学習率を0.5に変更して実行し、グラフの変化を観察する
  4. それぞれの実行結果を比較し、学習率が収束過程に与える影響を確認する
損失の推移グラフの表示例

この演習は一例である。内容に応じた考察、結果の記録、次の仮説設定を行うことが求められる。

発展ガイド

別ページに多数のAIプログラムと説明を記載しており、AI技術の多様性を確認できる。多数のAIプログラムの実行や探求が可能であり、本章の内容が参考となる。人工知能のプログラム実行体験と探求(Windows上)のページを参照されたい。 https://www.kkaneko.jp/ai/labo/index.html

第3章 探求プロセス

3.1 学習目標

本章では、第2章で習得したプログラム探求の手法を発展させ、より広範囲の探求活動や研究計画の立案に応用できる汎用的なスキルを習得する。第2章の「探求」がパラメータ変更と結果観察のサイクルを指すのに対し、本章ではそれを基盤として、仮説立案から研究成果の発表までを含む包括的な探求プロセスを扱う。

具体的な到達目標は次のとおりである。

3.2 探求プロセスの実践手法

探求プロセスの概要

探求は以下の4つのステップで構成される。

  1. 探求対象の特定:実装されたPythonプログラムの確認などを通して、調整や変更が可能な部分を特定する
  2. 仮説の立案:変更による影響を予測する
  3. 結果の観察:仮説検証に適した方法で結果を確認する
  4. 記録と整理:探求結果を整理し、次の探求に活用する

具体例:オープンボキャブラリ型物体検出を用いた探求

ここでは、物体検出を研究テーマとした例を用いて、上記の探求プロセスを説明する。

オープンボキャブラリ型物体検出(Open-Vocabulary Object Detection, OVD)は、事前に定義されたカテゴリを超えて、任意のテキスト入力で記述された物体を検出する技術である。従来手法では訓練時に使用した限定的なカテゴリ(例:COCOデータセットの80クラス)のみを検出できたが、オープンボキャブラリ型では訓練時に見たことのない新規カテゴリ(ノベルクラス)に対してもゼロショット検出が可能である。この技術は事前学習済みの視覚言語モデル(例:CLIP)を活用することで、視覚情報とテキスト記述を統合した物体検出を実現する。実用面では、新しい物体カテゴリに対してモデルの再学習を必要とせず、テキストプロンプトによる柔軟な検索条件指定が可能である。

この技術を題材として、探求プロセスの各ステップを以下に示す。

1. 探求対象の特定

実装されたPythonプログラムの確認などを通して、調整や変更が可能な部分を特定する。

2. 仮説の立案

変更による影響を予測し、検証可能な仮説を設定する。

仮説の具体例は次のとおりである。

3. 結果の観察

仮説検証に適した方法で結果を確認する。

観察の具体例は次のとおりである。

4. 記録と整理

探求結果を整理し、次の探求に活用する。

記録と考察の具体例は次のとおりである。

プログラム中では英語の単語および文章で指定する。

探求から研究への発展

探求プロセスの最終段階として、プログラム実験を学術的研究に発展させることができる。

発展の段階は次のとおりである。

  1. プログラム実験段階:個別のプログラムパラメータを変更し、結果を観察する
  2. パターン発見段階:複数の実験結果から規則性や傾向を特定する
  3. 仮説形成段階:観察されたパターンの背景にある原理を推測する
  4. 体系的検証段階:仮説を検証するための計画的な実験を設計する
  5. 学術的位置づけ段階:既存の学術研究との関連性を明確化する

探求成果を研究として位置づける際の指針は次のとおりである。

3.3 探求における柔軟な思考

探求プロセスでは、ある方法でうまくいかなかった場合に、別の方法での目的達成を検討することが求められる。また、ある方法の精度が低い場合でも、それは失敗ではなく、モデルの特性や限界を理解する発見となる。

探求プロセスにおいては、予想外の結果や期待と異なる結果も含めて、すべての結果が学習の機会となる。結果の良し悪しではなく、そこから何を学び取れるかが問われる。期待どおりでない結果からも、技術の限界、適用条件、改善の方向性などの知見を得ることができる。このような柔軟な思考が、継続的な探求と学習を可能にする。

3.4 研究計画の立案

研究計画の立案は、探求を成功に導くための準備段階である。自分の技術レベルや利用可能なリソースで解決可能な課題を設定し、現実的な目標設定を行うことが求められる。

研究テーマの選定

研究目標の設定

目標設定のチェックリストは次のとおりである。

目標の階層化として、最終目標までを段階的に達成できる中間目標を設定する。これにより、道筋を確認しながら進めることができる。

研究手法の選択

研究目標に適した手法を選択し、その手法を習得するための学習計画も含める。

取り組み内容は次のとおりである。

研究計画の作成と共有

研究計画を文書化することで、研究の方向性を明確にし、指導教員や同僚との議論に役立てることができる。学期の中盤など適切な時期に仲間や教員と共有し、意見を求めることが求められる。

文書化に必要な構成は次のとおりである。

研究の妥当性確保と成果発表

研究計画には妥当性確保の方針と成果発表の計画を含める必要がある。

妥当性確保の方針は次のとおりである。

成果発表の計画は次のとおりである。

スケジュール管理とリスク対策

研究期間を複数の段階に分割する。スケジュールには余裕を持たせ、使用する技術やツールが期待通りに動作しない可能性を考慮し、代替手法を想定しておく。

研究計画は固定的なものではなく、研究の進行とともに適切に修正していくことが求められる。定期的な見直しを通じて、より効果的な研究実施を目指す。