「人工知能」サポートページ
授業担当教員:金子邦彦(情報工学科), サポートページ:https://www.kkaneko.jp/mi/index.html, 場所:4号館3階PC1室(04201室), 福山大学キャンパスマップ:https://www.fukuyama-u.ac.jp/about/access/, 時間:水曜日2時限
お知らせ
- シラバスで「ノートパソコンの持参」を求めていましたが,パソコン教室での実施となったため,ノートパソコンの持参は不要になりました。急な変更をお詫びします。
人工知能 [動画] (クリックすると再生開始), [パワーポイント] (Gemini, Vrew を用いて作成)
今年度(2026年度)の資料について
第1回. データサイエンス・AIでできること、社会の変化
人工知能は,コンピュータが人間のような知的能力を持つことを目指す技術である。 データから自ら学習する機械学習と,人間が書いたルールや知識を用いる知的なITシステムに大別される。 応用分野は,画像分類・顔検知・セグメンテーション,対話型AI,自動翻訳,データ分析と予測,GANによる画像合成など多岐にわたる。 学習データに偏りがあると結果にも偏りが出るため利用には注意が必要である。
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
動画
以下の演習では,説明部分で学んだAIの概念を,オンラインデモを通じて体験する.各デモの結果を観察し,考察すること.
演習1から7まで挑戦してみることが望ましい(うまく動かない場合でも経験になる)。ブラウザの種類・バージョンによっては動作しない可能性もある。その場合は、その演習を飛ばして次に進んで欲しい。(その際、個別対応ができない場合がある。うまく動くものを試して欲しい)。
習っていない言葉(例:隠れ層)などが出てくるが、将来の授業で説明予定なので心配しないでほしい。今回は体験である。演習8から11は余裕がある人向けである(注意書きを確認の上で各自で実行してほしい)。
説明の「ニューラルネットワークの基本構造」に対応する演習である.畳み込みニューラルネットワーク(CNN)の内部構造を3Dで可視化し,各層がどのように入力を処理しているかを観察する. URL: https://adamharley.com/nn_vis/cnn/3d.html 操作手順 観察と考察 説明の「ニューラルネットワークの基本構造」に対応する演習である.ニューラルネットワークの構造やパラメータを変更しながら,学習過程の変化を観察する. URL: https://playground.tensorflow.org 操作手順 観察と考察 説明の「探索による問題解決」に対応する演習である.探索アルゴリズムが経路を見つける過程を可視化し,コンピュータによる探索の仕組みを理解する. URL: https://qiao.github.io/PathFinding.js/visual/ 操作手順 観察と考察 説明の「自動翻訳サービス」に対応する演習である.AIによる自動翻訳の精度と自然さを体験する. URL: https://www.deepl.com/ja/translator 操作手順 観察と考察 説明の「人間の下書きをAIが清書する」に対応する演習である.手描きの下書きをAIが認識し,候補イラストを提示する仕組みを体験する. URL: https://www.autodraw.com/ 操作手順 観察と考察 説明の「AIでスケッチを増やす」に対応する演習である.VAEにより,描いたスケッチに似たスケッチを複数生成する技術を体験する. URL: https://magenta.tensorflow.org/assets/sketch_rnn_demo/multi_vae.html 操作手順 観察と考察 説明の「手書きの線画から画像を生成する」に対応する演習である.pix2pix(GAN技術)を使用して,手書きの線画からカラー画像を生成する技術を体験する. URL: https://mitmedialab.github.io/GAN-play/ 操作手順 観察と考察
ここから先は、余裕のある人向け(自分でWebカメラや画像ファイルを準備して、自力で進める人向け)である。
演習8〜11はWebカメラや画像ファイルが必要である(どちらになるかは演習によって違う).教室PCにはウェブカメラが搭載されていないため,個人PCでウェブカメラを搭載している場合に試すことができる.画像ファイルを使用する場合は,あらかじめ画像を準備しておくこと. 説明の「訓練データと学習の仕組み」に対応する演習である.自分のデータで訓練データの作成,学習,推論の一連の流れを体験する. (注意点:Webカメラあるいは画像ファイルの準備.個人PCでウェブカメラ搭載の場合、簡単に試すことができる.教室PCにはウェブカメラがない) URL: https://teachablemachine.withgoogle.com/ 操作手順 観察と考察 説明の「画像分類」に対応する演習である.画像をアップロードし,AIによるラベル付けや物体検出を体験する. URL: https://cloud.google.com/vision/docs/drag-and-drop 操作手順 観察と考察 説明の「顔検知」「顔のキーポイント検出」「表情の自動判定」に対応する演習である.1つのデモで顔に関する複数のAI技術を体験する. URL: https://modern-face-api.vercel.app/ (画像アップロード.個人PCでウェブカメラ搭載の場合のみ試すことができる.教室PCにはウェブカメラがない) 操作手順 観察と考察 説明の「人体の姿勢の読み取り」に対応する演習である.人体の関節位置を検出し,骨格を可視化する技術を体験する. URL: https://huggingface.co/spaces/hysts/mediapipe-pose-estimation 操作手順 観察と考察
[動画],
[YouTube動画]
[演習の詳細を表示するには、この行をクリックしてください]
演習について
演習1. CNN 3D Visualization(Adam Harley)(機械学習・ニューラルネットワーク)
演習2. TensorFlow Playground(機械学習・ニューラルネットワーク)
演習3. PathFinding.js Visual(知的なITシステム)
演習4. DeepL(AIでできること)
演習5. AutoDraw(Google)(AIによる合成)
演習6. Sketch RNN VAE Demo(Magenta)(AIによる合成)
演習7. GAN-play(MIT Media Lab)(AIによる合成)
演習8. Teachable Machine(Google)(機械学習・ニューラルネットワーク)
演習9. Google Cloud Vision API Demo(AIでできること)
演習10. Modern Face API Demo(AIでできること)
演習11. MediaPipe Pose Estimation(Hugging Face)(AIでできること)
第2回. データサイエンス・AI の事例、技術
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
データサイエンスは,データから有益な情報を導き出すための学問である。散布図やヒストグラムなどでデータを可視化する。 機械学習は,コンピュータがデータを使用して学習し知的能力を向上させる技術で,パターンや関係性を自動で発見する。 機械学習には,正解の組を用いる教師あり学習のほか教師なし学習や強化学習があり,代表的手法にディープラーニングがある。 いずれもデータに基づく技術である。結果に100%の正確性は保証されず,データの選択・前処理に注意が必要である。
動画
以下の演習では,説明部分で学んだデータサイエンス、機械学習の概念をについて理解を深める.
ペンギン3種類のデータを使い,Excelの関数で合計と平均を求める演習である.種類ごとの平均を比較することで,種類による体の特徴の違いを数値で把握する. 使用データ:penguins.xls 操作手順
H2に「くちばしの長さ(mm)」,I2に「くちばしの深さ(mm)」,J2に「フリッパーの長さ(mm)」,K2に「体重(g)」の平均が求まっていることを確認する。
I3,J3,K3も同様に行う。I3に「=AVERAGE(C153:C275)」,J3に「=AVERAGE(D153:D275)」,K3に「=AVERAGE(D153:D275)」と入力する
I4,J4,K4も同様に行う。
I4に「=AVERAGE(C276:C343)」,J4に「=AVERAGE(D276:D343)」,K4に「=AVERAGE(E276:E343)」と入力する
左から順に、「くちばしの長さ(mm)」,「くちばしの深さ(mm)」,「フリッパーの長さ(mm)」,「体重(g)」の平均
観察と考察 ペンギン3種類のデータを使い,Excelで散布図を作成する演習である.2つの特徴量を横軸と縦軸にとり,種類ごとのデータの分布やかたまりを視覚的に確認する. 使用データ:penguins.xls(演習1と同じファイルをそのまま使用する) 操作手順
結果
参考(色分けして1枚にしたもの)
観察と考察 ペンギン3種類の体重データを使い,Excelでヒストグラムを作成する演習である.データの散らばり方(分布)を可視化し,平均だけでは分からない特徴を読み取る. 使用データ:penguins.xls(演習1,2と同じファイルをそのまま使用する) 操作手順 観察と考察 演習1〜3と同じペンギンのデータを使い,機械学習(教師あり学習)でペンギンの種類を自動分類する様子を観察する演習である.演習2の散布図で人間が目で確認した「種類ごとのかたまり」を,コンピュータが自動で分類する仕組みを体験する. 使用データ:penguins.xls(演習1〜3と同じファイル) 実行の流れ 左が実データ。右が機械学習による予測(3種を予測)
観察と考察
[演習で用いたパーマーペンギンデータの準備手順]
演習のパーマーペンギンデータの準備手順を説明しているものであり、各自の演習として取り組む必要はない
[動画], [YouTube動画]
[演習の詳細を表示するには、この行をクリックしてください]
演習について
演習1. 平均(Excel)
演習2. 散布図(Excel)
演習3. ヒストグラム(Excel)
演習4. 機械学習によるペンギンの種類の自動分類(Google Colab)
https://raw.githubusercontent.com/allisonhorst/palmerpenguins/master/inst/extdata/penguins.csv
第3回. 実データによるデータサイエンス・AIの演習
オープンデータには,政府統計e-Stat,気象データ,GTFS形式の公共交通データ,AED設置場所,感染症動向データなどがある。 利用時は,データの品質や信頼性の確認,著作権の尊重,出典の明示,公開者が定める利用条件の遵守が必要である。 クロス集計表は2つの変数の組み合わせごとに人数等を集計した表である。相関係数は2つの変数の関係の強さを表す数値である。 分析の前に散布図でデータの分布を確認し,サンプル数やデータの偏りの確認も必要である。
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
以下の演習では,説明部分で学んだデータサイエンス・AIの概念を,オンラインデモを通じて体験,さらに,各自データをダウンロードしてExcelを用いて分析する.
演習1と演習2は、「自分が知らなかった事実」を1つでも見つけることが目的である。
演習3と演習4と演習5は、「自分でデータを取得し、自分で分析し、自分で考える」ことを行う。
いずれも、データ分析者としてスキルを磨くことになる。
質問は英語で与える必要がある。
翻訳サイトDeepL:
https://www.deepl.com/ja/translatorを必要に応じて活用して欲しい
画面が英語で読みにくい場合は、以下の手順でページ全体を日本語に翻訳できる。 手順A:ページ上の文字のない場所(余白)を右クリックする。 手順B:表示されたメニューから「日本語に翻訳」を選ぶ。 手順C:ページ全体が日本語に切り替わる。元の英語に戻したい場合は、アドレスバー右側に表示される翻訳アイコン(丸の中にGの形)をクリックし、「英語」を選ぶ。 注意:Googleの翻訳では、専門用語や固有名詞が不自然な日本語になる場合がある。意味が分かりにくい箇所は、元の英語表示に戻して確認するとよい。 概要 Google Data Commonsは、世界各国の公的機関(日本の国勢調査、米国国勢調査局、世界銀行、WHO、CDC等)が公開する統計データを1か所に集めたオープンデータプラットフォームである。検索欄に英語で質問を入力すると、大規模言語モデル(LLM:Large Language Models、大量のテキストで学習した言語処理AI)が質問を解釈し、統計を地図やグラフで自動的に可視化(データをグラフや地図で見える形にすること)する。 操作手順 手順1:ブラウザで https://datacommons.org/ にアクセスする。 手順2:画面の上部中央の検索欄をクリックする。 手順3:以下のいずれかの質問例をコピーして検索欄に貼り付け、Enterキーを押す。 それぞれの意味は、1つ目が「日本の人口推移」、2つ目が「日本とG7各国の平均寿命比較」、3つ目が「東京の失業率」である。トップページに表示される質問例(Sample questions)をクリックして試してもよい。 手順4:画面に折れ線グラフ・地図・ランキング表などが、データに応じて自動生成されることを確認する。 手順5:グラフ付近にある「About this data」をクリックすると、どの公的機関のオープンデータが使われているかを確認できる。 手順6:画面左上の「DC」のロゴをクリックしてトップページに戻り、別の質問で手順3から繰り返す。最低3つの質問を試す。 体験のポイント 「質問文」の意味をAIが理解し、適切なデータが選択されている。「Unemployment rate in Tokyo (東京の失業率)」のような質問では、このサイトがデータを取得できず結果が得られない。「Unemployment rate in Japan (日本の失業率)」のように変えて試してみる 概要 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年分のデータで自分の目で確かめる。 どのサイトの演習でも、相関係数の計算は以下の手順で行う。 手順E1:2列のデータをExcelに用意する(例:A列に指標1、B列に指標2)。1行目は見出しとし、2行目以降にデータを置く。 手順E2:空きセルを選び、 手順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あたり人口密度」の場合は、式は、次のようになる。
そして、前の演習3と同じ手順で、散布図を作成。 手順8:相関係数の値から判断を行う。 体験のポイント
各人の興味に応じて、複数の種類のデータをダウンロード(例:都道府県別の人口、都道府県別の医師数)し、コピー&ペーストにより、1つのExcel のシートの中に2つの異なるデータを並べ、相関係数を計算したり、散布図を作成。
量的に比例する指標は、強い正の相関(1に近い値)を示すことが多い。「比率どうし」(例:高齢化率と持ち家比率)を選ぶと、より興味深い発見が得られる。相関があるからといって因果関係があるとは限らない点に注意する。 概要 政府統計の総合窓口(e-Stat)と連動した、指標ごとのグラフ・ランキングに特化したサイトである。分野別の指標を選び、47都道府県の値をグラフや表で確認できる。登録不要である。 操作手順 手順1:ブラウザで https://dashboard.e-stat.go.jp/ にアクセスする。 手順2:画面上部のメニュー「グラフで見る」にカーソルを合わせ、サブメニューから分野(例:「人口・世帯」)を選ぶ。または同じサブメニューにある「都道府県へ」をクリックして都道府県別の指標一覧を直接開いてもよい。 手順3:分野内の指標一覧から、都道府県別に比較できる指標(例:「総人口」)を選ぶ。 手順4:グラフが表示されたら、
今度は、
画面の左側にあるメニューでデータ周期として「年」を選び、下の地域別で「都道府県別」などを選ぶ。 手順5:グラフが表示されるので確認する。上のタブで「数値」を選ぶ。表示された表を選択してコピーし、Excelに貼り付ける。画面にダウンロードボタン(CSVなど)がある場合はそれを使ってもよい。 手順6:同じ要領で、別の指標(例:「(季節調整値)完全失業率」)を取得し、同じExcelシートに貼り付ける。都道府県名の並びを必ず揃える。 手順7:共通手順E1〜E4に従って相関係数を計算。そして、散布図を作成。 手順8:相関係数の値から判断を行う。 体験のポイント 演習④で扱った指標とは別の組合せ(例:人口×失業率、人口×新設住宅着工戸数)を試すと、意外な結果が得られることがある。相関係数が0.3程度の場合、「相関があるとは言い切れない」と判断する慎重さが必要である。
[演習の詳細を表示するには、この行をクリックしてください]
演習について
翻訳サイト
Chromeブラウザの翻訳機能の使い方
演習① 質問を理解するAI 「Data Commons」
How has the population of Japan changed over time?Life expectancy in Japan compared to other G7 countriesUnemployment rate in Tokyo演習② データの隙間を埋めるAI 「Gapminder」
Excelで相関係数を求める手順
=CORREL(A2:A48, B2:B48) のように入力する。範囲は自分のデータ件数に合わせて変える。演習③ 過去の気象データ・ダウンロードと相関の分析
演習④ 総務省統計局「統計でみる都道府県のすがた」から相関の分析
=CORREL(L14:L60, V14:V60)
演習⑤ e-Stat「統計ダッシュボード」から相関の分析
第4回. 機械学習、ニューラルネットワーク
機械学習は,コンピュータがデータを使用して学習し知的能力を向上させる技術で,データからパターンや関係性を自動で発見する。 入力と正解の組(例:手書き数字画像と数字ラベル)を訓練データとして用いる方式を教師あり学習と呼び,他に教師なし学習や強化学習がある。 ニューラルネットワークは脳のニューロンを模した構造で,入力の重みづけ,合計とバイアス,活性化関数の適用を経て順伝播する。 その学習は予測と正解の誤差を小さくする最適化であり,バックプロパゲーションにより各層の重みとバイアスを更新する。
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
画面が英語で読みにくい場合は、以下の手順でページ全体を日本語に翻訳できる。 手順A:ページ上の文字のない場所(余白)を右クリックする。 手順B:表示されたメニューから「日本語に翻訳」を選ぶ。 手順C:ページ全体が日本語に切り替わる。元の英語に戻したい場合は、アドレスバー右側に表示される翻訳アイコン(丸の中にGの形)をクリックし、「英語」を選ぶ。 注意:Googleの翻訳では、専門用語や固有名詞が不自然な日本語になる場合がある。意味が分かりにくい箇所は、元の英語表示に戻して確認するとよい。 Quick, Draw! は,Googleが公開する機械学習の体験サイトであり,登録不要で利用可能である.ユーザが描いた絵を,ニューラルネットワークがリアルタイムで分類する.本演習では,機械学習が持つ知的能力(分類,認識)を体験することを目的とする. Quick, Draw! のサイト:https://quickdraw.withgoogle.com/ 操作手順 Quick, Draw! のサイト:https://quickdraw.withgoogle.com/ ヒント 考察ポイント Neural Network Playground は,カリフォルニア大学サンディエゴ校(UCSD)のCCoMが公開するWebサイトであり,登録不要で利用可能である.ニューラルネットワークの最小構成を体験できる.ニューロンの数を1個から変化させながら,分類の境目の形状がどのように変化するかを観察できる.本演習では,「ニューラルネットワークは,ニューロンがネットワークを形成する」という仕組みを,最小構成で確認することを目的とする. Neural Network Playground:https://www.ccom.ucsd.edu/~cdeotte/programs/neuralnetwork.html 注意:本サイトは英語で表示される.操作要素はスライダーとボタンのみであり,英語が不得意でも操作に支障はない. 操作手順 Neural Network Playground:https://www.ccom.ucsd.edu/~cdeotte/programs/neuralnetwork.html ヒント 考察ポイント A Machine Learning Playground(Scienxlab版)は,ニューラルネットワークの学習過程を対話的に可視化するWebサイトであり,登録不要で利用可能である.ニューロンの数,活性化関数,学習の速さなどを変更して,学習をリアルタイムに実行できる.本演習では,「入力の重みづけ,合計とバイアス,活性化関数の適用」「ニューラルネットワークのパラメータ(重みやバイアス)を最適化する」という仕組みを総合的に体験する. A Machine Learning Playground:https://playground.scienxlab.org/ 本サイトは,Googleが公開する TensorFlow Playground(https://playground.tensorflow.org/)の拡張版である.UIと基本操作は原版と同一であり,活性化関数の種類と利用できるデータの追加などの拡張が施されている.他の教材や書籍で「TensorFlow Playground」という名称に出会った際は,同系統のツールである.原版も同じ操作方法で利用できる. 事前準備:演習②を先に体験しておくと理解しやすい. 注意:本サイトは英語で表示される.操作要素は主にボタンとドロップダウンメニューであり,英語が不得意でも直感的に操作できる. 操作手順 A Machine Learning Playground:https://playground.scienxlab.org/ ヒント 考察ポイント
スライド資料と演習手順の資料は,https://www.kkaneko.jp/mi/index.html で,各回の授業開始時刻までに掲載します。
セレッソのコースニュースで授業に関するお知らせを配信します。また,小テスト機能で課題を出します。あわせて確認してください。
本科目の資料は,以下の2種類で構成されています。
[演習の詳細を表示するには、この行をクリックしてください]
Chromeブラウザの翻訳機能の使い方
演習① Quick, Draw! の体験
カヌー)が表示される.「OK」をクリックして開始する.
演習② Neural Network Playground の体験
H=9 と表示されたスライダーを確認する.H は,ネットワーク内部のニューロンの数を表す.H=1)まで動かす.ニューロンが1個のみとなり,分類の境目が直線1本になることを観察する.H=2,H=3,H=4 と増やしていく.分類の境目が,直線の組み合わせから複雑な形状に変化していく様子を観察する.H=9)まで動かす.赤と青の点の配置にもよるが、曲線的で複雑な分類の境目が形成されることを観察する.
H=1)と,多くした場合(H=9)とで,それぞれ,どのようなデータが正しく分類できるかを考察する.演習③ A Machine Learning Playground の体験
第5回. ニューラルネットワークの基本構造と画像分類
ニューラルネットワークは脳神経回路を模した構造であり、各ニューロンは入力への重みづけ、合計とバイアス、活性化関数の適用という3段階で処理を行う。 学習は誤差に基づき重みとバイアスを修正する反復処理であり、繰り返しごとに誤差が減少するように処理を行う。 活性化関数は非線形変換を担い、中間層ではReLUなどを利用し、最終層では出力を確率へ変換するソフトマックスを用いるなど、層の役割に応じて使い分ける。 中間層を複数備えたディープニューラルネットワークは複雑なパターンの学習を可能にする。
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
動画
画面が英語で読みにくい場合は、以下の手順でページ全体を日本語に翻訳できる。 手順A:ページ上の文字のない場所(余白)を右クリックする。 手順B:表示されたメニューから「日本語に翻訳」を選ぶ。 手順C:ページ全体が日本語に切り替わる。元の英語に戻したい場合は、アドレスバー右側に表示される翻訳アイコン(丸の中にGの形)をクリックし、「英語」を選ぶ。 注意:Googleの翻訳では、専門用語や固有名詞が不自然な日本語になる場合がある。意味が分かりにくい箇所は、元の英語表示に戻して確認するとよい。 Neural Network Visualizer は,ニューラルネットワークの構造と学習過程をブラウザ上で視覚的に観察できる教材サイトであり,登録不要で利用できる.データセットの選択,ネットワーク構成の指定,訓練の実行,訓練中のニューロンの活性度の変化を確認できる. Neural Network Visualizer のサイト:https://www.nn-visual.com/ 操作手順 Neural Network Visualizer のサイト:https://www.nn-visual.com/ ヒント 考察ポイント ReLU は,ニューラルネットワークで用いられる活性化関数の一つである.負の入力を 0 に変換し,0 以上の入力はそのまま出力する関数である.本演習では,ReLU関数を実装したPythonプログラムを実行し,異なる入力値(負数,0,正数)に対する変換結果を確認することを目的とする.条件分岐( ソースコードのURL:https://trinket.io/python/61c6503fcada 操作手順 ソースコードのURL:https://trinket.io/python/61c6503fcada ヒント 考察ポイント 1つのニューロンに2つの入力 (x1, x2) を与え,重みとの掛け算,合計,バイアスの加算,活性化関数(ReLU)の適用という一連の計算を行う.本演習では,1つのニューロンの計算をPythonで実行し,4つの入力パターンに対する活性度を求める.重み,バイアス,活性化関数という3つの基本要素の役割と連携を理解する第一歩となる. ソースコードのURL:https://trinket.io/python/1c339b660ee1 操作手順 ソースコードのURL:https://trinket.io/python/1c339b660ee1 ヒント 考察ポイント 複数のニューロンを層として組み合わせると,1層の場合より複雑な判断ができる.本演習では,3つのニューロン(n1,n2,n3)から成るニューラルネットワークをPythonで実行し,4つの入力パターンに対する活性度を求める.複数のニューロンが層を形成することによる情報処理の基礎を体験する. ソースコードのURL:https://trinket.io/python/3cbc3f3ed057 操作手順 ソースコードのURL:https://trinket.io/python/3cbc3f3ed057 ヒント 考察ポイント TensorFlow のチュートリアル「基本的な画像分類」は,Fashion MNIST(衣料品・履物・バッグの計10クラスの28×28画素のグレースケール画像)を題材に,ニューラルネットワークによる画像分類の一連の流れをPythonコードで示している.本演習では,このチュートリアルのページをログインせずに閲覧し,説明文とソースコードを読み取って,画像分類の処理の流れを理解することを目的とする.コードの実行は行わない.コードに含まれる出力例(学習過程の表示,分類結果の図)も併せて確認する. チュートリアルのURL:https://www.tensorflow.org/tutorials/keras/classification 操作手順 チュートリアルのURL:https://www.tensorflow.org/tutorials/keras/classification ヒント 考察ポイント
[動画]
[演習の詳細を表示するには、この行をクリックしてください]
Chromeブラウザの翻訳機能の使い方
演習① Neural Network Visualizer による画像分類の学習体験
iris」のカードをクリックして選択する.iris は、あやめの花びら、がく片の幅と高さを測定したデータである.
iris を選んだら、下の「Next: Configure Network」をクリックして次に進む.
演習② ReLU(Pythonで実現)
if と else)によるプログラミングも体験する.
x = -2, -1, 0, 1, 2 のそれぞれに対する relu(x) の値が順に表示されることを確認する.
if x < 0: と else: が条件分岐を表す.x が 0 未満の場合は 0 を返し,そうでない場合は x をそのまま返す.
relu(x) が 0 となることを、if x < 0: と else:の部分を見て、再度確認する.演習③ 入力の重みづけ,合計とバイアス,活性化関数の適用
n(x1, x2) の中の s = 1 * x1 + 1 * x2 - 0.5 が,重みとの掛け算・合計・バイアスの加算をまとめて行う式である.重みは2つとも 1,バイアスは -0.5 に設定されている.return relu(s) によって,合計結果 s に活性化関数 ReLU を適用している.
演習④ ニューラルネットワーク
n1 と n2 は,入力 (x1, x2) を直接受け取るニューロンである.n1 は重み (1, 1)・バイアス 0,n2 は重み (1, 1)・バイアス -1 を持つ.n3 は,n1 と n2 の出力を入力として受け取るニューロンである.n3 は重み (-1, 2)・バイアス 1 を持つ.これにより,n1・n2 と n3 の2層構造となる.n(x1, x2) は n3(n1(x1, x2), n2(x1, x2)) を返す.これは n1 と n2 の出力をまとめて n3 に渡していることを示す.
n1 と n2 の出力(n3 に渡される中間値)が,それぞれの入力に対してどのような値になっているかを考察する.余裕があれば,n1 と n2 の出力を表示する print 文をコードに追加し,再度実行して確認する.演習⑤ Fashion MNIST 画像分類のコード読解
fashion_mnist.load_data() によって訓練データ60,000枚とテストデータ10,000枚が読み込まれることを,説明文とコードから読み取る.10クラスのラベル(T-shirt/top,Trouser,Pullover,Dress,Coat,Sandal,Shirt,Sneaker,Bag,Ankle boot)の対応表を確認する.train_images = train_images / 255.0 によって 0〜1 の範囲に変換していることを確認する.tf.keras.Sequential によるモデルの定義を読み取る.コードは Flatten(28×28画素を784の1次元配列に変換)→ Dense(128, activation='relu')(中間層 128 ニューロン,活性化関数 ReLU)→ Dense(10)(出力層 10 ニューロン)の順となっている.重みづけ・合計・バイアスの加算・ReLU の適用が,各層で行われていることを確認できる.model.fit(train_images, train_labels, epochs=10) による学習の出力例を確認する.訓練の繰り返し(Epoch 1/10 から Epoch 10/10)ごとに,損失(loss)が減少し,正解率(accuracy)が上昇する様子をページ内の出力例から読み取る.predictions[0] の出力(10個の数値)を見て,最も大きい値に対応するクラスが分類結果となることを np.argmax の説明から読み取る.
activation='relu' は,演習②で扱った ReLU 関数を活性化関数として用いることを示す.Dense(128) や Dense(10) の数値(128,10)は,それぞれ中間層と出力層のニューロン数である.出力層のニューロン数 10 は,分類するクラス数(10種類)と一致する.epochs=10 は,同じ訓練データを繰り返し用いて学習を行う回数を示す.
Epoch が進むにつれて損失が減少し,正解率が上昇する様子を読み取り,「学習は一度で正解にたどり着くのではなく,徐々に近づける」という仕組みを,具体的な数値の変化として確認する.Flatten → Dense(128, relu) )について.784個の入力に対する重みづけ・合計・バイアスの加算・ReLU の適用が,128ニューロン分して行われていることを考察する.
第6回. 学習と検証、学習不足、過学習、学習曲線
ニューラルネットワークの学習は、誤差算出・パラメータ更新を反復し、予測と正解の誤差を最小化する。 学習の目的は未知のデータにも対応する「汎化」であり、検証データを用いてその性能を評価する。 訓練データにのみ適合する過学習を防ぐため、データの増量や多様性向上、ネットワークの簡素化等を行う。 学習曲線の推移から訓練と検証の誤差が開き始める時点を過学習のサインと捉え、最適な学習状態を見極める。
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
動画
本演習は,Google Colab上にプログラムと実行結果がすでに公開されている.利用者はそれを閲覧して観察するものであり,プログラムを自分で実行したり書き換えたりする必要はない. 観察対象は,同じ訓練データを用いた学習を20回繰り返し,学習の繰り返しごとに,訓練データと検証データに対する精度や誤差を算出した結果である.学習終了後の出力として,4つの画像(例:2,0,4,8)の分類結果(各カテゴリ0〜9の確率である10個の数値),学習終了時の結合の重み,および学習曲線(誤差の推移グラフ)が掲載されている. プログラムの公開URL:https://colab.research.google.com/drive/1IfArIvhh-FsvJIE9YTNO8T44Qhpi0rIJ?usp=sharing 手順 ヒント 考察ポイント 本演習も,Google Colab上にプログラムと実行結果がすでに公開されている.利用者はそれを閲覧して観察するものであり,プログラムを自分で実行したり書き換えたりする必要はない. 観察対象は,中間層のニューロン数のみが異なる3種類のモデル(400,4000,40000)について,20回の学習の繰り返しののち,検証データでの分類の正解率(分類精度)を計測した結果である.3つの結果を見比べることで,ニューロン数のちがいによる影響を観察する. プログラムの公開URL:https://colab.research.google.com/drive/1-UWl-WEPmmNo-S_O17E5XPkF4tphE6xz?usp=sharing 手順 400のモデルについては次の部分。学習では乱数が使われているので、実際に表示される値は次のとおりにはならずわずかに変動する。
400のモデルについては次の部分。学習では乱数が使われているので、実際に表示される値は次のとおりにはならずわずかに変動する。
ヒント 考察ポイント 本演習は,TensorFlow公式チュートリアルの「オーバーフィットとアンダーフィット」のページを閲覧して観察するものである.ページ上には説明文と複数の学習曲線のグラフが掲載されており,利用者はそれらを読み,グラフを観察する.自分でプログラムを実行する必要はない. 手順 ヒント 考察ポイント
[動画]
[演習の詳細を表示するには、この行をクリックしてください]
演習① 学習曲線の観察
EPOCHS=20,訓練データの指定(x=ds_train[0],y=ds_train[1]),検証データの指定(validation_data=(ds_test[0], ds_test[1]))の3か所を確認する.
loss(訓練データの誤差),accuracy(訓練データの精度),val_loss(検証データの誤差),val_accuracy(検証データの精度)の4つの数値が表示されていることを観察する.
m.get_weights()[2])に
loss(訓練データの誤差)とval_loss(検証データの誤差)の数値を見比べ,学習の繰り返しに伴ってどのように変化しているかを観察する.両方とも減少しているか,あるいは検証データの誤差だけ途中から増えていないかを確認する.演習② ニューロン数の異なるニューラルネットの学習曲線の比較
400,2つ目のモデルが4000,3つ目のモデルが40000に設定されていることを観察する.
演習③ 学習曲線の例(TensorFlowチュートリアル)
第7回. さまざまな機械学習 ー 機械学習の広がりを学ぶ
前回までに教師あり学習と画像分類を学んだ。今回はそこから、学習の枠組みを広げる方向(教師なし学習、強化学習、自己学習)と、扱うデータを広げる方向(系列データへの適用)を学ぶ。教師なし学習は、ラベル(正解)の無いデータから、パターン・構造・隠れた関係性を見つける手法である。応用範囲には、クラスタリング、異常検知、推薦システム、次元削減・データ圧縮がある。強化学習は、行動の結果として得られる報酬・ペナルティを手がかりに、より良い行動方針を学習する手法である。自己学習はその考え方を応用した発展的な形であり、経験の出どころが、強化学習では外部の環境であるのに対し、自己学習では自分自身との対戦である。系列データを扱う手法は、RNNからLSTMへと発展した。言語・音声を中心に主流はTransformerへ移行した。対話AIは、Transormer を使用しており、入力文から次に来る語を確率で予測し、それを繰り返して応答を作る。
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
動画
クラスタリングは,似ているデータをクラスタに分ける手法である.本演習では,可視化サイト上でデータのまとまりに中心点(セントロイド)を置き,クラスタに分かれていく様子を観察する. 手順 ヒント 考察ポイント 本演習では,公開されているPythonプログラムを実行し,モール(商業施設)の顧客データに対してクラスタリングを行う.クラスタ数を1つずつ増やしながら,クラスタの分かれ方がどう変わるかを観察する.プログラムを自分で書き換える必要はない. 手順 ヒント 考察ポイント 系列データとは,順序付けられたデータの並びである.本演習では,毎日の太陽の黒点数という系列データを扱う.過去のデータをもとに将来を予測したプログラムと,その実行結果(実際のデータと予測結果)を閲覧して観察する.プログラムを自分で実行したり書き換えたりする必要はない. 手順 ヒント 考察ポイント
[動画]
[演習の詳細を表示するには、この行をクリックしてください]
演習1.クラスタリング学習サイトの活用
https://www.naftaliharris.com/blog/visualizing-k-means-clustering/
演習2.クラスタリングをPythonプログラムで行ってみる
https://trinket.io/python/93ab2fb15488
演習3.LSTM を用いた予測の例
https://colab.research.google.com/drive/1tLfijmXCJyg--4Jr5pbzV5G7p_3LILQD?usp=sharing
第8回. AIとコンピュータビジョン
デジタル画像は格子状の画素から成り、濃淡は0〜255、カラーはRGB各0〜255の数値で表現される。 ディープラーニングは多層構造のニューラルネットワークを持ちて、低次(エッジ・色)、高次(物体)の特徴を抽出する。 畳み込みニューラルネットワーク(CNN)は畳み込み層・プーリング層・全結合層を組み合わせたニューラルネットワークで、画像の局所的特徴を効率的に捉えることができる。画像理解は、主な3種類として、分類・物体検出・セグメンテーションがある。これらは、顔処理や自動運転等に応用される。
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
動画
CNN Explainer は,畳み込みニューラルネットワーク(CNN)の構造と各層の処理結果をブラウザ上で視覚的に観察できる教材サイトである.ジョージア工科大学 Polo Club が公開しており,登録不要で利用できる.画像分類を行うネットワークが,畳み込み層・プーリング層・全結合層から構成される様子を確認できる. CNN Explainer のサイト:https://poloclub.github.io/cnn-explainer/ 操作手順 CNN Explainer のサイト:https://poloclub.github.io/cnn-explainer/ ヒント 考察ポイント Animated AI は,ニューラルネットワークのアルゴリズムをアニメーションで解説する教材サイトである.登録不要で利用できる.トップに置かれた「The Basic Algorithm」では,畳み込みの仕組みをアニメーションで観察できる. Animated AI のサイト:https://animatedai.github.io/ 操作手順 Animated AI のサイト:https://animatedai.github.io/ ヒント 考察ポイント Google Colaboratory 上に用意されたページで,物体検出モデル YOLO のプログラム・説明・実行結果を確認する.YOLO は,物体の位置と種類を一括で予測する物体検出モデルである. Google Colaboratory のページ:https://colab.research.google.com/drive/18IPPkY96Oc6jkYD2su4cFgWcoYAskLo_?usp=sharing 操作手順 Google Colaboratory のページ:https://colab.research.google.com/drive/18IPPkY96Oc6jkYD2su4cFgWcoYAskLo_?usp=sharing ヒント 考察ポイント
[動画]
[演習の詳細を表示するには、この行をクリックしてください]
演習① CNN Explainer による画像分類ネットワークの観察
演習② Animated AI による畳み込みアルゴリズムの観察
演習③ YOLO による物体検出(Google Colaboratory)
第9回. 知識表現と推論
AIにおける知識表現では、知識を「事実」と「ルール」に整理し、推論により自動的に結論を導く。金融の自動審査や不正検知など、明確なルールに基づく判定と、その判断理由の説明が求められる業務に有用である。機械学習が大量データから見つけたルールを推論に適用することで、より高度で説明可能なAIシステムの構築が可能である。
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
動画
オンラインのProlog環境である SWISH を利用して、Prologの基本動作と推論エンジンによる自動判定を体験する 操作手順 ヒント 考察ポイント 家族関係を例にして、複数の事実とルールに基づく推論と、成り立たない場合の結果を確認する。 操作手順 ヒント 考察ポイント 同じ家族関係のプログラムを使い、変数を組み合わせた多様な問い合わせを行い、Prologがどのように答えを探索するかを観察する。 操作手順 ヒント 考察ポイント
スライド資料と演習手順の資料は,https://www.kkaneko.jp/cs/index.html で,各回の授業開始時刻までに掲載します。
セレッソのコースニュースで授業に関するお知らせを配信します。また,小テスト機能で課題を出します。あわせて確認してください。
本科目の資料は,以下の2種類で構成されています。
[動画]
[演習の詳細を表示するには、この行をクリックしてください]
演習① Prolog による推論
SWISH のサイト:https://swish.swi-prolog.orghuman(hanako).
human(taro).
think(X) :- human(X).?-の右側)に human(X). と入力し、右下の「Run」ボタンをクリックする。さらに「Next」ボタンをクリックし、答えが増えなくなるまで結果(X = hanako, X = taro)を確認する。think(X). と入力して「Run」ボタンをクリックし、「Next」ボタンで答えが増えなくなるまで確認する(X = hanako, X = taro)。think(taro). に書き換えて「Run」ボタンをクリックし、結果に true と表示されることを確認する。
.)をつける。
演習② 家族関係の推論
male(ali).
female(zeyn).
female(anne).
parent(ali, anne).
parent(zeyn, anne).
child(Y, X) :- parent(X, Y).male(ali). と入力し「Run」ボタンをクリックして、結果が true になることを確認する。male(anne). と入力して「Run」ボタンをクリックし、結果が false になることを確認する。parent(ali, anne). に書き換えて「Run」ボタンをクリックし、結果が true になることを確認する。child(anne, ali). に書き換えて「Run」ボタンをクリックし、結果が true になることを確認する。
false は「偽」ではなく、「証明できない(知られていない、または不明)」という意味であることを意識する。
child に関する「事実」は直接書かれていないにもかかわらず、child(anne, ali). が true となることを確認する。
演習③ 様々な問い合わせ
male(X). と入力して「Run」ボタンをクリックし、X = ali と表示されることを確認する。female(X). に書き換えて「Run」ボタンをクリックする。さらに「Next」ボタンをクリックして答えが増えなくなるまで確認し、結果が X = zeyn、X = anne になることを確認する。parent(X, Y). に書き換えて「Run」と「Next」をクリックし、すべての結果(X = ali, Y = anne と X = zeyn, Y = anne)を確認する。child(X, Y). を入力して確認し、結果(X = anne, Y = ali と X = anne, Y = zeyn)を確認する。parent(ali, Y). と書き換えて「Run」ボタンをクリックし、結果(Y = anne)を確認する。child(ali, Y). と書き換えて「Run」ボタンをクリックし、結果が false となることを確認する。
X, Y)を使用した際、条件を満たす変数の組み合わせのすべてが得られることを確認する。
第10回. 探索、総当たり、発見的探索
AIの基礎の1つとして「状態(今の状況)・行動(取りうる操作)・遷移関数(行動で状態がどう変わるか)」の枠組みがある。これは、行動による状態変化を扱うものである、「適用条件」は、行動が可能である条件を示す。 遷移関数をもとに、将来にわたる可能な行動と状態を算出(探索)し、算出された状態をを評価して実際に行動を絞る(選択)という二段階処理で、将来の行動の探索と選択ができる。これは、ゲームAI、自動運転、在庫管理など幅広く応用できる。 起点から枝分かれする経路(パス)の集まりを「木」という。木を使うことで、調べ済みの経路を二度たどらず未探索の経路を一つずつ調べることが簡単にできるようになる。 総当たりは全経路を試し最適解を得る。A*法は「来た道の長さ+ゴールまでの見積もり」が小さい行動を優先して調べる。
スライド資料
[PDF], [パワーポイント] (同じ内容, クリックしてダウンロード)
動画
この演習では,Python の turtle グラフィックスを使い,同じ起点から始まる5つのパス(経路)がアニメーションで順番に描かれる様子を観察します.総当たりが「すべてのパスを試す」とはどういうことか,パスと木構造の関係を体感することが目的です. 使用するサイト(trinket,登録不要・ブラウザのみで実行可能): 操作手順 ヒント 考察ポイント この演習では,A*法(エイ・スター法)で迷路の最短経路を探索する過程を,ブラウザ上のシミュレータで観察します.A*法が「来た道の長さ+ゴールまでの見積もり」を手がかりに,ゴールに近そうな方向へ絞って効率よく探索する様子を確認することが目的です. 使用するサイト(PathFinding.js,登録不要・ブラウザのみで利用可能): 操作手順 ヒント 考察ポイント
[動画]
[演習の詳細を表示するには、この行をクリックしてください]
演習1 総当たり(パスと木構造をアニメーションで観察)
https://trinket.io/python/912b1bb2e3
https://trinket.io/python/912b1bb2e3 と入力し,このページを開く.
trinket の編集画面が表示され,画面の左側に Python のプログラム(main.py),右側に実行結果(Result)の領域が並ぶ.1 (1,0) のように行動番号と移動先の座標が表示される.数字が,今どのパスのどの行動を実行しているかを示している.
position = [0, 0] と設定されているためである.
演習2 A*法による迷路探索(発見的探索の観察)
https://qiao.github.io/PathFinding.js/visual/
https://qiao.github.io/PathFinding.js/visual/ と入力し,このページを開く.
格子状のマス目(グリッド)が表示され,緑のマスが起点,赤のマスが終点である.
第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
操作手順
- 演習①のプログラムのURL https://trinket.io/python/1b2d25b99b をブラウザで開く.画面の左側にソースコードの編集画面,右側に実行結果が表示される.
- 画面上部の「Run」ボタン(実行ボタン)をクリックしてプログラムを実行する.実行が自動で始まっている場合は,そのまま結果を確認する.
- 右側の実行結果に,
[行動の番号の並び] x yの形式で,nsteps = 2回の行動を組み合わせた経路ごとに,最終的な水差し①の水の量 x と水差し②の水の量 y が表示される.表示された全ての行を確認し,2回の行動で到達できる (x, y) の組をすべて読み取る. - ソースコード中の
nsteps = 2の行をnsteps = 3に書き替える(「3」は必ず半角の数値にすること).書き替えはソースコード編集画面の該当行をマウスでクリックして数字を直接編集する.書き替えたら「Run」ボタンを再度クリックして実行する.3 回の行動で到達できる (x, y) の組を確認する. - 同じ手順で,
nsteps = 4に書き替え(「4」は必ず半角の数値にすること)て再実行する.4回の行動で到達できる (x, y) の組を確認する.資料の例では,4回の行動で[5, 8, 5, 7] 4 2という出力があり,行動 5 → 行動 8 → 行動 5 → 行動 7 の順で行うと x = 4, y = 2 となり,水差し②の水の量が 2 になることが示されている.自分の実行結果からも,水差し①または水差し②の水の量が 2 になる経路を探す. - 実行を止めたいときは,画面上部の「Stop」ボタンをクリックする.
ヒント
- 実行結果の各行の見方は,左側の角括弧内が行動の番号の並び(経路),その右の2つの数値が順に x(水差し①の水の量)と y(水差し②の水の量)である.資料の例
[1, 2] 0 0は,行動1→行動2の順で実行すると x = 0, y = 0 になることを意味する. - 8つの行動の内容は,行動1:①を満杯,行動2:①を空に,行動3:①で②を満杯にする,行動4:①を全部②へ,行動5:②を満杯,行動6:②を空に,行動7:②で①を満杯にする,行動8:②を全部①へ,である.各行動には適用条件があり,条件を満たさない行動は実行されない.
- 行動回数(
nsteps)を増やすほど経路の総数は増え,到達できる (x, y) の組も増える. - ソースコードを書き替えた後に「Run」ボタンを押すのを忘れると,結果が更新されない.
考察ポイント
nsteps = 2,nsteps = 3,nsteps = 4と行動回数を増やしていったとき,到達できる (x, y) の組がどのように増えていくかを比較する.- 水差し①または水差し②の水の量が 2 になる経路が,行動回数を何回にしたときに初めて現れるかを確認する.
- CX, CYの値を変えると、水差しの大きさを変えることができる.
演習② 21ゲームでの後手必勝アルゴリズムの体験
0から始めて,自分のターンに1・2・3のいずれかを足し合計に加える.21を言った(合計を21にした)方が負けというゲームである.後手は,自分のターン終了時の合計を常に「4の倍数」に保てば必ず勝てる.この演習では,ユーザ(自分)が先手,コンピュータが後手となり,コンピュータが後手必勝のアルゴリズム r = (4 - a % 4) % 4(r が 0 のときは r = 1 に補正)で動作する.プログラムは trinket 上で登録不要で実行できる.
演習②のプログラムのURL:https://trinket.io/python/58bb317816
操作手順
- 演習②のプログラムのURL https://trinket.io/python/58bb317816 をブラウザで開く.画面の左側にソースコードの編集画面,右側に実行結果が表示される.
- 画面上部の「Run」ボタン(実行ボタン)をクリックしてプログラムを実行する.実行が自動で始まっている場合は,そのまま次へ進む.
- 右側の実行結果欄に「あなたの番(1〜3):」と表示されたら,マウスでその右側の入力欄をクリックして,半角の数字で 1,2,3 のいずれかを入力し,Enter キーを押す.入力を間違えたときは Del キーまたは BS キーで消す.
- 入力後,「
a = ○」の形式で,自分のターン終了時の合計 a が表示される.続いてコンピュータが行動し,「computer: ○, a = ○」の形式で,コンピュータが選んだ数と,コンピュータのターン終了時の合計 a が表示される. - 同じ手順を繰り返す.自分のターンが来るたびに,1・2・3 のいずれかを半角で入力し,Enter キーを押す.
- 合計が 21 になったときにゲームが終わる.「あなたの負けです」と表示されたら,ユーザが負けである.画面上部の「Stop」ボタンをクリックして終了する.
- 余裕があれば,「Run」ボタンを再度クリックして再開し,1・2・3の入力の組み合わせを変えて,何度か対戦を試す.
ヒント
- 実行結果に表示される
aは今の合計,computer:の直後の数字はコンピュータが選んだ行動(足した数)である. - コンピュータのターンが終わった直後の
aの値に注目する.資料に示されているとおり,コンピュータのターン終了時の値は 4, 8, 12, 16, 20 と常に4の倍数になる. - 合計が 20 になった時点で,自分の手番では 1・2・3 のいずれを足しても 21・22・23 となり,21 を超えるか 21 になるため,ユーザは負ける.
- 入力欄が出ていないのに数字を打ってもプログラムには伝わらない.「あなたの番(1〜3):」の表示を待ってから入力する.
- 1・2・3 以外の数字を入力した場合は「1〜3 を入力してください」と表示され,再度入力を求められる.
考察ポイント
- 毎回のコンピュータのターン終了時の合計 a が4の倍数(4, 8, 12, 16, 20)になっていることを確認する.
- 自分が 1 を足したときコンピュータは何を足すか,自分が 2 を足したときコンピュータは何を足すか,自分が 3 を足したときコンピュータは何を足すかを観察し,「ユーザの手+コンピュータの手」の合計が常に 4 になっていることを確認する.
- 何度対戦しても,先手のユーザが負ける結果になるかを確認する.
昨年度(2025年度)の資料について(クリックにより中身が表示されます)
参考として,昨年度のスライド資料を掲載しています。今年度と内容が異なる場合がありますので,あくまで参考としてください。今年度の資料は,このページ(https://www.kkaneko.jp/mi/index.html)に整備していきます。
授業計画(クリックにより中身が表示されます)
詳しくは「シラバス」を参照してください。
最新技術の反映、パソコン教室のパソコンを用いた演習の充実などにより、一部内容が変更になる場合があります。
-
データサイエンス・AIでできること,社会の変化
- 人工知能社会の到来
- 社会で活用されているデータサイエンス・AI
- データサイエンス・AI活用の現場と最新動向
- 産業・社会・生活での変化
- データの活用(オープンデータ、政府統計データなど)
-
データサイエンス・AIの事例,技術
- データサイエンス・AIの活用領域
- データサイエンス・AI利活用のための技術
- データの説明手法(散布図,分布,密度など)
- AIによる分類・特徴抽出・予測
- データサイエンス・AIの歴史と応用分野,最新技術
-
実データによるデータサイエンス・AIの演習
- 政府統計データ、オープンデータの活用
- データ分析手法(クロス集計,相関,平均,誤差)
- データ・AI利活用における留意事項(プライバシー、個人情報、倫理、情報漏えいの防止など)
-
機械学習の基礎とニューラルネットワーク
- 機械学習の基礎と展望
- データからの学習のメカニズム
- 最適化アルゴリズムの基本概念
-
ニューラルネットワークの基本構造と画像分類
- ニューラルネットワークの基本構造
- ニューラルネットワークの学習方法
- 学習メカニズム
- 画像分類システムの基本構造
- パターン抽出、特徴抽出
- ディープラーニングへの接続
-
ニューラルネットワークシステムの構築と運用
- 学習の検証と評価(学習不足,過学習,学習曲線)
- システムの運用方法
- AI活用の企画・実施・評価の全体像
-
さまざまな機械学習 ー 機械学習の広がりを学ぶ
- 教師なし学習
- 強化学習、自己学習
- ディープラーニングの特色、応用分野
- 系列データ分析
-
AIとコンピュータビジョン
- コンピュータビジョン
- AIによる画像の認識・理解、基礎技術
- 画像理解の3種類:画像分類、物体検出、セグメンテーション
- 顔情報処理、顔ランドマーク
-
知識表現と推論
- 推論エンジンの仕組み
- 述語論理の基礎
- AIとデータの組み合わせによる知識創造、知識活用
-
データ構造とアルゴリズムの基礎
- データ構造(パス,木)の基本概念
- アルゴリズムの基礎
- 探索アルゴリズムの基礎と応用
- 知的なシステム
- 発見的探索の手法
-
プログラミング基礎と探索アルゴリズム
- プログラミング基礎の習得
- プログラミングによる知的なゲームプレイヤーの実現
- 探索アルゴリズムの実現
- 日常生活の課題解決のためのプログラミング
-
自然言語処理
- 形態素解析
- 日本語文書の類似度分析と感情度分析
- テキストマイニング(文書からの有用な情報の抽出)
-
コンピュータでのデータ表現とデータエンジニアリング
- ビッグデータの特徴と活用方法
- コンピュータでのデータ表現の基礎と具体的方法
- データ処理技術(Excel関数,インポート)
- データエンジニアリングの実践
-
AI対話システム
- AI対話システムの概要
- AI対話システムとの協働と問題解決
- AI対話システムのベストプラクティス、注意点、展望
- データの説明、データの分析、データの処理での活用
- 知識ベースとしての活用
-
生成AIの基礎と展望
- AIとデータの共創
- 生成AIの応用分野
- 画質改善
- 具体的領域での生成AIによる問題解決
- 文章からの音声・画像・動画表現生成
人工知能をいつでも学べるプラットフォーム開始
株式会社dott社との協働によるものです。現在は,5回分の授業の資料を見やすい形に整形して公開しています。
[動画]