「人工知能」サポートページ

授業担当教員:金子邦彦(情報工学科), サポートページ:https://www.kkaneko.jp/mi/index.html, 場所:4号館3階PC1室(04201室), 福山大学キャンパスマップ:https://www.fukuyama-u.ac.jp/about/access/, 時間:水曜日2時限

お知らせ

  1. シラバスで「ノートパソコンの持参」を求めていましたが,パソコン教室での実施となったため,ノートパソコンの持参は不要になりました。急な変更をお詫びします。

「人工知能」説明動画を再生 人工知能 [動画] (クリックすると再生開始), [パワーポイント] (Gemini, Vrew を用いて作成)


今年度(2026年度)の資料について

第1回. データサイエンス・AIでできること、社会の変化

人工知能は,コンピュータが人間のような知的能力を持つことを目指す技術である。 データから自ら学習する機械学習と,人間が書いたルールや知識を用いる知的なITシステムに大別される。 応用分野は,画像分類・顔検知・セグメンテーション,対話型AI,自動翻訳,データ分析と予測,GANによる画像合成など多岐にわたる。 学習データに偏りがあると結果にも偏りが出るため利用には注意が必要である。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画], [YouTube動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習について

以下の演習では,説明部分で学んだAIの概念を,オンラインデモを通じて体験する.各デモの結果を観察し,考察すること.

演習1から7まで挑戦してみることが望ましい(うまく動かない場合でも経験になる)。ブラウザの種類・バージョンによっては動作しない可能性もある。その場合は、その演習を飛ばして次に進んで欲しい。(その際、個別対応ができない場合がある。うまく動くものを試して欲しい)。

習っていない言葉(例:隠れ層)などが出てくるが、将来の授業で説明予定なので心配しないでほしい。今回は体験である。演習8から11は余裕がある人向けである(注意書きを確認の上で各自で実行してほしい)。

演習1. CNN 3D Visualization(Adam Harley)(機械学習・ニューラルネットワーク)

説明の「ニューラルネットワークの基本構造」に対応する演習である.畳み込みニューラルネットワーク(CNN)の内部構造を3Dで可視化し,各層がどのように入力を処理しているかを観察する.

URL: https://adamharley.com/nn_vis/cnn/3d.html

操作手順

  1. ページを開く(使用するWebブラウザの種類・バージョンによって動作しない場合がある)
  2. 左下の描画パッドに数字(0〜9)をマウスで描く
  3. 3D表示されたネットワークの各層のニューロンの活性化(色の変化)をリアルタイムに観察する
  4. 各ニューロンにマウスカーソルを合わせると,そのニューロンが何を検出しているか確認できる
  5. 異なる数字を描き,ネットワークの反応の違いを比較する

観察と考察

演習2. TensorFlow Playground(機械学習・ニューラルネットワーク)

説明の「ニューラルネットワークの基本構造」に対応する演習である.ニューラルネットワークの構造やパラメータを変更しながら,学習過程の変化を観察する.

URL: https://playground.tensorflow.org

操作手順

  1. ページを開く
  2. 画面左上の「DATA」セクションで,データセット(円形,XOR,渦巻き等)を選択する
  3. 必要に応じて、「FEATURES」セクションで入力特徴量(X1,X2等)を選択する
  4. 必要に応じて、「HIDDEN LAYERS」の「+」「-」ボタンで隠れ層の数を変更する.各層のニューロン数も「+」「-」で変更できる
  5. 画面上部の再生ボタン(▶)をクリックして学習を開始する
  6. 学習が進む様子と,出力領域の色分けの変化を観察する
  7. Learning rateやActivation関数を変更し,学習結果の違いを比較する

観察と考察

演習3. PathFinding.js Visual(知的なITシステム)

説明の「探索による問題解決」に対応する演習である.探索アルゴリズムが経路を見つける過程を可視化し,コンピュータによる探索の仕組みを理解する.

URL: https://qiao.github.io/PathFinding.js/visual/

操作手順

  1. ページを開く
  2. グリッド上でマウスをドラッグして壁(障害物)を配置する
  3. 緑色のノード(スタート地点)と赤色のノード(ゴール地点)はドラッグで移動できる
  4. 画面上部のドロップダウンからアルゴリズム(A*,BFS,DFS等)を選択する
  5. 「Start Search」ボタンをクリックする
  6. 探索対象のセル(水色)と最短経路(黄色)がアニメーションで表示される
  7. アルゴリズムを変更して,探索の仕方の違いを比較する

観察と考察

演習4. DeepL(AIでできること)

説明の「自動翻訳サービス」に対応する演習である.AIによる自動翻訳の精度と自然さを体験する.

URL: https://www.deepl.com/ja/translator

操作手順

  1. ページを開く
  2. 左側の入力エリアに日本語のテキスト(例:「人工知能は,コンピュータが人間のような知的能力を持つことを目指す技術である」)を入力する
  3. 右側に翻訳言語(例:英語)を選択する
  4. リアルタイムに翻訳結果が表示される
  5. 翻訳言語を変更し(フランス語,中国語等),複数言語への翻訳を試す

観察と考察

演習5. AutoDraw(Google)(AIによる合成)

説明の「人間の下書きをAIが清書する」に対応する演習である.手描きの下書きをAIが認識し,候補イラストを提示する仕組みを体験する.

URL: https://www.autodraw.com/

操作手順

  1. ページを開く
  2. li>最初、緑色の「Start Drawing」をクリック
  3. 画面左側のツールバーから「AutoDraw」ツール(魔法の杖アイコン)を選択する
  4. キャンバスに絵(例:猫,車,花等)を手描きする
  5. 画面上部にAIが推測した候補イラストが表示される
  6. 候補の中から適切なものをクリックすると,手描きが清書に置き換わる

観察と考察

演習6. Sketch RNN VAE Demo(Magenta)(AIによる合成)

説明の「AIでスケッチを増やす」に対応する演習である.VAEにより,描いたスケッチに似たスケッチを複数生成する技術を体験する.

URL: https://magenta.tensorflow.org/assets/sketch_rnn_demo/multi_vae.html

操作手順

  1. ページを開く
  2. 画面右下のドロップダウンからカテゴリ(例:bird,cat等)を選択する
  3. 左側のキャンバスにお題の絵を描く
  4. 描き終えたら「auto-encode」ボタンをクリックする
  5. 右側の小さなボックスに,元のスケッチに似た(ただし同一ではない)スケッチが複数生成される

観察と考察

演習7. GAN-play(MIT Media Lab)(AIによる合成)

説明の「手書きの線画から画像を生成する」に対応する演習である.pix2pix(GAN技術)を使用して,手書きの線画からカラー画像を生成する技術を体験する.

URL: https://mitmedialab.github.io/GAN-play/

操作手順

  1. ページを開く
  2. Step 1 のキャンバスに線画を描く(画像をアップロードすることも可能)
  3. Step 2 からモデル(Birds,Flowers,Cats,Shoes等)を選択する
  4. リアルタイムに右側にpix2pixモデルが生成したカラー画像が表示される
  5. 線画を修正すると,生成画像も即座に変化する

観察と考察

ここから先は、余裕のある人向け(自分でWebカメラや画像ファイルを準備して、自力で進める人向け)である。

演習8〜11はWebカメラや画像ファイルが必要である(どちらになるかは演習によって違う).教室PCにはウェブカメラが搭載されていないため,個人PCでウェブカメラを搭載している場合に試すことができる.画像ファイルを使用する場合は,あらかじめ画像を準備しておくこと.

演習8. Teachable Machine(Google)(機械学習・ニューラルネットワーク)

説明の「訓練データと学習の仕組み」に対応する演習である.自分のデータで訓練データの作成,学習,推論の一連の流れを体験する.

(注意点:Webカメラあるいは画像ファイルの準備.個人PCでウェブカメラ搭載の場合、簡単に試すことができる.教室PCにはウェブカメラがない

URL: https://teachablemachine.withgoogle.com/

操作手順

  1. ページを開き,「使ってみる (Get Started)」をクリックする
  2. 「画像プロジェクト(Image Project)」を選択し,「標準の画像モデル (Standard image model)」をクリックする
  3. Web カメラを使う場合には、「Class 1」の「ウエブカメラ (Webcam)」ボタンを押し,カメラで対象物(例:ペン)を映しながら「長押しして録画 (Hold to Record)」で画像を撮影する(20枚程度)
  4. 「Class 2」でも同様に別の対象物(例:消しゴム)の画像を撮影する
  5. 「モデルをトレーニング (Train Model)」ボタンをクリックし,学習が完了するまで待つ
  6. 「プレビュー (Preview)」パネルでカメラに対象物を映し,分類結果がリアルタイムに表示されることを確認する

観察と考察

演習9. Google Cloud Vision API Demo(AIでできること)

説明の「画像分類」に対応する演習である.画像をアップロードし,AIによるラベル付けや物体検出を体験する.

URL: https://cloud.google.com/vision/docs/drag-and-drop

操作手順

  1. ページを開く
  2. デモエリアに画像ファイルをドラッグ&ドロップする
  3. 「Labels」タブで,AIが画像に付けたラベル(例:Glasses 98%,Smile 95%等)を確認する
  4. 「Objects」タブで,画像内の物体検出結果を確認する
  5. 「Properties」タブで,支配的な色を確認する
  6. 「Safe Search」タブで,画像の安全性判定結果を確認する
  7. 「Faces」ボタンで表情推定結果を確認する

観察と考察

演習10. Modern Face API Demo(AIでできること)

説明の「顔検知」「顔のキーポイント検出」「表情の自動判定」に対応する演習である.1つのデモで顔に関する複数のAI技術を体験する.

URL: https://modern-face-api.vercel.app/

(画像アップロード.個人PCでウェブカメラ搭載の場合のみ試すことができる.教室PCにはウェブカメラがない)

操作手順

  1. ページを開き,右側で「Face Detection」を選ぶ
  2. 「Choose Image】をクリック。自分の顔画像をアップロードする,
  3. 検出された顔にバウンディングボックスが表示される
  4. 右側で「Landmarks」をクリック。同じように顔画像をアップロード。目・鼻・口等のキーポイントが点で表示されることを確認する
  5. 「Expressions」タブに切り替え,表情の分析結果(各感情の確率)を確認する
  6. 「Age & Gender」についても試し,推定年齢と性別を確認する

観察と考察

演習11. MediaPipe Pose Estimation(Hugging Face)(AIでできること)

説明の「人体の姿勢の読み取り」に対応する演習である.人体の関節位置を検出し,骨格を可視化する技術を体験する.

URL: https://huggingface.co/spaces/hysts/mediapipe-pose-estimation

操作手順

  1. ページを開く
  2. 人物が写った画像をアップロードする。
  3. 検出された関節(キーポイント)が点で,関節を結んだ骨格が線で表示される
  4. 設定パネルでModel Complexity(モデルの複雑さ)を変更し,検出精度の違いを観察する

観察と考察

第2回. データサイエンス・AI の事例、技術

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

データサイエンスは,データから有益な情報を導き出すための学問である。散布図やヒストグラムなどでデータを可視化する。 機械学習は,コンピュータがデータを使用して学習し知的能力を向上させる技術で,パターンや関係性を自動で発見する。 機械学習には,正解の組を用いる教師あり学習のほか教師なし学習や強化学習があり,代表的手法にディープラーニングがある。 いずれもデータに基づく技術である。結果に100%の正確性は保証されず,データの選択・前処理に注意が必要である。

動画

[動画], [YouTube動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習について

以下の演習では,説明部分で学んだデータサイエンス、機械学習の概念をについて理解を深める.


演習1. 平均(Excel)

ペンギン3種類のデータを使い,Excelの関数で合計と平均を求める演習である.種類ごとの平均を比較することで,種類による体の特徴の違いを数値で把握する.

使用データ:penguins.xls

操作手順

  1. 配布されたpenguins.xlsをダウンロードし、Excelで開く(ファイルをダブルクリック,またはExcelの「ファイル」→「開く」から選択する)。このとき「編集を有効にする」をクリック
  2. データが正しく表示されていることを確認する(A列:種類,B列:くちばしの長さ(mm),C列:くちばしの深さ(mm),D列:フリッパーの長さ(mm),E列:体重(g).データは1行目がヘッダ,2行目から343行目までの333行である)
  3. データの構成を確認する(Adelie:2行目〜147行目の146行,Gentoo:148行目〜275行目の119行,Chinstrap:276行目〜343行目の68行)
  4. 空いているセル(例:G2)に「Adelie」と入力
  5. G3に「Gentoo」,G4に「Chinstrap」と入力する
  6. H2をクリックし,「=AVERAGE(B2:B152)」と入力してEnterキーを押す(Adelieのくちばしの長さの平均が表示される)
  7. 同様に,I2に「=AVERAGE(C2:C152)」,J2に「=AVERAGE(D2:D152)」,K2に「=AVERAGE(E2:E152)」と入力する
  8. H2に「くちばしの長さ(mm)」,I2に「くちばしの深さ(mm)」,J2に「フリッパーの長さ(mm)」,K2に「体重(g)」の平均が求まっていることを確認する。

  9. Gentooの平均を求める.H3に「=AVERAGE(B153:B275)」と入力する.

    I3,J3,K3も同様に行う。I3に「=AVERAGE(C153:C275)」,J3に「=AVERAGE(D153:D275)」,K3に「=AVERAGE(D153:D275)」と入力する

  10. Chinstrapの平均を求める.H4に「=AVERAGE(B276:B343)」と入力する.

    I4,J4,K4も同様に行う。 I4に「=AVERAGE(C276:C343)」,J4に「=AVERAGE(D276:D343)」,K4に「=AVERAGE(E276:E343)」と入力する

  11. 3種類×4項目の平均値が集計表に表示されていることを確認する

左から順に、「くちばしの長さ(mm)」,「くちばしの深さ(mm)」,「フリッパーの長さ(mm)」,「体重(g)」の平均

観察と考察


演習2. 散布図(Excel)

ペンギン3種類のデータを使い,Excelで散布図を作成する演習である.2つの特徴量を横軸と縦軸にとり,種類ごとのデータの分布やかたまりを視覚的に確認する.

使用データ:penguins.xls(演習1と同じファイルをそのまま使用する)

操作手順

  1. 演習1で開いたpenguins.xlsのExcel画面を使用する(閉じてしまった場合は再度開く)
  2. まずAdelieの散布図を作成する.B1からC152までを範囲選択する(B1をクリックし,Shiftキーを押しながらC152をクリックする.B1のヘッダ行を含めて選択する)
  3. 同様に,Gentooの散布図を作成する.B153からC275までを範囲選択し,同じ手順で散布図を挿入する.
  4. 同様に,Chinstrapの散布図を作成する.B276からC343までを範囲選択し,同じ手順で散布図を挿入する.
  5. 3つの散布図をドラッグで移動し,横に並べて配置する

結果

参考(色分けして1枚にしたもの)

観察と考察


演習3. ヒストグラム(Excel)

ペンギン3種類の体重データを使い,Excelでヒストグラムを作成する演習である.データの散らばり方(分布)を可視化し,平均だけでは分からない特徴を読み取る.

使用データ:penguins.xls(演習1,2と同じファイルをそのまま使用する)

操作手順

  1. 演習1,2で開いたpenguins.xlsのExcel画面を使用する
  2. まず全体のヒストグラムを作成する.E1からE343までを範囲選択する(E1をクリックし,Shiftキーを押しながらE343をクリックする.E1のヘッダ行を含めて選択する)
  3. リボンの「挿入」タブをクリックする
  4. 「ヒストグラム」のアイコンをクリックし,ヒストグラムを選択する(「統計グラフの挿入」の中にある場合もある)
  5. 体重のヒストグラムが表示される.横軸が体重の区間,縦軸がその区間に含まれるデータの個数(度数)を表す
  6. 次に,種類ごとのヒストグラムを作成する.Adelieの体重のヒストグラムを作成するには,E1からE152までを範囲選択し,同様の手順でヒストグラムを作成する
  7. 同様に,Gentoo(E153:E275),Chinstrap(E276:E343)のヒストグラムもそれぞれ作成する
  8. 全体のヒストグラムと,種類ごとの3つのヒストグラムを見比べる

観察と考察


演習4. 機械学習によるペンギンの種類の自動分類(Google Colab)

演習1〜3と同じペンギンのデータを使い,機械学習(教師あり学習)でペンギンの種類を自動分類する様子を観察する演習である.演習2の散布図で人間が目で確認した「種類ごとのかたまり」を,コンピュータが自動で分類する仕組みを体験する.

使用データ:penguins.xls(演習1〜3と同じファイル)

実行の流れ

  1. 教員がGoogle Colabのノートブックを開く(URLはhttps://colab.research.google.com/drive/1GBgTuBxBqenffJ6In7MyFEDMvHvL8aiF?usp=sharing
  2. ノートブックには,パーマーペンギンデータを読み込み,機械学習で種類を自動分類するプログラムが記述されている
  3. 次の結果の確認
    • データの読み込み結果(件数と内容の確認)
    • 散布図の確認(演習2と同様の散布図をプログラムで作成)
    • 訓練データとテストデータへの分割(データの一部を学習に使い,残りを評価に使う)
    • 機械学習における学習の実行(コンピュータが訓練データからパターンを学ぶ)
    • テストデータに対する予測結果(学習に使わなかったデータで正しく分類できるか)
    • 散布図上での分類結果の可視化
    • 左が実データ。右が機械学習による予測(3種を予測)

観察と考察

[演習で用いたパーマーペンギンデータの準備手順]

演習のパーマーペンギンデータの準備手順を説明しているものであり、各自の演習として取り組む必要はない

  1. パーマーペンギンデータURL

    https://raw.githubusercontent.com/allisonhorst/palmerpenguins/master/inst/extdata/penguins.csv

  2. 前処理:NA(欠損値)を含む行を削除、不要な列(island, sex, year)を削除、ヘッダ行を日本語に変更

第3回. 実データによるデータサイエンス・AIの演習

オープンデータには,政府統計e-Stat,気象データ,GTFS形式の公共交通データ,AED設置場所,感染症動向データなどがある。 利用時は,データの品質や信頼性の確認,著作権の尊重,出典の明示,公開者が定める利用条件の遵守が必要である。 クロス集計表は2つの変数の組み合わせごとに人数等を集計した表である。相関係数は2つの変数の関係の強さを表す数値である。 分析の前に散布図でデータの分布を確認し,サンプル数やデータの偏りの確認も必要である。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

[演習の詳細を表示するには、この行をクリックしてください]

演習について

以下の演習では,説明部分で学んだデータサイエンス・AIの概念を,オンラインデモを通じて体験,さらに,各自データをダウンロードしてExcelを用いて分析する. 演習1と演習2は、「自分が知らなかった事実」を1つでも見つけることが目的である。 演習3と演習4と演習5は、「自分でデータを取得し、自分で分析し、自分で考える」ことを行う。 いずれも、データ分析者としてスキルを磨くことになる。

翻訳サイト

質問は英語で与える必要がある。 翻訳サイトDeepL: https://www.deepl.com/ja/translatorを必要に応じて活用して欲しい

Chromeブラウザの翻訳機能の使い方

画面が英語で読みにくい場合は、以下の手順でページ全体を日本語に翻訳できる。

手順A:ページ上の文字のない場所(余白)を右クリックする。

手順B:表示されたメニューから「日本語に翻訳」を選ぶ。

手順C:ページ全体が日本語に切り替わる。元の英語に戻したい場合は、アドレスバー右側に表示される翻訳アイコン(丸の中にGの形)をクリックし、「英語」を選ぶ。

注意:Googleの翻訳では、専門用語や固有名詞が不自然な日本語になる場合がある。意味が分かりにくい箇所は、元の英語表示に戻して確認するとよい。

演習① 質問を理解するAI 「Data Commons」

概要

Google Data Commonsは、世界各国の公的機関(日本の国勢調査、米国国勢調査局、世界銀行、WHO、CDC等)が公開する統計データを1か所に集めたオープンデータプラットフォームである。検索欄に英語で質問を入力すると、大規模言語モデル(LLM:Large Language Models、大量のテキストで学習した言語処理AI)が質問を解釈し、統計を地図やグラフで自動的に可視化(データをグラフや地図で見える形にすること)する。

操作手順

手順1:ブラウザで https://datacommons.org/ にアクセスする。

手順2:画面の上部中央の検索欄をクリックする。

手順3:以下のいずれかの質問例をコピーして検索欄に貼り付け、Enterキーを押す。

How has the population of Japan changed over time?
Life expectancy in Japan compared to other G7 countries
Unemployment rate in Tokyo

それぞれの意味は、1つ目が「日本の人口推移」、2つ目が「日本とG7各国の平均寿命比較」、3つ目が「東京の失業率」である。トップページに表示される質問例(Sample questions)をクリックして試してもよい。

手順4:画面に折れ線グラフ・地図・ランキング表などが、データに応じて自動生成されることを確認する。

手順5:グラフ付近にある「About this data」をクリックすると、どの公的機関のオープンデータが使われているかを確認できる。

手順6:画面左上の「DC」のロゴをクリックしてトップページに戻り、別の質問で手順3から繰り返す。最低3つの質問を試す。

体験のポイント

「質問文」の意味をAIが理解し、適切なデータが選択されている。「Unemployment rate in Tokyo (東京の失業率)」のような質問では、このサイトがデータを取得できず結果が得られない。「Unemployment rate in Japan (日本の失業率)」のように変えて試してみる

演習② データの隙間を埋めるAI 「Gapminder」

概要

Gapminder Toolsは、スウェーデンのGapminder Foundation(非営利団体)が運営する世界統計の可視化ツールである。世界銀行、WHO、国連等が公開するオープンデータを用いて、各国の所得・平均寿命・人口等を動くバブルチャートで表示する。時間軸スライダーを動かすと、1800年から現在までの各国の変化をアニメーションで見ることができる。データが存在しない年の値は、前後の年から推定するアルゴリズム(欠損値補完)で埋められている。

操作手順

手順1:ブラウザで https://www.gapminder.org/tools/ にアクセスする。

手順2:初期画面でバブルチャートが表示されることを確認する。画面上部のタブが「Bubbles」になっていることを確認する。

手順3:画面右側の国名リストで「Japan」を探してクリックする、または検索欄に「Japan」と入力する。日本のバブルがハイライト表示される。

手順4:画面下部の再生ボタン(▶)をクリックし、1800年から現在までのアニメーションを見る。日本のバブルがどのように動くかに注目する。

手順5:アニメーション終了後、時間軸スライダーを左右に動かし、日本の軌跡を確認する。

手順6:横軸または縦軸のラベルはメニュー(「Income」「Life expectancy」等)担っている。別の指標に変える。例として「Children per woman」(女性1人あたりの子どもの数)や「CO2 emissions」(CO2排出量)を選ぶ。

手順7:画面下部のボタンで「Bubbles」から「Maps」(地図)、「Ranks」(順位)などに切り替え、同じデータを別の形式で見る。

手順8:横軸や縦軸のラベルを変更。気になる指標について、日本と他国(例:韓国、米国、ブラジル)を比べてみる。

体験のポイント

「所得が上がると平均寿命も延びる」等の相関関係(2つの指標が連動して変化する関係)を、200年分のデータで自分の目で確かめる。

Excelで相関係数を求める手順

どのサイトの演習でも、相関係数の計算は以下の手順で行う。

手順E1:2列のデータをExcelに用意する(例:A列に指標1、B列に指標2)。1行目は見出しとし、2行目以降にデータを置く。

手順E2:空きセルを選び、=CORREL(A2:A48, B2:B48) のように入力する。範囲は自分のデータ件数に合わせて変える。

手順E3:Enterキーを押すと、−1から1までの値が表示される。1に近ければ正の相関、−1に近ければ負の相関、0に近ければ相関がほぼないとみなす。

手順E4:2列のデータを選び、「挿入」→「散布図」で散布図を描き、点の並びを目で確かめる。

演習③ 過去の気象データ・ダウンロードと相関の分析

概要

気象庁が運営する、全国の観測地点の気温・降水量・日照時間等をCSVでダウンロードできるサイトである。観測地点・観測項目・期間を画面上で選ぶだけでデータを取り出せる。登録不要である。

操作手順

手順1:ブラウザで https://www.data.jma.go.jp/risk/obsdl/ にアクセスする。

手順2:画面上部の「地点を選ぶ」をクリックする。都道府県の地図から「東京都」を選び、表示された地点の中から「東京」にチェックを入れる。

「他の都道府県を選ぶ」をクリック。続けて「大阪府」を選び、「大阪」にチェックを入れる。画面右上の「選択済みのデータ量」のバーが上限(100%)を超えないことを確認する。

手順3:「項目を選ぶ」をクリックする。「データの種類」で「月別値」を選び、項目一覧から「月平均気温」にチェックを入れる。

手順4:「期間を選ぶ」をクリックし、「連続した期間で表示する」を選び、年と付きを指定する(例:2025年1月から、2025年12月まで)。

手順5:画面右上の「CSVファイルをダウンロード」ボタンをクリックする。ダウンロードしたCSVをExcelで開く。

手順6:東京の月平均気温と大阪の月平均気温が12か月分並んでいることを確認する。冒頭にヘッダー行が複数行入っている。データ行の先頭を確認する。共通手順E1〜E4に従って平均気温の相関係数を計算。

そして、散布図を描く。散布図では、最初に東京の気温12ヶ月分を範囲選択。その次にCTRLキー(コントロールキー)を押しながら、大阪の気温12ヶ月分を範囲選択。これで縦軸と横軸のデータが選択できたので、「挿入」で「散布図》を選ぶ

手順7:相関係数の値から判断(正の相関・負の相関・相関がほぼない)を行う。

手順8:気温以外の他のデータ、東京や大阪以外でも試してみる。

体験のポイント

日本国内の2地点の月平均気温は、季節変動が共通するため正の強い相関(1に近い値)を示すことが多い。余裕があれば、項目を「月降水量」に変えて同じ手順を繰り返し、気温ほど強い相関は出ないことを確かめる。この違いから「何が連動し、何が連動しないか」を自分の目で確かめる。

演習④ 総務省統計局「統計でみる都道府県のすがた」から相関の分析

概要

総務省統計局が毎年刊行している、47都道府県別の統計データ集である。人口、産業、教育、医療、住宅など多数の指標がまとめられ、e-Stat上でExcelファイルとして公開されている。ダウンロードしたExcelには47都道府県×多数の指標が表として並んでおり、相関係数の計算にそのまま使える。登録不要である。

操作手順

手順1:ブラウザで https://www.stat.go.jp/data/k-sugata/index.html にアクセスする。

手順2:右側のメニューで「本書の内容」をクリック。そして、「I 社会生活統計指標」のリンクをクリックする。e-Statの統計表一覧ページに移る。

手順3:一覧の中から関心のある分野のExcelファイル(例:「A 人口・世帯」「E 健康・医療」等)を選び(クリック)、次のページで「表示・ダウンロード」の下のボタンをクリックする。Excel ファイルなどがダウンロードされる。初めて扱う場合は「A 人口・世帯」がわかりやすいだろう。

手順4:ダウンロードしたファイルを開く。「A 人口・世帯」の場合は、シートには47都道府県が行に、指標が列に並んだ表が現れる。冒頭の数行は見出しや説明である。データ行の先頭を確認する。

手順5:興味のある2つの指標を選ぶ。初めて扱う場合は「A 人口・世帯」の「総人口」と「総面積1km2あたり人口密度」がわかりやすい。

手順6:共通手順E1〜E4に従って相関係数を計算。「A 人口・世帯」の「総人口」と「総面積1km2あたり人口密度」の場合は、式は、次のようになる。

=CORREL(L14:L60, V14:V60)

そして、前の演習3と同じ手順で、散布図を作成。

手順8:相関係数の値から判断を行う。

体験のポイント

各人の興味に応じて、複数の種類のデータをダウンロード(例:都道府県別の人口、都道府県別の医師数)し、コピー&ペーストにより、1つのExcel のシートの中に2つの異なるデータを並べ、相関係数を計算したり、散布図を作成。

量的に比例する指標は、強い正の相関(1に近い値)を示すことが多い。「比率どうし」(例:高齢化率と持ち家比率)を選ぶと、より興味深い発見が得られる。相関があるからといって因果関係があるとは限らない点に注意する。

演習⑤ e-Stat「統計ダッシュボード」から相関の分析

概要

政府統計の総合窓口(e-Stat)と連動した、指標ごとのグラフ・ランキングに特化したサイトである。分野別の指標を選び、47都道府県の値をグラフや表で確認できる。登録不要である。

操作手順

手順1:ブラウザで https://dashboard.e-stat.go.jp/ にアクセスする。

手順2:画面上部のメニュー「グラフで見る」にカーソルを合わせ、サブメニューから分野(例:「人口・世帯」)を選ぶ。または同じサブメニューにある「都道府県へ」をクリックして都道府県別の指標一覧を直接開いてもよい。

手順3:分野内の指標一覧から、都道府県別に比較できる指標(例:「総人口」)を選ぶ。

手順4:グラフが表示されたら、 今度は、 画面の左側にあるメニューでデータ周期として「年」を選び、下の地域別で「都道府県別」などを選ぶ。

手順5:グラフが表示されるので確認する。上のタブで「数値」を選ぶ。表示された表を選択してコピーし、Excelに貼り付ける。画面にダウンロードボタン(CSVなど)がある場合はそれを使ってもよい。

手順6:同じ要領で、別の指標(例:「(季節調整値)完全失業率」)を取得し、同じExcelシートに貼り付ける。都道府県名の並びを必ず揃える。

手順7:共通手順E1〜E4に従って相関係数を計算。そして、散布図を作成。

手順8:相関係数の値から判断を行う。

体験のポイント

演習④で扱った指標とは別の組合せ(例:人口×失業率、人口×新設住宅着工戸数)を試すと、意外な結果が得られることがある。相関係数が0.3程度の場合、「相関があるとは言い切れない」と判断する慎重さが必要である。

第4回. 機械学習、ニューラルネットワーク

機械学習は,コンピュータがデータを使用して学習し知的能力を向上させる技術で,データからパターンや関係性を自動で発見する。 入力と正解の組(例:手書き数字画像と数字ラベル)を訓練データとして用いる方式を教師あり学習と呼び,他に教師なし学習や強化学習がある。 ニューラルネットワークは脳のニューロンを模した構造で,入力の重みづけ,合計とバイアス,活性化関数の適用を経て順伝播する。 その学習は予測と正解の誤差を小さくする最適化であり,バックプロパゲーションにより各層の重みとバイアスを更新する。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

[演習の詳細を表示するには、この行をクリックしてください]

Chromeブラウザの翻訳機能の使い方

画面が英語で読みにくい場合は、以下の手順でページ全体を日本語に翻訳できる。

手順A:ページ上の文字のない場所(余白)を右クリックする。

手順B:表示されたメニューから「日本語に翻訳」を選ぶ。

手順C:ページ全体が日本語に切り替わる。元の英語に戻したい場合は、アドレスバー右側に表示される翻訳アイコン(丸の中にGの形)をクリックし、「英語」を選ぶ。

注意:Googleの翻訳では、専門用語や固有名詞が不自然な日本語になる場合がある。意味が分かりにくい箇所は、元の英語表示に戻して確認するとよい。

演習① Quick, Draw! の体験

Quick, Draw! は,Googleが公開する機械学習の体験サイトであり,登録不要で利用可能である.ユーザが描いた絵を,ニューラルネットワークがリアルタイムで分類する.本演習では,機械学習が持つ知的能力(分類,認識)を体験することを目的とする.

Quick, Draw! のサイト:https://quickdraw.withgoogle.com/

操作手順

  1. アクセスする.タイトル画面が表示される.
  2. Quick, Draw! のサイト:https://quickdraw.withgoogle.com/

  3. 「描いてみよう (Let's Draw!)」のボタンをクリックする.
  4. 画面にお題(例:カヌー)が表示される.「OK」をクリックして開始する.
  5. 20秒以内に,お題の対象をマウスまたはタッチ操作で描く.描いている途中で,画面下にニューラルネットワークによる分類結果の候補がリアルタイムで表示される.正解に到達すると次のお題に進む.20秒経過した場合も次のお題に進む.
  6. 全6問のお題が終了すると,結果画面が表示される.
  7. 結果画面で,描いた絵のいずれかをクリックする.そのお題について,ニューラルネットワークが提示した分類結果の候補が表示される.世界中の他のユーザが描いた同じお題の絵の例もあわせて表示される.
  8. 余裕があれば,意図的に分かりにくい絵を描いて,ニューラルネットワークの分類の限界を確かめる.

ヒント

考察ポイント

演習② Neural Network Playground の体験

Neural Network Playground は,カリフォルニア大学サンディエゴ校(UCSD)のCCoMが公開するWebサイトであり,登録不要で利用可能である.ニューラルネットワークの最小構成を体験できる.ニューロンの数を1個から変化させながら,分類の境目の形状がどのように変化するかを観察できる.本演習では,「ニューラルネットワークは,ニューロンがネットワークを形成する」という仕組みを,最小構成で確認することを目的とする.

Neural Network Playground:https://www.ccom.ucsd.edu/~cdeotte/programs/neuralnetwork.html

注意:本サイトは英語で表示される.操作要素はスライダーとボタンのみであり,英語が不得意でも操作に支障はない.

操作手順

  1. URLにアクセスする.

    Neural Network Playground:https://www.ccom.ucsd.edu/~cdeotte/programs/neuralnetwork.html

  2. ページ上部にデータ点の散布図と,分類の境目を示す曲線(決定境界.2種類のデータ点を分ける線)が表示される.画面下に H=9 と表示されたスライダーを確認する.H は,ネットワーク内部のニューロンの数を表す.
  3. マウスの右クリックと左クリックで、2種類の点を配置。「Clear points」をクリックで全ての点を消去。
  4. 「Start learn」をクリックすることでニューラルネットワークの学習開始。
  5. スライダーを左端(H=1)まで動かす.ニューロンが1個のみとなり,分類の境目が直線1本になることを観察する.
  6. スライダーを少しずつ右に動かし,H=2H=3H=4 と増やしていく.分類の境目が,直線の組み合わせから複雑な形状に変化していく様子を観察する.
  7. スライダーを右端(H=9)まで動かす.赤と青の点の配置にもよるが、曲線的で複雑な分類の境目が形成されることを観察する.
  8. 余裕があれば,同じ作者による関連ページ(手書き数字であるMNIST認識:https://www.ccom.ucsd.edu/~cdeotte/programs/MNIST.html)にアクセスし,手書き数字の分類を体験する.

ヒント

考察ポイント

演習③ A Machine Learning Playground の体験

A Machine Learning Playground(Scienxlab版)は,ニューラルネットワークの学習過程を対話的に可視化するWebサイトであり,登録不要で利用可能である.ニューロンの数,活性化関数,学習の速さなどを変更して,学習をリアルタイムに実行できる.本演習では,「入力の重みづけ,合計とバイアス,活性化関数の適用」「ニューラルネットワークのパラメータ(重みやバイアス)を最適化する」という仕組みを総合的に体験する.

A Machine Learning Playground:https://playground.scienxlab.org/

本サイトは,Googleが公開する TensorFlow Playgroundhttps://playground.tensorflow.org/)の拡張版である.UIと基本操作は原版と同一であり,活性化関数の種類と利用できるデータの追加などの拡張が施されている.他の教材や書籍で「TensorFlow Playground」という名称に出会った際は,同系統のツールである.原版も同じ操作方法で利用できる.

事前準備:演習②を先に体験しておくと理解しやすい.

注意:本サイトは英語で表示される.操作要素は主にボタンとドロップダウンメニューであり,英語が不得意でも直感的に操作できる.

操作手順

  1. 上記URLにアクセスする.

    A Machine Learning Playground:https://playground.scienxlab.org/

  2. 画面左にDATA(使用するデータの選択),中央にFEATURES(入力の選択)とHIDDEN LAYERS(ニューロンの層)の構造図,右にOUTPUT(出力と誤差)が表示される.
  3. 画面上部の実行ボタン(▶)をクリックして学習を開始する.誤差(Training loss と Test loss.訓練時の誤差と検証時の誤差)の値が減少し,右の出力領域で,2種類のデータ点を分類する境目が形成されていく様子を観察する.
  4. 一時停止ボタンで学習を止めることができる.
  5. リセットボタン(↺)で初期状態に戻す.
  6. 左のDATAで,異なるデータ分布を選択する.各データ分布で学習を実行し,分類の難易度の違いを観察する.
  7. 中央のHIDDEN LAYERSの「+」「-」ボタンで,ニューロンの層の数と各層のニューロンの数変更する.変更後に再度学習を実行し,分類の境目の形状の変化を観察する.
  8. 余裕があれば、画面上部のActivation(活性化関数)ドロップダウンで,活性化関数を順に切り替える.各設定で学習を実行し,収束の速さと分類の境目の違いを観察する.
  9. 学習中は,ニューロン間を結ぶ線の(青:正の重み,橙:負の重み)と太さ(重みの絶対値の大きさ)の変化を観察する.
  10. 線にマウスカーソルを重ねると,重みが表示される。.
  11. ニューロンの左下の小さな四角にマウスカーソルを重ねると,バイアスが表示される。.

ヒント

考察ポイント

スライド資料と演習手順の資料は,https://www.kkaneko.jp/mi/index.html で,各回の授業開始時刻までに掲載します。

セレッソコースニュースで授業に関するお知らせを配信します。また,小テスト機能で課題を出します。あわせて確認してください。

本科目の資料は,以下の2種類で構成されています。

  • スライド資料:授業中にプロジェクタで説明するスライド(パワーポイント,PDF同じ内容)
  • 演習手順の資料:演習で使用する

第5回. ニューラルネットワークの基本構造と画像分類

ニューラルネットワークは脳神経回路を模した構造であり、各ニューロンは入力への重みづけ、合計とバイアス、活性化関数の適用という3段階で処理を行う。 学習は誤差に基づき重みとバイアスを修正する反復処理であり、繰り返しごとに誤差が減少するように処理を行う。 活性化関数は非線形変換を担い、中間層ではReLUなどを利用し、最終層では出力を確率へ変換するソフトマックスを用いるなど、層の役割に応じて使い分ける。 中間層を複数備えたディープニューラルネットワークは複雑なパターンの学習を可能にする。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

Chromeブラウザの翻訳機能の使い方

画面が英語で読みにくい場合は、以下の手順でページ全体を日本語に翻訳できる。

手順A:ページ上の文字のない場所(余白)を右クリックする。

手順B:表示されたメニューから「日本語に翻訳」を選ぶ。

手順C:ページ全体が日本語に切り替わる。元の英語に戻したい場合は、アドレスバー右側に表示される翻訳アイコン(丸の中にGの形)をクリックし、「英語」を選ぶ。

注意:Googleの翻訳では、専門用語や固有名詞が不自然な日本語になる場合がある。意味が分かりにくい箇所は、元の英語表示に戻して確認するとよい。

演習① Neural Network Visualizer による画像分類の学習体験

Neural Network Visualizer は,ニューラルネットワークの構造と学習過程をブラウザ上で視覚的に観察できる教材サイトであり,登録不要で利用できる.データセットの選択,ネットワーク構成の指定,訓練の実行,訓練中のニューロンの活性度の変化を確認できる.

Neural Network Visualizer のサイト:https://www.nn-visual.com/

操作手順

  1. URLにアクセスする.

    Neural Network Visualizer のサイト:https://www.nn-visual.com/

  2. 画面上部に「1 Pick Dataset」「2 Configure Network」「3 Initialize」「4 Train」の4つのセクションが順に並ぶ.
  3. 「1 Pick Dataset」セクションで,表示されているデータセットの中から「iris」のカードをクリックして選択する.iris は、あやめの花びら、がく片の幅と高さを測定したデータである. iris を選んだら、下の「Next: Configure Network」をクリックして次に進む.
  4. 「2 Configure Network」セクションで,中間層の数と各層のニューロン数を確認する.初期設定のままで実行できるため,変更しなくてよい.下の「Next: Review & Initialize」をクリックして次に進む.
  5. 「3 Initialize」セクションで「Initialize Model」ボタンをクリックし,ニューラルネットワークを初期化する.ネットワーク図に,入力層・中間層・出力層のニューロンと結合が表示される.
  6. 「4 Train」セクションの訓練開始ボタンである「Start Training」または「Train」繰り返しクリックする.訓練中に,ネットワーク図でニューロンの明るさ(活性度)が変化する様子を観察する.画面下部の「Training Loss」グラフで,学習の繰り返しごとに損失(誤差)が減少する様子を確認する.
  7. 余裕があれば,「2 Configure Network」に戻って中間層の数やニューロン数を変更し,「3 Initialize」で初期化しなおして訓練を行い,分類精度や学習過程の変化を比較する.

ヒント

考察ポイント

演習② ReLU(Pythonで実現)

ReLU は,ニューラルネットワークで用いられる活性化関数の一つである.負の入力を 0 に変換し,0 以上の入力はそのまま出力する関数である.本演習では,ReLU関数を実装したPythonプログラムを実行し,異なる入力値(負数,0,正数)に対する変換結果を確認することを目的とする.条件分岐(ifelse)によるプログラミングも体験する.

ソースコードのURL:https://trinket.io/python/61c6503fcada

操作手順

  1. URLにアクセスする.

    ソースコードのURL:https://trinket.io/python/61c6503fcada

  2. 画面の左側にソースコード,右側に実行結果(Result)が表示される.
  3. 実行結果が表示されない場合は,コードエリア上部の実行ボタン(▶ の三角形アイコン)をクリックする.
  4. 右側に,入力値 x = -2, -1, 0, 1, 2 のそれぞれに対する relu(x) の値が順に表示されることを確認する.
  5. 動作確認の後,左側のソースコード(入力値のリストや関数の定義)を書き替えて再度実行することもできる.書き替え後は,再度実行ボタンをクリックする.

ヒント

考察ポイント

演習③ 入力の重みづけ,合計とバイアス,活性化関数の適用

1つのニューロンに2つの入力 (x1, x2) を与え,重みとの掛け算,合計,バイアスの加算,活性化関数(ReLU)の適用という一連の計算を行う.本演習では,1つのニューロンの計算をPythonで実行し,4つの入力パターンに対する活性度を求める.重み,バイアス,活性化関数という3つの基本要素の役割と連携を理解する第一歩となる.

ソースコードのURL:https://trinket.io/python/1c339b660ee1

操作手順

  1. 上記のURLにアクセスする.

    ソースコードのURL:https://trinket.io/python/1c339b660ee1

  2. 画面の左側にソースコード,右側に実行結果(Result)が表示される.
  3. 実行結果が表示されない場合は,コードエリア上部の実行ボタン(▶ の三角形アイコン)をクリックする.
  4. 右側に,入力 (0, 0), (0, 1), (1, 0), (1, 1) のそれぞれに対する活性度が表示されることを確認する.
  5. 動作確認の後,左側のソースコード(重み,バイアス,入力など)を書き替えて再度実行することもできる.書き替え後は,再度実行ボタンをクリックする.

ヒント

考察ポイント

演習④ ニューラルネットワーク

複数のニューロンを層として組み合わせると,1層の場合より複雑な判断ができる.本演習では,3つのニューロン(n1,n2,n3)から成るニューラルネットワークをPythonで実行し,4つの入力パターンに対する活性度を求める.複数のニューロンが層を形成することによる情報処理の基礎を体験する.

ソースコードのURL:https://trinket.io/python/3cbc3f3ed057

操作手順

  1. 上記のURLにアクセスする.

    ソースコードのURL:https://trinket.io/python/3cbc3f3ed057

  2. 画面の左側にソースコード,右側に実行結果(Result)が表示される.
  3. 実行結果が表示されない場合は,コードエリア上部の実行ボタン(▶ の三角形アイコン)をクリックする.
  4. 右側の Result 欄に,入力 (0, 0), (0, 1), (1, 0), (1, 1) のそれぞれに対する活性度が表示されることを確認する.
  5. 動作確認の後,左側のソースコード(各ニューロンの重み・バイアス,入力など)を書き替えて再度実行することもできる.書き替え後は,再度実行ボタンをクリックする.

ヒント

考察ポイント

演習⑤ Fashion MNIST 画像分類のコード読解

TensorFlow のチュートリアル「基本的な画像分類」は,Fashion MNIST(衣料品・履物・バッグの計10クラスの28×28画素のグレースケール画像)を題材に,ニューラルネットワークによる画像分類の一連の流れをPythonコードで示している.本演習では,このチュートリアルのページをログインせずに閲覧し,説明文とソースコードを読み取って,画像分類の処理の流れを理解することを目的とする.コードの実行は行わない.コードに含まれる出力例(学習過程の表示,分類結果の図)も併せて確認する.

チュートリアルのURL:https://www.tensorflow.org/tutorials/keras/classification

操作手順

  1. 上記のURLにアクセスする.

    チュートリアルのURL:https://www.tensorflow.org/tutorials/keras/classification

  2. ページが表示される.ログインは不要である.
  3. ページを上から順に読み進める.ページは見出しごとに別れている.
  4. 「Fashion MNIST データセットをインポートする」のセクションで,fashion_mnist.load_data() によって訓練データ60,000枚とテストデータ10,000枚が読み込まれることを,説明文とコードから読み取る.10クラスのラベル(T-shirt/top,Trouser,Pullover,Dress,Coat,Sandal,Shirt,Sneaker,Bag,Ankle boot)の対応表を確認する.
  5. 「データの前処理」のセクションで,画素値が 0〜255 の整数であることをコード train_images = train_images / 255.0 によって 0〜1 の範囲に変換していることを確認する.
  6. 「モデルの構築」のセクションで,tf.keras.Sequential によるモデルの定義を読み取る.コードは Flatten(28×28画素を784の1次元配列に変換)→ Dense(128, activation='relu')(中間層 128 ニューロン,活性化関数 ReLU)→ Dense(10)(出力層 10 ニューロン)の順となっている.重みづけ・合計・バイアスの加算・ReLU の適用が,各層で行われていることを確認できる.
  7. 「モデルの訓練」のセクションで,model.fit(train_images, train_labels, epochs=10) による学習の出力例を確認する.訓練の繰り返し(Epoch 1/10 から Epoch 10/10)ごとに,損失(loss)が減少し,正解率(accuracy)が上昇する様子をページ内の出力例から読み取る.
  8. 「予測する」のセクションで,10クラスそれぞれの確率として分類結果が得られることを確認する.predictions[0] の出力(10個の数値)を見て,最も大きい値に対応するクラスが分類結果となることを np.argmax の説明から読み取る.
  9. 同セクションの図(テスト画像と棒グラフ)を確認する.棒グラフは10クラスそれぞれの確率を示す.正解の場合は青,不正解の場合は赤で表示される.

ヒント

考察ポイント

第6回. 学習と検証、学習不足、過学習、学習曲線

ニューラルネットワークの学習は、誤差算出・パラメータ更新を反復し、予測と正解の誤差を最小化する。 学習の目的は未知のデータにも対応する「汎化」であり、検証データを用いてその性能を評価する。 訓練データにのみ適合する過学習を防ぐため、データの増量や多様性向上、ネットワークの簡素化等を行う。 学習曲線の推移から訓練と検証の誤差が開き始める時点を過学習のサインと捉え、最適な学習状態を見極める。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習① 学習曲線の観察

本演習は,Google Colab上にプログラムと実行結果がすでに公開されている.利用者はそれを閲覧して観察するものであり,プログラムを自分で実行したり書き換えたりする必要はない.

観察対象は,同じ訓練データを用いた学習を20回繰り返し,学習の繰り返しごとに,訓練データと検証データに対する精度や誤差を算出した結果である.学習終了後の出力として,4つの画像(例:2,0,4,8)の分類結果(各カテゴリ0〜9の確率である10個の数値),学習終了時の結合の重み,および学習曲線(誤差の推移グラフ)が掲載されている.

プログラムの公開URL:https://colab.research.google.com/drive/1IfArIvhh-FsvJIE9YTNO8T44Qhpi0rIJ?usp=sharing

手順

  1. Webブラウザで,プログラムの公開URL「https://colab.research.google.com/drive/1IfArIvhh-FsvJIE9YTNO8T44Qhpi0rIJ?usp=sharing」を開く.
  2. このページは閲覧するだけで観察ができる.Googleアカウントは不要である.
  3. ページの先頭から末尾まで,各セルのプログラム,実行済みの結果,および説明文を順に閲覧する
  4. 学習の繰り返しを行うプログラムのセルでは,プログラム上の記述として,繰り返し回数EPOCHS=20,訓練データの指定(x=ds_train[0]y=ds_train[1]),検証データの指定(validation_data=(ds_test[0], ds_test[1]))の3か所を確認する.
  5. 同セルに掲載されている実行済みの出力のうち,Epoch 1/20 〜 Epoch 20/20の各行を見る.各エポックのloss(訓練データの誤差),accuracy(訓練データの精度),val_loss(検証データの誤差),val_accuracy(検証データの精度)の4つの数値が表示されていることを観察する.
  6. 結合の重みを表示するセル(m.get_weights()[2])に掲載されている出力を見て,学習終了時の結合の重みが多数の数値として表示されていることを観察する.
  7. 分類結果が掲載されているセルを見て,各画像について最終層の10個のニューロンから出力された10個の数値を観察する.画像ごとに,最も大きい値(≒1)となっているのが正解のカテゴリの位置であることを観察する.
  8. 誤差についての学習曲線のグラフが掲載されている箇所を見て,実線(訓練データの誤差)点線(検証データの誤差)が,学習の繰り返し(エポック)に伴ってどのように変化しているかを観察する.

ヒント

考察ポイント

演習② ニューロン数の異なるニューラルネットの学習曲線の比較

本演習も,Google Colab上にプログラムと実行結果がすでに公開されている.利用者はそれを閲覧して観察するものであり,プログラムを自分で実行したり書き換えたりする必要はない.

観察対象は,中間層のニューロン数のみが異なる3種類のモデル(400,4000,40000)について,20回の学習の繰り返しののち,検証データでの分類の正解率(分類精度)を計測した結果である.3つの結果を見比べることで,ニューロン数のちがいによる影響を観察する.

プログラムの公開URL:https://colab.research.google.com/drive/1-UWl-WEPmmNo-S_O17E5XPkF4tphE6xz?usp=sharing

手順

  1. Webブラウザで,プログラムの公開URL「https://colab.research.google.com/drive/1-UWl-WEPmmNo-S_O17E5XPkF4tphE6xz?usp=sharing」を開く.
  2. このページは閲覧するだけで観察ができる.Googleアカウントは不要である.
  3. ページの先頭から末尾まで,各セルのプログラム,実行済みの結果,および説明文を順に閲覧する
  4. 3種類のモデルそれぞれについて,プログラム上の中間層のニューロン数の設定箇所を見る.具体的には,1つ目のモデルが400,2つ目のモデルが4000,3つ目のモデルが40000に設定されていることを観察する.
  5. 各モデルについて掲載されている検証データでの分類精度(20回の学習後の正解率)の数値を読み取り,3つの値を見比べる.資料の例では,いずれも0.983となっている.
  6. 400のモデルについては次の部分。学習では乱数が使われているので、実際に表示される値は次のとおりにはならずわずかに変動する。

  7. 各モデルの学習曲線について,3つのグラフを見比べ,訓練データと検証データの誤差の推移のちがいを観察する.
  8. 400のモデルについては次の部分。学習では乱数が使われているので、実際に表示される値は次のとおりにはならずわずかに変動する。

ヒント

考察ポイント

演習③ 学習曲線の例(TensorFlowチュートリアル)

本演習は,TensorFlow公式チュートリアルの「オーバーフィットとアンダーフィット」のページを閲覧して観察するものである.ページ上には説明文と複数の学習曲線のグラフが掲載されており,利用者はそれらを読み,グラフを観察する.自分でプログラムを実行する必要はない.

手順

  1. WebブラウザでTensorFlowチュートリアルのトップページ「https://www.tensorflow.org/tutorials」を開く.
  2. 左側のメニューから「Keras による ML の基本」を展開(クリック)する.
  3. 展開された項目の中から「オーバーフィットとアンダーフィット」をクリックする.
  4. ページに記載の説明文をよく読み,理解を深める.
  5. ページ内に掲載されている学習曲線のグラフを観察する.実線(Train)は訓練データに対する誤差,破線(Val)は検証データに対する誤差を示す.
  6. 4種類のニューラルネットワーク(Tiny:1層目のユニット数16/Small:1層目16,2層目16/Medium:1層目64,2層目64,3層目64/Large:1層目512,2層目512,3層目512,4層目512)の学習曲線が並べて掲載されているグラフを見比べる.
  7. 過学習が起きていた「Large」に対し,L2正則化ドロップアウトを適用した結果の学習曲線が掲載されている箇所を観察する.青:Tiny/紫:Large + L2正則化/茶:Large + ドロップアウト/赤紫:Large + L2正則化 + ドロップアウト,の4本の曲線が示されている.

ヒント

考察ポイント

第7回. さまざまな機械学習 ー 機械学習の広がりを学ぶ

前回までに教師あり学習と画像分類を学んだ。今回はそこから、学習の枠組みを広げる方向(教師なし学習、強化学習、自己学習)と、扱うデータを広げる方向(系列データへの適用)を学ぶ。教師なし学習は、ラベル(正解)の無いデータから、パターン・構造・隠れた関係性を見つける手法である。応用範囲には、クラスタリング、異常検知、推薦システム、次元削減・データ圧縮がある。強化学習は、行動の結果として得られる報酬・ペナルティを手がかりに、より良い行動方針を学習する手法である。自己学習はその考え方を応用した発展的な形であり、経験の出どころが、強化学習では外部の環境であるのに対し、自己学習では自分自身との対戦である。系列データを扱う手法は、RNNからLSTMへと発展した。言語・音声を中心に主流はTransformerへ移行した。対話AIは、Transormer を使用しており、入力文から次に来る語を確率で予測し、それを繰り返して応答を作る。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習1.クラスタリング学習サイトの活用

クラスタリングは,似ているデータをクラスタに分ける手法である.本演習では,可視化サイト上でデータのまとまりに中心点(セントロイド)を置き,クラスタに分かれていく様子を観察する.

手順

  1. Webブラウザで,次のURLを開く.
    https://www.naftaliharris.com/blog/visualizing-k-means-clustering/
  2. 初期の中心点の選び方を尋ねる「How to pick the initial centroids?」の表示の下にある3つのボタン(I'll Choose,Randomly,Farthest Point)のうち,「Randomly」をクリックする.
  3. データの分布タイプを選ぶ箇所で,好みのものを1つ選ぶ(例:Gaussian Mixture).画面にデータが多数表示される.
  4. 「Add Centroid」をクリックする.クリックするたびに中心点が1つ追加される.自分が分けたいクラスタ数だけクリックする.
  5. 各データがどの中心点のクラスタに割り当てられ,中心点の位置がどのように動くかを観察する.位置の変化が止まる(収束する)まで繰り返し観察する.
  6. 別の条件で試す場合は,「Restart」をクリックして最初からやり直す.手順3〜5を繰り返す.

ヒント

考察ポイント


演習2.クラスタリングをPythonプログラムで行ってみる

本演習では,公開されているPythonプログラムを実行し,モール(商業施設)の顧客データに対してクラスタリングを行う.クラスタ数を1つずつ増やしながら,クラスタの分かれ方がどう変わるかを観察する.プログラムを自分で書き換える必要はない.

手順

  1. Webブラウザで,次のURLを開く.
    https://trinket.io/python/93ab2fb15488
  2. ページが開くと,左側にプログラム,右側に実行結果が表示される.右側に「K-means Clustering (k=2)」という見出しの散布図が表示されていることを確認する.
  3. 実行結果が表示されないときは,画面上部の「Run」(実行ボタン)をクリックして実行する.
  4. 右下の実行結果の画面に「Press Enter to see the next plot (k=3)...」と表示されていることを確認する.
  5. その右下の画面(「Press Enter to see the next plot」と表示されている画面)を一度クリックし,続けてEnterキーを押す.
  6. クラスタ数が3に増えた散布図が表示されるので確認する.
  7. その後,手順5(画面をクリックしてEnterキー)と手順6(クラスタ数が増えた結果の確認)を繰り返す.Enterキーを押すたびにクラスタ数が4,5,6…と増えていく.

ヒント

考察ポイント


演習3.LSTM を用いた予測の例

系列データとは,順序付けられたデータの並びである.本演習では,毎日の太陽の黒点数という系列データを扱う.過去のデータをもとに将来を予測したプログラムと,その実行結果(実際のデータと予測結果)を閲覧して観察する.プログラムを自分で実行したり書き換えたりする必要はない.

手順

  1. Webブラウザで,次のURLを開く.
    https://colab.research.google.com/drive/1tLfijmXCJyg--4Jr5pbzV5G7p_3LILQD?usp=sharing
  2. ページの先頭から末尾まで,各セルのプログラムと,掲載されている実行済みの結果を順に閲覧する.その際、スクロール操作が必要。Googleアカウントは不要で,閲覧するだけで観察できる.
  3. 掲載されている2つのグラフを見る.左のグラフ(「2000年以降の黒点数(実測値)」)が実際のデータであり,右のグラフ(「1848年から1999年までの黒点数をもとに AI が予測した 2000年以降の黒点数」)が過去データからの予測であることを確認する.
  4. 左のグラフ(実際のデータ)で,黒点数が時間とともに増えたり減ったりを繰り返している様子を観察する.
  5. 右のグラフ(予測)で,過去のデータだけから予測した黒点数が,どのような増減を示しているかを観察する.
  6. 左(実際)と右(予測)の2つのグラフを見比べ,増減のタイミングや波の形がどの程度似ているか,どの程度違っているかを観察する.

ヒント

考察ポイント

第8回. AIとコンピュータビジョン

デジタル画像は格子状の画素から成り、濃淡は0〜255、カラーはRGB各0〜255の数値で表現される。 ディープラーニングは多層構造のニューラルネットワークを持ちて、低次(エッジ・色)、高次(物体)の特徴を抽出する。 畳み込みニューラルネットワーク(CNN)は畳み込み層・プーリング層・全結合層を組み合わせたニューラルネットワークで、画像の局所的特徴を効率的に捉えることができる。画像理解は、主な3種類として、分類・物体検出・セグメンテーションがある。これらは、顔処理や自動運転等に応用される。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習① CNN Explainer による画像分類ネットワークの観察

CNN Explainer は,畳み込みニューラルネットワーク(CNN)の構造と各層の処理結果をブラウザ上で視覚的に観察できる教材サイトである.ジョージア工科大学 Polo Club が公開しており,登録不要で利用できる.画像分類を行うネットワークが,畳み込み層・プーリング層・全結合層から構成される様子を確認できる.

CNN Explainer のサイト:https://poloclub.github.io/cnn-explainer/

操作手順

  1. Webブラウザで次のURLを開く.

    CNN Explainer のサイト:https://poloclub.github.io/cnn-explainer/

  2. 画面が表示されたら,画面上部に並ぶ画像(複数の写真)の中から1つをクリックして選択する.選択した画像が,左端の「input」に入力画像として表示される.
  3. 左端の「input」の下に,選んだ画像の赤(Red channel)・緑(Green)・青(Blue)の3つの成分が表示されることを確認する.これはカラー画像がRGBの3つの数値で構成されることを示している.
  4. 画面右端の「output」を見る.ここに各クラスの分類結果が表示される.最も反応が大きいクラスが分類結果である.
  5. 画面中央には,各層の処理結果が画像として並んで表示される.上部のラベルで「conv」が畳み込み層,「relu」が活性化関数(ReLU)の処理,「max_pool」がプーリング層であることを確認する.
  6. 中央に並ぶ画像のうち,左上の処理結果画像を1つクリックする.畳み込みの様子がアニメーションで表示される.
  7. 表示されたアニメーション内の処理途中の画像をさらにクリックすると,カーネルを重ね合わせて1つの値を計算する詳細な畳み込み過程をアニメーションで確認できる.
  8. 確認を終えたら,アニメーション右上の閉じるボタンで表示を閉じ,別の入力画像を選んで同様に観察する.

ヒント

考察ポイント

演習② Animated AI による畳み込みアルゴリズムの観察

Animated AI は,ニューラルネットワークのアルゴリズムをアニメーションで解説する教材サイトである.登録不要で利用できる.トップに置かれた「The Basic Algorithm」では,畳み込みの仕組みをアニメーションで観察できる.

Animated AI のサイト:https://animatedai.github.io/

操作手順

  1. Webブラウザで次のURLを開く.

    Animated AI のサイト:https://animatedai.github.io/

  2. ページが表示されたら,トップにある「The Basic Algorithm」のアニメーションを表示する.このアニメーションは畳み込みの基本的な処理を示している.
  3. アニメーションの中で,左側に表示される「元データ」を確認する.元データは3次元(縦・横・成分の方向に広がる立体)である.
  4. 右側に表示される複数の「カーネル」を確認する.この例ではカーネルは全部で8個ある.各カーネルも3次元である.
  5. カーネルが元データ上を移動しながら重ね合わせ(掛け算と合計)を行い,「畳み込み結果」が作られていく様子をアニメーションで観察する.
  6. アニメーションを繰り返し再生し,カーネルが移動する順序と,結果が1マスずつ埋まっていく対応を確認する.

ヒント

考察ポイント

演習③ YOLO による物体検出(Google Colaboratory)

Google Colaboratory 上に用意されたページで,物体検出モデル YOLO のプログラム・説明・実行結果を確認する.YOLO は,物体の位置と種類を一括で予測する物体検出モデルである.

Google Colaboratory のページ:https://colab.research.google.com/drive/18IPPkY96Oc6jkYD2su4cFgWcoYAskLo_?usp=sharing

操作手順

  1. Webブラウザで次のURLを開く.

    Google Colaboratory のページ:https://colab.research.google.com/drive/18IPPkY96Oc6jkYD2su4cFgWcoYAskLo_?usp=sharing

  2. ページが表示されたら,プログラム・説明・実行結果が掲載されていることを確認する.上から順に,各自でよく読む.
  3. ページ内を下にスクロールし,「5. 物体検出と YOLO」の項目を確認する.
  4. 「5. 物体検出と YOLO」の【概要】に記載された使用モデルと特徴の説明を読む.使用モデルは YOLOv5(COCOデータセットで学習済み)である.
  5. 掲載されている実行結果を見て,画像中の物体が四角形(バウンディングボックス)で囲まれ,種類のラベルが付けられている様子を確認する.

ヒント

考察ポイント

第9回. 知識表現と推論

AIにおける知識表現では、知識を「事実」と「ルール」に整理し、推論により自動的に結論を導く。金融の自動審査や不正検知など、明確なルールに基づく判定と、その判断理由の説明が求められる業務に有用である。機械学習が大量データから見つけたルールを推論に適用することで、より高度で説明可能なAIシステムの構築が可能である。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習① Prolog による推論

オンラインのProlog環境である SWISH を利用して、Prologの基本動作と推論エンジンによる自動判定を体験する

操作手順

  1. Webブラウザで SWISH のサイトにアクセスする。
    SWISH のサイト:https://swish.swi-prolog.org
  2. 画面左上の「Program」をクリックし、Prologのプログラム編集画面を開く。
  3. プログラムの編集画面(Your Prolog rules and facts go here)に、以下の事実とルールを入力する:
    human(hanako).
    human(taro).
    think(X) :- human(X).
  4. 画面右下の問い合わせ入力欄(?-の右側)に human(X). と入力し、右下の「Run」ボタンをクリックする。さらに「Next」ボタンをクリックし、答えが増えなくなるまで結果(X = hanako, X = taro)を確認する。
  5. 前の問い合わせを消してから、新たに think(X). と入力して「Run」ボタンをクリックし、「Next」ボタンで答えが増えなくなるまで確認する(X = hanako, X = taro)。
  6. 問い合わせ入力欄を think(taro). に書き換えて「Run」ボタンをクリックし、結果に true と表示されることを確認する。

ヒント

考察ポイント


演習② 家族関係の推論

家族関係を例にして、複数の事実とルールに基づく推論と、成り立たない場合の結果を確認する。

操作手順

  1. 引き続き SWISH の「Program」編集画面を利用する。
  2. 編集画面の内容をクリアし、以下の新しいプログラムを入力する:
    male(ali).
    female(zeyn).
    female(anne).
    parent(ali, anne).
    parent(zeyn, anne).
    child(Y, X) :- parent(X, Y).
  3. 問い合わせ入力欄に male(ali). と入力し「Run」ボタンをクリックして、結果が true になることを確認する。
  4. 前の問い合わせを消し、male(anne). と入力して「Run」ボタンをクリックし、結果が false になることを確認する。
  5. 問い合わせ入力欄を parent(ali, anne). に書き換えて「Run」ボタンをクリックし、結果が true になることを確認する。
  6. 問い合わせ入力欄を child(anne, ali). に書き換えて「Run」ボタンをクリックし、結果が true になることを確認する。

ヒント

考察ポイント


演習③ 様々な問い合わせ

同じ家族関係のプログラムを使い、変数を組み合わせた多様な問い合わせを行い、Prologがどのように答えを探索するかを観察する。

操作手順

  1. 演習②で入力したプログラムをそのまま使用する。
  2. 問い合わせ入力欄に male(X). と入力して「Run」ボタンをクリックし、X = ali と表示されることを確認する。
  3. 問い合わせ入力欄を female(X). に書き換えて「Run」ボタンをクリックする。さらに「Next」ボタンをクリックして答えが増えなくなるまで確認し、結果が X = zeynX = anne になることを確認する。
  4. 問い合わせ入力欄を parent(X, Y). に書き換えて「Run」と「Next」をクリックし、すべての結果(X = ali, Y = anneX = zeyn, Y = anne)を確認する。
  5. 同様に child(X, Y). を入力して確認し、結果(X = anne, Y = aliX = anne, Y = zeyn)を確認する。
  6. 問い合わせ入力欄を parent(ali, Y). と書き換えて「Run」ボタンをクリックし、結果(Y = anne)を確認する。
  7. 最後に child(ali, Y). と書き換えて「Run」ボタンをクリックし、結果が false となることを確認する。

ヒント

考察ポイント

スライド資料と演習手順の資料は,https://www.kkaneko.jp/cs/index.html で,各回の授業開始時刻までに掲載します。

セレッソコースニュースで授業に関するお知らせを配信します。また,小テスト機能で課題を出します。あわせて確認してください。

本科目の資料は,以下の2種類で構成されています。

  • スライド資料:授業中にプロジェクタで説明するスライド(パワーポイント,PDF同じ内容)
  • 演習手順の資料:演習で使用する

第10回. 探索、総当たり、発見的探索

AIの基礎の1つとして「状態(今の状況)・行動(取りうる操作)・遷移関数(行動で状態がどう変わるか)」の枠組みがある。これは、行動による状態変化を扱うものである、「適用条件」は、行動が可能である条件を示す。 遷移関数をもとに、将来にわたる可能な行動と状態を算出(探索)し、算出された状態をを評価して実際に行動を絞る(選択)という二段階処理で、将来の行動の探索と選択ができる。これは、ゲームAI、自動運転、在庫管理など幅広く応用できる。 起点から枝分かれする経路(パス)の集まりを「木」という。木を使うことで、調べ済みの経路を二度たどらず未探索の経路を一つずつ調べることが簡単にできるようになる。 総当たりは全経路を試し最適解を得る。A*法は「来た道の長さ+ゴールまでの見積もり」が小さい行動を優先して調べる。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

[演習の詳細を表示するには、この行をクリックしてください]

演習1 総当たり(パスと木構造をアニメーションで観察)

この演習では,Python の turtle グラフィックスを使い,同じ起点から始まる5つのパス(経路)がアニメーションで順番に描かれる様子を観察します.総当たりが「すべてのパスを試す」とはどういうことか,パスと木構造の関係を体感することが目的です.

使用するサイト(trinket,登録不要・ブラウザのみで実行可能):
https://trinket.io/python/912b1bb2e3

操作手順

  1. Webブラウザのアドレス欄に https://trinket.io/python/912b1bb2e3 と入力し,このページを開く.
    trinket の編集画面が表示され,画面の左側に Python のプログラム(main.py),右側に実行結果(Result)の領域が並ぶ.
  2. 実行が開始していないバアは、画面上部の実行(▶ Run)ボタンをクリックして,プログラムを実行する.
  3. 右側に,turtle が描く線がアニメーションで表示される.5つのパスが1本ずつ順番に描かれていくので,それぞれが起点(同じ開始位置)からどの方向へ進むかを観察する.
  4. 各パスが描かれるとき,画面に 1 (1,0) のように行動番号と移動先の座標が表示される.数字が,今どのパスのどの行動を実行しているかを示している.

ヒント

考察ポイント

演習2 A*法による迷路探索(発見的探索の観察)

この演習では,A*法(エイ・スター法)で迷路の最短経路を探索する過程を,ブラウザ上のシミュレータで観察します.A*法が「来た道の長さ+ゴールまでの見積もり」を手がかりに,ゴールに近そうな方向へ絞って効率よく探索する様子を確認することが目的です.

使用するサイト(PathFinding.js,登録不要・ブラウザのみで利用可能):
https://qiao.github.io/PathFinding.js/visual/

操作手順

  1. Webブラウザのアドレス欄に https://qiao.github.io/PathFinding.js/visual/ と入力し,このページを開く.
    格子状のマス目(グリッド)が表示され,緑のマスが起点,赤のマスが終点である.
  2. 画面左上のアルゴリズム選択欄が 「A*」 になっていることを確認する.なっていない場合は,選択欄をクリックして一覧から 「A*」を選ぶ
  3. グリッド上でマウスのボタンを押したままドラッグして,灰色の壁(障害物)を描き,迷路を作る.緑(起点)と赤(終点)のマスは,それぞれドラッグして好きな位置に動かせる.
  4. 画面上の 「Start Search」ボタンをクリックして,探索を開始する.
  5. 探索の様子を観察する.水色のマスは探索された部分薄緑のマスは通らないことにした方向を表す.探索が終わると,起点から終点までの黄色の線が最短経路として表示される.
  6. 別の迷路を試すときは,「Clear Walls」ボタンをクリックして壁を消し,新しい迷路を描いてから,再び「Start Search」をクリックする.

ヒント

考察ポイント

第11回. プログラミング基礎と探索アルゴリズム

プログラミングには、入力、出力、順次実行、条件分岐、繰り返しという5つの基本機能がある。AI を動かすための状態・行動・遷移関数は、このうち変数と関数を使って表現できる。すなわち、状態は変数で、遷移関数は関数で記述できる。そして、これらを組み合わせれば探索も実現できる。 探索で解ける問題の例として、「2つの水差し問題」がある。この問題では、8通りの行動の組み合わせを総当たりで試すことで、目標とする水量に達する手順を見つけ出すことができる。 一方、あらかじめ必勝の方針が分かっている問題もある。「21ゲーム」では、後手が自分の手番のたびに合計を4の倍数に保てば必ず勝てる。この戦略どおりに打つプログラムも、同じ枠組みで実現できる。

スライド資料

[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)

動画

[動画]

演習① 2つの水差し問題のプログラムによる総当たり探索

容量4の水差し①と容量3の水差し②を使い,「8つの行動」を組み合わせて到達できる水の量をすべて見つける演習である.水差しの状態を変数 (x, y) で表し,x は水差し①の水の量,y は水差し②の水の量である.プログラムは trinket(Python や HTML のプログラムをブラウザ上で書いて実行できるサイト)上で,登録不要で実行できる.プログラム内の変数 nsteps が行動回数を示しており,初期値は nsteps = 2 である.

演習①のプログラムのURL:https://trinket.io/python/1b2d25b99b

操作手順

  1. 演習①のプログラムのURL https://trinket.io/python/1b2d25b99b をブラウザで開く.画面の左側にソースコードの編集画面,右側に実行結果が表示される.
  2. 画面上部の「Run」ボタン(実行ボタン)をクリックしてプログラムを実行する.実行が自動で始まっている場合は,そのまま結果を確認する.
  3. 右側の実行結果に,[行動の番号の並び] x y の形式で,nsteps = 2 回の行動を組み合わせた経路ごとに,最終的な水差し①の水の量 x と水差し②の水の量 y が表示される.表示された全ての行を確認し,2回の行動で到達できる (x, y) の組をすべて読み取る.
  4. ソースコード中の nsteps = 2 の行を nsteps = 3 に書き替える(「3」は必ず半角の数値にすること).書き替えはソースコード編集画面の該当行をマウスでクリックして数字を直接編集する.書き替えたら「Run」ボタンを再度クリックして実行する.3 回の行動で到達できる (x, y) の組を確認する.
  5. 同じ手順で,nsteps = 4 に書き替え(「4」は必ず半角の数値にすること)て再実行する.4回の行動で到達できる (x, y) の組を確認する.資料の例では,4回の行動で [5, 8, 5, 7] 4 2 という出力があり,行動 5 → 行動 8 → 行動 5 → 行動 7 の順で行うと x = 4, y = 2 となり,水差し②の水の量が 2 になることが示されている.自分の実行結果からも,水差し①または水差し②の水の量が 2 になる経路を探す.
  6. 実行を止めたいときは,画面上部の「Stop」ボタンをクリックする.

ヒント

考察ポイント


演習② 21ゲームでの後手必勝アルゴリズムの体験

0から始めて,自分のターンに1・2・3のいずれかを足し合計に加える.21を言った(合計を21にした)方が負けというゲームである.後手は,自分のターン終了時の合計を常に「4の倍数」に保てば必ず勝てる.この演習では,ユーザ(自分)が先手,コンピュータが後手となり,コンピュータが後手必勝のアルゴリズム r = (4 - a % 4) % 4(r が 0 のときは r = 1 に補正)で動作する.プログラムは trinket 上で登録不要で実行できる.

演習②のプログラムのURL:https://trinket.io/python/58bb317816

操作手順

  1. 演習②のプログラムのURL https://trinket.io/python/58bb317816 をブラウザで開く.画面の左側にソースコードの編集画面,右側に実行結果が表示される.
  2. 画面上部の「Run」ボタン(実行ボタン)をクリックしてプログラムを実行する.実行が自動で始まっている場合は,そのまま次へ進む.
  3. 右側の実行結果欄に「あなたの番(1〜3):」と表示されたら,マウスでその右側の入力欄をクリックして,半角の数字で 1,2,3 のいずれかを入力し,Enter キーを押す.入力を間違えたときは Del キーまたは BS キーで消す.
  4. 入力後,「a = ○」の形式で,自分のターン終了時の合計 a が表示される.続いてコンピュータが行動し,「computer: ○, a = ○」の形式で,コンピュータが選んだ数と,コンピュータのターン終了時の合計 a が表示される.
  5. 同じ手順を繰り返す.自分のターンが来るたびに,1・2・3 のいずれかを半角で入力し,Enter キーを押す.
  6. 合計が 21 になったときにゲームが終わる.「あなたの負けです」と表示されたら,ユーザが負けである.画面上部の「Stop」ボタンをクリックして終了する.
  7. 余裕があれば,「Run」ボタンを再度クリックして再開し,1・2・3の入力の組み合わせを変えて,何度か対戦を試す.

ヒント

考察ポイント


昨年度(2025年度)の資料について(クリックにより中身が表示されます)

参考として,昨年度のスライド資料を掲載しています。今年度と内容が異なる場合がありますので,あくまで参考としてください。今年度の資料は,このページ(https://www.kkaneko.jp/mi/index.html)に整備していきます。


授業計画(クリックにより中身が表示されます)

詳しくは「シラバス」を参照してください。

最新技術の反映、パソコン教室のパソコンを用いた演習の充実などにより、一部内容が変更になる場合があります。

  1. データサイエンス・AIでできること,社会の変化
    • 人工知能社会の到来
    • 社会で活用されているデータサイエンス・AI
    • データサイエンス・AI活用の現場と最新動向
    • 産業・社会・生活での変化
    • データの活用(オープンデータ、政府統計データなど)
  2. データサイエンス・AIの事例,技術
    • データサイエンス・AIの活用領域
    • データサイエンス・AI利活用のための技術
    • データの説明手法(散布図,分布,密度など)
    • AIによる分類・特徴抽出・予測
    • データサイエンス・AIの歴史と応用分野,最新技術
  3. 実データによるデータサイエンス・AIの演習
    • 政府統計データ、オープンデータの活用
    • データ分析手法(クロス集計,相関,平均,誤差)
    • データ・AI利活用における留意事項(プライバシー、個人情報、倫理、情報漏えいの防止など)
  4. 機械学習の基礎とニューラルネットワーク
    • 機械学習の基礎と展望
    • データからの学習のメカニズム
    • 最適化アルゴリズムの基本概念
  5. ニューラルネットワークの基本構造と画像分類
    • ニューラルネットワークの基本構造
    • ニューラルネットワークの学習方法
    • 学習メカニズム
    • 画像分類システムの基本構造
    • パターン抽出、特徴抽出
    • ディープラーニングへの接続
  6. ニューラルネットワークシステムの構築と運用
    • 学習の検証と評価(学習不足,過学習,学習曲線)
    • システムの運用方法
    • AI活用の企画・実施・評価の全体像
  7. さまざまな機械学習 ー 機械学習の広がりを学ぶ
    • 教師なし学習
    • 強化学習、自己学習
    • ディープラーニングの特色、応用分野
    • 系列データ分析
  8. AIとコンピュータビジョン
    • コンピュータビジョン
    • AIによる画像の認識・理解、基礎技術
    • 画像理解の3種類:画像分類、物体検出、セグメンテーション
    • 顔情報処理、顔ランドマーク
  9. 知識表現と推論
    • 推論エンジンの仕組み
    • 述語論理の基礎
    • AIとデータの組み合わせによる知識創造、知識活用
  10. データ構造とアルゴリズムの基礎
    • データ構造(パス,木)の基本概念
    • アルゴリズムの基礎
    • 探索アルゴリズムの基礎と応用
    • 知的なシステム
    • 発見的探索の手法
  11. プログラミング基礎と探索アルゴリズム
    • プログラミング基礎の習得
    • プログラミングによる知的なゲームプレイヤーの実現
    • 探索アルゴリズムの実現
    • 日常生活の課題解決のためのプログラミング
  12. 自然言語処理
    • 形態素解析
    • 日本語文書の類似度分析と感情度分析
    • テキストマイニング(文書からの有用な情報の抽出)
  13. コンピュータでのデータ表現とデータエンジニアリング
    • ビッグデータの特徴と活用方法
    • コンピュータでのデータ表現の基礎と具体的方法
    • データ処理技術(Excel関数,インポート)
    • データエンジニアリングの実践
  14. AI対話システム
    • AI対話システムの概要
    • AI対話システムとの協働と問題解決
    • AI対話システムのベストプラクティス、注意点、展望
    • データの説明、データの分析、データの処理での活用
    • 知識ベースとしての活用
  15. 生成AIの基礎と展望
    • AIとデータの共創
    • 生成AIの応用分野
    • 画質改善
    • 具体的領域での生成AIによる問題解決
    • 文章からの音声・画像・動画表現生成

人工知能をいつでも学べるプラットフォーム開始

https://platform.aistudio.jp/

株式会社dott社との協働によるものです。現在は,5回分の授業の資料を見やすい形に整形して公開しています。