2023.9.7 Xiao
AI入門
1
目次
• まえがき
• AIとは?
• 生成AIとは?
• 機械学習モデルを作ってみよう
• OpenAI APIを使ってみよう
• まとめ
2
まえがき
• AI学習超初心者のためのAI入門の内容を説明する。
• AIについて勉強したことを共有する。
3
AIとは?
4
AIとは?
• AIとは?
• 機械学習とディープラーニング
• まとめ
5
目次
AIとは?
• AI : 人工知能(Arti
fi
cial Intelligence)
人工的に作られた知能、それを使った技術のこと。
• 知能とは?: 「知能がある」とは”考えられる”ということ。
→ その場の状況に応じて、原理原則に基づいて対応できること。
事前にテンプレートが用意されていて、決まったことを行うのではない。
6
例)車に乗車中。交差点の信号が青になった。自分は直進したい。
左側から来た救急車が右折しようとしている。
→ 日本道路交通の常識的には、この場合「救急車が右折完了まで停止する」が最適解。
AIとは?
AIの分類
• 機械学習
• ディープラーニング
・データをもとにルールや知識を自ら学習する技術を取り入れた人工知能。
(例: 将棋プログラム、検索エンジン)
・コンピュータが自らデータ内の特徴を見出すことで、
人間に匹敵するような判断を行うことができる。
(例: 自動運転、画像生成)
AI
機械学習
ディープラーニング
7
• 機械学習: コンピュータにデータを渡して、データからパターンを学習させる。
何か入力したものに対して、学習したことをもとにして、結果を出力。
AIとは?
機械学習
コンピュータ
データ
これはりんごです。
入力 出力
8
AIとは?
機械学習(学習と推論)
学習
:渡されたデータから
パターンを学ぶ
推論: 入力→ 学習した内容をもとに出力する
という流れのこと。
なぜ”推論”?
→ 必ずしもその内容が正しいとは限らないから。
あくまで予測した結果を出しているだけ。
コンピュータ
データ
これはりんごです。
入力 出力
9
学習させたもの
→ モデル
AIとは?
AIの学習方法(教師あり学習・教師なし学習)
• 教師あり学習:ラベル(答え)付きのデータを渡して学習してもらう方法。
過去のデータから予測を立てたい場合に強い。
• 教師なし学習:ラベル(答え)なしのデータを渡して学習してもらう方法。
データが持つ特徴を分析したい場合に強い。
(需要予測・株価予測・画像認識 など)
(画像生成・異常検知 など)
りんご
10
AIとは?
AIの学習方法(強化学習)
• 強化学習:AIに報酬を与えて、AIの判断を強化させる方法。
より多くの報酬がもらえる回答をAI自身に試行錯誤してもらう。
(将棋・囲碁プログラム、お掃除ロボ など)
1回目のトライ 2回目のトライ
ミッション:
より高くとばす
11
AIとは?
AIに学習させるデータ
• 「Garbage in , garbage out 」
→「ゴミみたいなデータを入れると、ゴミみたいなデータしか出てこない。」
〜 AIに学習させるデータはどんなデータでもいいのか? 〜
なるべく均等に、いろんなデータが混ざっている方がいい。
→ 事前に人の目で、データの内容・数を見る必要がある。(データの前処理)
内容が欠けていたり、判断に困るようなもの 全く同じデータが複数
12
AIとは?
AIの画像認識
〜 りんごとバナナの画像を学習させ、
AIには入力した画像がりんごかバナナかを判別してもらう。 〜
コンピュータ
画像データ
これはりんご/バナナです。
入力 出力
13
AIとは?
AIの画像認識(りんごとバナナをどう区別するか?)
・色: 黄色
・形: 三日月型
・色: 赤色
・形: 丸型
特徴量:
データを分類する時の指標となる、
定量的に表される特徴のこと。
14
AIとは?
AIの画像認識(特徴量を選ぶ)
〜 りんごと青リンゴとトマトの話 〜
りんごの特徴
・色: 赤色
・形: 丸型
りんごではない? りんごか?
学習させるデータの特性によっては、特徴量を何にするか選ぶ必要がある。
「特徴量選択」をAIに任せられないのか?
という話が次のディープラーニングにつながってくる。
15
AIとは?
ディープラーニングと人間の脳
• 人間の脳の思考回路とは?
→ 人間の脳にはニューロンと呼ばれる脳の神経細胞がある。
ニューロンは情報を受け取り、
また別のニューロンに伝達するという役割がある。
ニューロン
• ディープラーニング
: 人間の脳の思考回路をコンピュータ上で再現した仕組み(ニューラルネットワーク)
を何重もの層にして形成したもの。
情報を伝達
コンピュータ上で実現しやすい仕組みだった。
16
AIとは?
ニューラルネットワーク
• ニューラルネットワーク
:人間の脳の思考回路をコンピュータ上で
再現した仕組み。
:「人工ニューロン」を線で繋ぐという
単純な仕組み。
入力層 隠れ層 出力層
入力
入力
出力
出力
• ディープラーニング
: ニューラルネットワークを
何重もの層にして形成したもの。
: 隠れ層の層数を増やしたり、それぞれの層の人口ニューロンの数を増やす。
ニューラルネットワークの図
17
AIとは?
「特徴量を選ぶ」ということと「ディープラーニング」
• 「特徴量を選ぶ」ということと「ディープラーニング」
→ 人工ニューロン一つ一つに特徴量を入れる。
「人工ニューロン同士を繋いだ線の太さ」 = 「特徴量の結びつきの強さ」
→ 線の太さをもとに特徴量を選びながら、出力まで進んでいく(最適解に近づく)
入力
入力
出力
出力
特徴量
18
AIとは?
AIの画像認識(りんごと青リンゴとトマトの話の続き①)
・色: 赤色
・形: 丸型
青色・黄色の
りんごもある。
トマトはヘタが星型
・特徴量・判断材料を追加してみる
19
AIとは?
AIの画像認識(りんごと青リンゴとトマトの話の続き②)
トマトのパターン
画像がトマトである確率
・色: 赤色 100%
・形: 丸型 80%
・ヘタ: 星型 100%
りんごのパターン
・色: 赤色 100%
・形: 丸型 80%
・ヘタ: 星型 10%
画像がトマトである確率
この画像がトマトである確率は低い。
りんごの画像である可能性がある。
この画像はトマトである確率が高い。
〜 画像がトマトである確率 〜
20
AIとは?
• AIとは、人工的に作られた知能、それを使った技術のことを指す。解析・分析・予測などを得意とする。
• 最近のAIは機械学習・ディープラーニングをベースにどんどん応用されている。
• 今回紹介したAIの使用例(画像認識やゲームAI、自動運転、需要予測など)はほんの一部。
• 分析・解析だけではなくて、
学習したデータをもとに新しいコンテンツを”創造すること”を目的としたAIが登場している(生成AI)。
21
まとめ
生成AIとは?
22
生成AIとは?
• まえがき
• 生成AIとは?
• 生成モデルについて
• GPTを取り上げて説明
• LLMについて
• まとめ
23
目次
• 生成AIというものについて大まかに説明する。
• 今回のスライドでは、いろいろな単語が出てくるので、順番に説明していく。
24
生成AIとは?
まえがき
生成AIとは?
• 生成AI
→ 学習済みのデータをもとに、入力されたことに対して応答する形で、
新しいデータを作成して出力することができるAI。
• ただのAIと何が違う?
→ オリジナルコンテンツ創造の可否。
→ 学習の目的が「創造すること」にある。
→ 学習したパターンをもとにしてAI自身がオリジナルコンテンツを生成する。
これまでのAI
→ 予測・分析・分類・特定・自動化が主。
25
生成AIとは?
生成AIの利用例①
• テキスト生成 ( ChatGPT, Bard, etc.. )
→ 長文の要約、文章生成、プログラミングコード生成 など。
• 画像生成 ( Stable Di
ff
usion, DALL•E2 etc.. )
→ テキストで指示するとイメージに沿ったオリジナル画像を生成。
26
生成AIとは?
生成AIの利用例②
• 動画生成 ( Gen-2, etc.. )
→ 画像と同じように、テキストで指示するとイメージに沿ったオリジナル動画を生成。
(現時点ではまだ、数秒ほどの短い動画)
• 音声生成 ( Voicebox, etc.. )
→ 音声入力やテキスト入力により、新たな音声を生成。
・ 例)1人の声を大量に学習させる。
↓
その人の声質と全く同じ声で、文章を自由に話す音声を生成することができる。
27
生成AIとは?
生成モデルについて
• 生成モデルとは?
→ 生成AIの頭脳。
→ オリジナルコンテンツの創造のために、
特定の分野のパターンを認識・処理できるようにトレーニングさせたもの。
• 生成モデル例
→ GPTシリーズ、VAE、GAN、拡張モデル etc..
* 生成モデルについて”GPTシリーズ”を取り上げて説明する。
28
生成モデルについて
• GPT(Generative Pre-trained Transformer)
→ OpenAIが開発した大規模言語モデル。
→ 超膨大な量のテキストデータを学習させて、
文章生成や言語理解の能力(次に来る単語の予測など)を身につけさせたモデル。
・GPT(Generative Pre-trained Transformer)
GPTとは?
GPTをはじめとする
言語モデルの仕組みを作る上で
ベースとなっているもの
29
生成モデルについて
Transformerについて①
• Transformerとは?
→ 「Attention Is All You Need」という論文の中に登場した
ニューラルネットワークモデルのこと。
• どんなモデル?
→ 処理が早く、精度が高い。汎用性高くて何にでも使えるという言語モデル。
→ 従来の言語モデルが抱えていた問題をあっさり解決してしまったモデル。
30
生成モデルについて
Transformerについて②
• 従来のモデルとは?
→ RNNを使ったモデル。
・RNN: リカレントニューラルネットワーク
(リカレント:回帰)
ある時点での状態を
次の状態の入力値として使う。
S
X
Y
S0 S1 S2 S3
X1 X2
X3
Y1 Y2 Y3
展開したもの
出力
入力
31
生成モデルについて
Transformerについて③
• 何が問題だったか?
・ 長期記憶が苦手。
・ 同時に複数の処理ができない。
・ 学習スピードが遅い。
・ 超膨大な量のデータの処理に向かない。
S0 S1 S2 S3
X1 X2
X3
Y1 Y2 Y3
出力
入力
32
生成モデルについて
従来モデルの学習スタイル(長文読解の例)
「走れメロス」冒頭部分
メロスは激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。メロスには政治がわからぬ。
メロスは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。
きょう未明メロスは村を出発し、野を越え山越え、十里はなれた此のシラクスの市にやって来た。
メロスには父も、母も無い。女房も無い。十六の、内気な妹と二人暮しだ。
この妹は、村の或る律気な一牧人を、近々、花婿として迎える事になっていた。結婚式も間近かなのである。
メロスは、それゆえ、花嫁の衣裳やら祝宴の御馳走やらを買いに、はるばる市にやって来たのだ。
先ず、その品々を買い集め、それから都の大路をぶらぶら歩いた。メロスには竹馬の友があった。セリヌンティウスである。
今は此のシラクスの市で、石工をしている。その友を、これから訪ねてみるつもりなのだ。(以下省略)
【問題】 メロスが、”はるばる市にやって来た” のはなぜか?
【解答】 近々結婚式を挙げる妹に、花嫁の衣装や祝宴の御馳走などを買うため。
妹の結婚式のための
買い出しのはずが、、
セリヌンティウスに会うため?
従来モデル(RNN)の場合
33
生成モデルについて
Transformerの学習スタイル
• 従来のモデルの問題をTransformerがどのようにして解決したのか?
→ 「長文読解を、マーカーを引きながら読み進める!」
→ 「リスニング問題で、メモを取りながら聞く!」というイメージ。
単語や一節に重み付け(マーキング)していきながら読み進め、
どういう出力が一番いいか判断するという処理を行う。
→ リカレント層を取り除いて、Attention層 でモデルを構成
34
生成モデルについて
Transformerの学習スタイル(長文読解の例)
「走れメロス」冒頭部分
メロスは激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。メロスには政治がわからぬ。
メロスは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。
きょう未明メロスは村を出発し、野を越え山越え、十里はなれた此のシラクスの市にやって来た。
メロスには父も、母も無い。女房も無い。十六の、内気な妹と二人暮しだ。
この妹は、村の或る律気な一牧人を、近々、花婿として迎える事になっていた。結婚式も間近かなのである。
メロスは、それゆえ、花嫁の衣裳やら祝宴の御馳走やらを買いに、はるばる市にやって来たのだ。
先ず、その品々を買い集め、それから都の大路をぶらぶら歩いた。メロスには竹馬の友があった。セリヌンティウスである。
今は此のシラクスの市で、石工をしている。その友を、これから訪ねてみるつもりなのだ。
【問題】 メロスが、”はるばる市にやって来た” のはなぜか?
【解答】 近々結婚式を挙げる妹に、花嫁の衣装や祝宴の御馳走などを買うため。
マーカー部分を判断材料とする。
買い出しか?
セリヌンティウスに会うためか?
Transformerの場合
35
生成モデルについて
Transformerの構造①
• Transformerの構造
→ ベースは「エンコーダ・デコーダ」モデル
エンコーダ
デコーダ
出典:”Attention Is All You Need”
36
生成モデルについて
Transformerの構造②
• エンコーダ
→ 入力された文章の構造を理解し、単語の位置情報を理解した
後、それぞれの単語や一節の関係を理解し、類似度や、重要度
を把握する。
Self-Attention層
入力文章内の照応関係(類似度や重要度)を獲得する層。
Positional Encoding層
単語の位置情報を埋め込む層。
出典:”Attention Is All You Need”
37
生成モデルについて
Transformerの構造③ • デコーダ
→ Attention層で重み付けして来たものに対して、最
終的にどういう出力がいいか判断して、出力する。
Self-Attention層(マスクあり)
入力文章内の照応関係(類似度や重要度)を獲得する層。
Positional Encoding層
単語の位置情報を埋め込む層。
Source-Target-Attention層
異なる文章同士の照応関係(類似度や重要度)を獲得する層。
出典:”Attention Is All You Need”
38
生成モデルについて
“Attention Is All You Need”
• Attention層自体は、すでに2015年あたりに登場。
→ RNNの「あまりにも長文になると精度が下がってしまう問題」を
解決するために使われてはいた。
→ リカレント層を取り除くという発想には至らなかった。
• リカレント層がなくてもAttention層だけで十分じゃないか!
→ “Attention Is All You Need”
39
Transformer
→ リカレント層を取り除いて、Attention層 でモデルを構成
生成モデルについて
Transformerモデルの発表
• “Attention Is All You Need” による Transformerモデルの発表
世界中の言語モデル研究・開発の光となる!
言語モデルに対し、より多くのデータを学習させることができるようになり、
著しく言語モデルの精度をあげることに成功!
40
LLMについて
LLMとは?
• Transformerの登場で、
モデルに対し、より多くのデータを学習させることができるようになった。
結果: モデルが超巨大化。
超巨大化した言語モデル
大規模言語モデル
LLM(Large Language Models)
41
LLMについて
LLMの代表的なモデル4つ
• BERT
→ Googleが発表した初期のLLM。双方のエンコードによるモデル。
• GPT
→ OpenAIが発表。
デコーダによる教師なしの事前学習の後、
各タスクに合わせてファインチューニングによる教師あり学習を行う2段階のモデル。
• PaLM
→ Googleが発表。とにかく大量のパラメータ数をもつモデル。
• LLaMA
→ Metaが発表。
他のLLMと比べて圧倒的にパラメータ数が少ないが、
他のLLMに匹敵する精度をもつモデル。 どのモデルもベースは ”Transformer”
次ページより、それぞれのモデルの特徴を簡単に説明する。
42
LLMについて
LLMの代表的なモデル4つ( BERT )
• BERT
→ Googleが発表した初期のLLM。双方のエンコードによるモデル。
• BERTのアルゴリズム
→ 従来の単一方向からの学習ではなく、
双方向からのエンコードによる学習でマスク部分を導き出す。
Itʼs already 2 p.m. He is ( ) . Itʼs already 2 p.m. He is ( ) .
43
LLMについて
LLMの代表的なモデル4つ( GPT )
• GPT
→ OpenAIが発表。
デコーダによる教師なしの事前学習の後、
各タスクに合わせてファインチューニングによる教師あり学習を行う2段階のモデル。
• ファインチューニングとは?
→ ファインチューニング: 微調整
→ 学習済みのモデルに、特定のタスクに関するデータを追加。
そのタスクに適応した表現・特徴を出力できるように再学習させるということ。
44
LLMについて
LLMの代表的なモデル4つ( GPT )
• ファインチューニング
例)「その映画のレビュー文は、Positive か Negative か?」(感情分析)
映画レビューのデータだけを学習させたモデルに、次の質問をしたい。
”この映画のレビュー内容を、Positive or Negative で分類してください。”
事前学習 : 映画レビューのデータを学習
ファインチューニング :「レビュー内容を、Positive or Negative に分類する」というタスクに関して、
より正しく分類できるように、モデルを微調整し、再学習してもらう。
45
LLMについて
LLMの代表的なモデル4つ( PaLM )
• PaLM
→ Googleが発表。とにかく大量のパラメータ数をもつモデル。
• PaLMの学習方法
→ Pathways という学習アプローチ。複数のTPU を相互接続して、並行学習をしていくような構成。
パラメータ数比較
・GPT-1 1億1700万個
・GPT-2 15億個
・GPT-3 1750億個
・PaLM 5400億個
・LLaMA 70億〜700億個
6144台のTPU v4 を使用して、データ処理
TPU(Tensor Processing Unit)
: Googleが開発したDeepLearningのためのデータ処理装置
46
LLMについて
パラメータとは?
• パラメータとは?
→ 一概に一言で、こういうものです!という説明はできない。
→ モデル内のニューロン、ニューロン同士を結合するシナプス、
シナプスにかかる重みとバイアス。
• パラメータ数
→ ニューロンの数、シナプスの数、重み、バイアス、全てを考慮して計算した数。
→ モデルの複雑さ・表現力を示す指標となるもの。
パラメータ数が多いとモデルはより複雑なパターン・関係性を学習することができる。
47
LLMについて
LLMの代表的なモデル4つ( LLaMA )
• LLaMA
→ Metaが発表。
他のLLMと比べて圧倒的にパラメータ数が少ないが、
他のLLMに匹敵する精度をもつモデル。
• 少ないパラメータ数で高精度のモデル
→ パラメータ数が少ない分、超膨大な量の学習データで学習させた。
→ Transformerの研究を重ね、より少ない計算量で学習する方法を実現させた。
パラメータ数比較
・GPT-3 1750億個
・PaLM 5400億個
・LLaMA 70億〜700億個
48
LLMについて
LLMの代表的なモデル4つ( LLaMA )
• LLaMA2の発表
→ 2023年7月発表。商用利用が可能になった。
LLaMA1
・ソースコードは一般公開。
・重み付けに関しては
特定のコミュニティを除き、確認不可。
・商用利用は不可、研究開発のみの利用が可能。
LLaMA2
・公式に商用利用可能。
・モデルの重み付けも公開。
49
LLMについて
LLMの代表的なモデル4つ( LLaMA )
• LLaMA2の発表
→ 2023年7月発表。商用利用が可能になった。
LLaMA2の発表後すぐに
・Stable Di
ff
usion(画像生成AI)を展開するStabilityAIが、
LLaMA2をファインチューニングして新しいLLMを開発! というニュース。
LLaMAをベースに、世界中の企業・個人が
新しいモデルを開発する流れに!
50
発表内容をおさらい
AI
生成AI
・テキスト生成(例:ChatGPT)
・画像生成
・動画生成
・音声生成 etc..
ChatGPT
GPTモデル
・Transformerという仕組みがベース
~~~~。
LLM
大規模言語モデル
GPT
LLaMA
PaLM
~~~、~~?
文章入力
51
• 今回はAIの中の”生成AI”というものについて取り上げた。
• 言語モデル開発において、”Transformer”の登場が、LLMの発展に大きく影響した。
• LLMは、現在もどんどん開発が進められていて、
大企業が次から次へとモデルを製作・発表。
• LLMの更なる発展に注目!
52
生成AIとは?
まとめ
機械学習モデルを作ってみよう
演習課題:「気温予測」ができるモデルを作ってみよう
53
• 演習課題の概要説明
• 演習手順・実行結果
• 演習課題のまとめ
機械学習モデルを作ってみよう
目次
54
機械学習モデルを作ってみよう
演習課題の概要
• どのようなモデル?
→ 1週間分のデータ(気温・日照時間・天気のデータ)を元に、
翌日の気温を予測するモデル。
• 使用したデータ
→ 気象庁HPより、2018年1月1日〜2023年8月7日までの”網走”の気象データ。
(他に、東京・宮古島のデータでも実験した。)
以下の参考資料をもとに、演習を行った。
• Tensor
fl
ow2(Keras)で気温を予測する(第1回)
https://www.arp-corp.co.jp/blog/contents/2022/05/001.html
• Tensor
fl
ow2(Keras)で気温を予測する(第2回)
https://www.arp-corp.co.jp/blog/contents/2022/06/001.html
55
機械学習モデルを作ってみよう
演習手順
1. データの収集
2. データの整形
3. モデルの作成
4. 作成したモデルで気温予測
5. 予測を評価する
6. モデルのカスタマイズ(オプション)
56
機械学習モデルを作ってみよう
演習手順 ①データの収集
気象庁HPから、必要なデータを取得
・気象庁 各種データ・資料 「過去の気象データ・ダウンロード」
https://www.data.jma.go.jp/risk/obsdl/index.php
・データファイル形式: CSV形式
・対象期間: 2018/1/1 〜 2023/8/7
・対象地域: 網走(実験用で東京・宮古島も取得)
・データ項目: 「日平均気温」 「日照時間」
「天気概要(昼:06時〜18時)」
「天気概要(夜:18時〜06時)」
57
機械学習モデルを作ってみよう
演習手順 ②データの整形(整形対象のデータを確認・整形)
取得したデータの一部(2018年分)
PythonのDataFrame型で読み込める形に整形する!
ヘッダー行を1行にする
不必要な列を削除する
天気概要は数値データに変換
・晴、曇、雨、雪 で分類
・みぞれ、吹雪、あられ → ”雪”でカウント
・雷、風はノーカウント
58
機械学習モデルを作ってみよう
演習手順 ②データの整形(整形後)
整形後のデータの一部(2018年分)
この形であれば、PythonのDataFrame型で読み込むことができる。
“曇時々雨一時みぞれ” の数値変換
59
機械学習モデルを作ってみよう
演習手順 ②データの整形(気温と日照時間を標準化)
・数値データのスケールを揃える
→ ただ単に数字の大きさだと、(例えば、気温で30℃超えやマイナス℃になる など)
数字の大きさで重みが左右されてしまう。
・スケールを揃える方法
・標準化
→ データの平均を0、標準偏差が1
のものへ変換する方法。
(式)y = (x - ave̲x) / std̲x
・x:元のデータ
・y:標準化後のデータ
・ave̲x:元データxの平均値
・std̲x:元データxの標準偏差
・正規化
→ データを最大値が1、最小値が0
のものへ変換する方法。
(式)y = (x - min̲x) / (max̲x - min̲x)
・x:元のデータ
・y:正規化後のデータ
・min̲x:元データxの最小値
・max̲x:元データxの最大値
60
機械学習モデルを作ってみよう
演習手順 ②データの整形(気温と日照時間を標準化)
今回は標準化を使用
Pythonライブラリsklearnの中に含まれている、標準化のメソッドを使用。
(正規化のメソッドもある)
from sklearn.preprocessing import StandardScaler
# 気温と日照時間のデータを標準化する
sc_temperature = StandardScaler()
sc_daylight = StandardScaler()
# トレーニングデータ
miyako_tr_sc_tem = sc_temperature.fit_transform(miyako_tr[:, :1])
miyako_tr_sc_dl = sc_daylight.fit_transform(miyako_tr[:, 1:2])
・標準化メソッド StandardScaler()
→ StandardScaler.
fi
t̲transform()関数で、標準化を実行
61
機械学習モデルを作ってみよう
演習手順 ②データの整形(気温と日照時間を標準化)
標準化前
標準化後
62
機械学習モデルを作ってみよう
演習手順 ②データの整形(データファイルの結合)
•all_df_18_23.csv
•train_df_18_22.csv
•test_df_23.csv
・データファイルの結合
→ 2018〜2023年まで年ごとに分けてデータを取得した。
この後の、機械学習の”学習・評価” 工程で使いやすいように、複数のデータを結合した。
以下が、データ整形をした最終完全版である。
→ 2018〜2023年までのすべてのデータ
気温予測後に、真のデータとして比較するために使う。
→ 2018〜2022年までの学習用のデータ
モデルに学習させるためのデータ。
→ 2023年のテスト用のデータ
学習済みモデルの汎用性を評価するために使用するデータ。
63
機械学習モデルを作ってみよう
演習手順 ②データの整形(データの整形について補足説明)
=IF(COUNTIF($AJ6, "*晴*"), 1, 0)
=IF(COUNTIF($AJ6, "*曇*"), 1, 0)
=IF(COUNTIF($AJ6, "*雨*"), 1, 0)
=IF(COUNTIF($AJ6, "*雪*")+COUNTIF($AJ6, "*みぞれ*")+COUNTIF($AJ6, “*吹雪*”)+COUNTIF($AJ6, “*あられ*”), 1, 0)
・データの整形(標準化を行う前までの作業)
→ 今回numbersで手作業で、整形作業を行った。
Pandas(Pythonライブラリ)を用いて読み込めるデータ型でなかったから。
・数値データへの変換に使用した関数(一部)
64
機械学習モデルを作ってみよう
演習手順 ③モデルの作成(LSTMモデルについて 1 )
・モデルの作成
→ 今回は、LSTMを使用。
・LSTMについて
→ RNNの進化系。
RNNの問題(勾配消失問題・重み衝突問題)を解決するために作られたモデル。
具体的な説明は省略します。
興味のある方は、「 LSTM 」で検索して、
RNNとの違いを比較してみてください!
次のページでLSTMの学習法のイメージを説明する。
65
機械学習モデルを作ってみよう
演習手順 ③モデルの作成(LSTMモデルについて 2 )
・LSTMのイメージ
→ 必要そうな情報を保持し、完全に忘れてもいい情報は忘れる!
保持しておく情報をコントロールすることができる。
一昨日は、雨だった。
いや、違う。一昨日は晴れだった。
一昨日りさと一緒に、外でお昼ご飯を食べた。
やっぱり一昨日は雨だった。
そういえば、一昨日りさに傘を借りていた。
りさは、最近ランニングを始めたらしい。
・一昨日は雨
次の状態へ保持する情報
・一昨日は雨
・一昨日は晴れ
忘れる情報
・一昨日は晴れ
・一昨日は晴れ
・一昨日は晴れ
・一昨日は雨 ・一昨日は晴れ
66
機械学習モデルを作ってみよう
演習手順 ③モデルの作成(パラメータ等の設定)
・モデルの作成
→ LSTMを使用。 7日間のデータを入力し、その翌日の気温を推論させるモデル。
・パラメータの設定
・入力次元数: 7 (7日間) ・LSTM層: 5 ・出力次元数: 1 (翌日)
・学習データとテストデータ
・乱数の初期化
・モデルの再現性のため、乱数は固定
•train_df_18_22.csv
•test_df_23.csv 乱数について
モデルを作成する時や学習する時に、
乱数を使う場面がある。
乱数を固定することで、
再度、モデルを作成・学習するときに、
同じような結果を出すことができる。
67
機械学習モデルを作ってみよう
演習手順 ③モデルの作成(学習)
・モデルに学習させる model.
fi
t( )関数
→ 教師あり学習
7日間の学習データ に ラベル(翌日のデータ) がついた、7日間ワンセットのデータセットで学習
・学習方法の指定
・バッチサイズ: 64
→ 一回に処理するデータの件数。
7日間ワンセットのデータセットをランダムに選び出す時の件数。
・エポック数: 50
→ 全データの件数を学習することを1単位として、何単位繰り返して学習するかを指定する数。
model.fit(my_train_x, my_train_y, epochs=n_epoch, validation_data=(my_test_x, my_test_y), batch_size=batch_size)
68
機械学習モデルを作ってみよう
演習手順 ③モデルの作成(学習の評価)
・学習中の評価
→ モデルの訓練中(学習中)に、テストデータを使用してモデルの性能(汎化性能)を監視する。
validation̲data=(test̲x, test̲y)
→ 損失値のグラフを表示させてみることが一番わかりやすい方法。
値が収束していれば、うまく学習できているとみることができる。
エポック数:50 バッチサイズ:64 LSTM層:5
で学習させた時
69
機械学習モデルを作ってみよう
演習手順 ③モデルの作成(損失値のグラフ)
・損失値のグラフについて
→ 損失値のグラフがうまく収束しなかったり、
一旦収束したのち、上昇するなどの出力があった場合は、過学習の可能性がある。
エポック数:50 バッチサイズ:64 LSTM層:5
で学習させた時
エポック数:300 バッチサイズ:64 LSTM層:100
で学習させた時
70
機械学習モデルを作ってみよう
演習手順 ③モデルの作成(汎化性能・過学習)
・汎化性能とは
→ 未知のデータに対する推論の精度のこと。
汎化性能が高く、過学習がないことが理想的な学習。
・過学習とは
→ 学習データに対する推論の精度は高いが、
未知のデータに対する推論の精度は低い学習を行うこと。
→ 機械学習の学習の目的は、「未知のデータに対して推論の精度を上げること。」
・過学習が起こる原因
→ 学習データの偏り。データの少なさ・同じデータの学習の繰り返しなどで、偏りは起こる。
71
機械学習モデルを作ってみよう
演習手順 ④作成したモデルで気温予測
予測結果(グラフ)
30℃
-15℃
0℃
2018/1/1 2023/1/1 2023/8/7
72
機械学習モデルを作ってみよう
演習手順 ④作成したモデルで気温予測
予測結果(グラフ拡大)
30℃
-15℃
0℃
2022 2023/1/1 2023/8/7
2021
グラフ説明
・青ライン: 計測値(真のデータ)のグラフ
・赤ライン: 予測値(学習データ)のグラフ
・緑ライン: 予測値(テストデータ)のグラフ
予測結果より
・真のデータに近い値とは言えないものの、
気温のupdown・線の流れ(夏と冬の感覚)は、
表現できていると思う。
73
機械学習モデルを作ってみよう
演習手順 ⑤予測を評価する
以下の評価項目において、数値評価を行った。
各評価項目の値が小さいほど(誤差が少ないほど)、モデルの予測精度が良いとみることができる。
評価項目
・誤差最小値
→ 各データの誤差の絶対値の中で、最小のもの
・誤差最大値
→ 各データの誤差の絶対値の中で、最大のもの
・誤差平均値
→ MAEと呼ばれる評価指標。誤差の絶対値の平均を出す。
予測値が真の値と ”どれだけずれているのか” を示す指標。
誤差平均値の式
(式)MAE = |x - p|/ num
・MAE:誤差平均値
・x:元のデータ
・p:予測値
・num:データの数
74
機械学習モデルを作ってみよう
演習手順 ⑤予測を評価する
数値評価(学習データ)
数値評価(テストデータ)
誤差最小値: 0.000777℃ 誤差最大値: 13.1℃ 誤差平均値: 2.68℃
誤差最小値: 0.0362℃ 誤差最大値: 9.36℃ 誤差平均値: 2.52℃
75
機械学習モデルを作ってみよう
演習手順 ⑥モデルのカスタマイズ(パラメータの変更)
① 作成したモデルのエポック数・バッチサイズ・LSTM層の値を変えてみる。
・エポック数を増やす。 (50 → 80, 100, 300)
・バッチサイズの数を変更する。 (64 → 16, 32, 128, 256)
・LSTM層を増やす。 (5 →10, 50, 100, 300)
作成したモデルの精度を上げる方法を考えてみる。
エポック数から実験し、それぞれ精度が一番高かったものを使って、
次のバッチサイズ・LSTM層を実験する。
76
機械学習モデルを作ってみよう
演習手順 ⑥モデルのカスタマイズ(エポック数の変更)
① 作成したモデルのエポック数・バッチサイズ・LSTM層の値を変えてみる。
実験結果(エポック数 (50, 80, 100, 300) バッチサイズ:64 LSTM層:5)
誤差平均値のグラフ
・学習データ: 青ライン
・テストデータ: 緑ライン
・値が小さい(グラフが下がっている)ほど、精度が良い。
実験を通して
・エポック数が増える(学習量が増える)と
やはり精度は良くなる。
・しかし、処理時間(学習時間)がかなり長くなった。
77
機械学習モデルを作ってみよう
演習手順 ⑥モデルのカスタマイズ(バッチサイズの変更)
① 作成したモデルのエポック数・バッチサイズ・LSTM層の値を変えてみる。
実験結果(バッチサイズ (16, 32, 64, 128, 256) エポック数:300 LSTM層:5)
誤差平均値のグラフ
・学習データ: 青ライン
・テストデータ: 緑ライン
・値が小さい(グラフが下がっている)ほど、精度が良い。
実験を通して
・バッチサイズを大きくする(一度に学習する量を増やす)と、
処理速度を上げることはできる。
・精度の面で言うと、64の時と比べて、
あまり改善されない印象。
78
機械学習モデルを作ってみよう
演習手順 ⑥モデルのカスタマイズ(LSTM層数の変更)
① 作成したモデルのエポック数・バッチサイズ・LSTM層の値を変えてみる。
実験結果(LSTM層 (5, 10, 50, 100, 300) エポック数:300 バッチサイズ:64)
誤差平均値のグラフ
・学習データ: 青ライン
・テストデータ: 緑ライン
・値が小さい(グラフが下がっている)ほど、精度が良い。
実験を通して
・学習データの精度はかなりよくなった。
・対して、テストデータの精度が落ちた。
・過学習が起きた可能性大
79
機械学習モデルを作ってみよう
演習手順 ⑥モデルのカスタマイズ(パラメータの変更において)
①の実験(エポック数・バッチサイズ・LSTM層の値を変える)を通して、
・元のモデルの精度を総合的に超えるような結果は得られなかった。
(処理時間・過学習の問題が浮上)
・パラメータの値を決める時に優先して考える条件
(1) 過学習が起きていないかどうか
→ 損失値のグラフで確認しよう!
(2) 精度か処理時間か?
→ 精度が良くても、処理時間があまりに長いとモデルの能力としてどうか?
80
機械学習モデルを作ってみよう
演習手順 ⑥モデルのカスタマイズ(特徴量の変更)
作成したモデルの精度を上げる方法を考えてみる。
実験はしていないが、このような方法もある。
②特徴量を増やす or 減らしてみる。
今回の特徴量は、以下の10項目。
→ 特徴量を変える場合は、もう一度データの収集・整形から行う必要がある。
「気温」「日照時間」
「天候:晴(昼)」「天候:曇(昼)」「天候:雨(昼)」「天候:雪(昼)」
「天候:晴(夜)」「天候:曇(夜)」「天候:雨(夜)」「天候:雪(夜)」
81
機械学習モデルを作ってみよう
演習手順 ⑥モデルのカスタマイズ(モデルの変更)
作成したモデルの精度を上げる方法を考えてみる。
実験はしていないが、このような方法もある。
③LSTM以外を使用したモデルを試す。
今回の機械学習演習では、Tensor
fl
owというPythonライブラリを使用して、LSTMを実装。
→ 他に、機械学習でよく使われるライブラリ scikit-learn (sklearn)がある。
Tensor
fl
ow以外の方法も考えられる。
82
機械学習モデルを作ってみよう
演習のまとめ
• 演習を通して、機械学習のモデルを自分で作ると言う感覚を体験することができた。
• データの整形作業がとにかく大変だった。
→ データサイエンスで一番大変な作業が、
「モデル作成前のデータの準備作業(データの収集・確認・整形作業)」だと言う意味がよくわかった。
• 過学習というものに関して、実際の演習を通して知ることができた。
83
OpenAI APIを使ってみよう
84
OpenAI APIを使ってみよう
• まえがき
• OpenAI APIとは?
• OpenAI APIを使ってみよう
• OpenAI APIについてのまとめ
目次
85
まえがき
• 生成AI開発を行うOpenAIより公開されている“APIモデル”というものを紹介
する。
• “OpenAI API” というものがどういうものなのか、説明する。
86
OpenAI APIとは?
• OpenAI API
→ OpenAIが開発・公開している言語モデルを、
APIキーなどを用いて、アクセスすることができるというもの。
• 具体的に何ができる?
例)自社開発のサービスに、AIの機能(AIチャット機能 等)を搭載することができる。
87
OpenAI APIを使ってみよう
OpenAI APIの始め方手順
1. OpenAIにアカウントを作る・APIキーの取得
2. APIキーを環境変数に設定する。
3. ライブラリのインポート
4. APIリクエストを送って動作確認
88
OpenAI APIを使ってみよう
Pythonで実装する ①アカウント作成・APIキーの取得
• 「OpenAI APIキー 発行手順」で検索。
<注意>
・APIキーを発行したときに、絶対にコピーを忘れないこと!
新しいAPIキーを発行する
絶対にコピーして、
自分の分かるところに保存してから Done
89
OpenAI APIを使ってみよう
Pythonで実装する ②APIキーを環境変数に設定
• 環境変数にAPIキーを設定
→ コピー・保存したAPIキーを、自身が使用しているOSの環境変数に追加する方法。
どの環境のOSを使っているのか、しっかり把握し、
PCのOSと、仮想環境のOSを間違えないようにする!
実行コードにAPIキーを直接書く方法もある。
その場合は、絶対に、
コードに記載したまま、オンライン上に公開(例:リポジトリにコミット)しないこと。
90
OpenAI APIを使ってみよう
Pythonで実装する ③必要なライブラリのインポート
• Pythonを使った方法を紹介
pip install openai
import openai
・openaiライブラリをインストール
・実行コードに、openaiライブラリをインポート
・APIキーを環境変数に設定した場合、
実行コードに、osライブラリをインポート
import os
91
OpenAI APIを使ってみよう
Pythonで実装する ④APIリクエストを送って動作確認
• OpenAI公式HPに載っているサンプルコードを試してみる。
→ チャット補完(文法修正)を試してみる。
import os
import openai
# APIキーを設定
openai.organization = "[会社アカウントのOrganization ID]"
openai.api_key = os.getenv("OPENAI_API_KEY")
# 応答を取得するためのリクエストデータを定義
request_data = {
"model": "gpt-3.5-turbo",
"messages": [
{"role": "system", "content": "You will be provided with statements, and your task is to convert them to standard English."},
{"role": "user", "content": "She no went to the marcket"}
],
"temperature": 0,
"max_tokens": 256
}
# チャット補完APIにリクエストを送って応答を取得
response = openai.ChatCompletion.create(**request_data)
# メッセージの内容のみを表示
print(response['choices'][0]['message']['content'])
“ She no went to the marcket .”
↑
・リクエスト
「この文を標準的な英語の文に直してほしい」
← Openaiのチャット補完APIにリクエストを送って、
応答を取得
92
OpenAI APIを使ってみよう
Pythonで実装する ④APIリクエストを送って動作確認(実行結果)
• チャット補完(文法修正)の実行結果
She did not go to the market.
・レスポンス
# メッセージの内容のみを表示
print(response['choices'][0]['message']['content'])
メッセージの内容のみを表示するように指示
93
OpenAI APIを使ってみよう
公開されているAPIモデル(GPT, DALL-E, Whisper)
現在OpenAIが公開中のAPIモデル
・GPTシリーズ(3, 3.5, 4)
→ 自然言語処理(NLP)モデル。自然言語やコードを理解し、文章やコードを生成できる。
・DALL-E
→画像を生成するためのAIモデル。与えられたテキストの説明に基づいて画像を生成することができる。
・Whisper
→ 音声をテキストに変換するためのモデル。
音声認識技術として使われ、音声コマンドや音声データをテキストデータに変換することができる。
音声認識アプリケーションや自動字幕生成などに利用される。
94
OpenAI APIを使ってみよう
公開されているAPIモデル(Embeddings, Moderation)
現在OpenAIが公開中のAPIモデル
・Embeddings
→ 埋め込み(ベクトル表現)を生成するためのモデル。
テキストデータを数値ベクトルの形式に変換する手法。
ベクトル表現に変換することで、機械学習モデルの学習や分析が行いやすくなる。
・Moderation
→ センシティブな内容や安全でない文章を検出するためのモデル。
不適切なコンテンツのフィルタリングなどに使用される。
95
OpenAI APIを使ってみよう
APIを利用するにあたり
• OpenAI API は従量課金制
→ 自分のアカウントで確認できる。
アカウントを作成して最初の3ヶ月は規定内なら無料で使える。
(期限切れは課金しないと使えなくなる。)
• APIキーは、個人情報。取り扱いには注意しよう!
→ 本人のみが分かる場所に保存。
インターネット上で晒さないように!
96
OpenAI APIについてのまとめ
• 自社開発・個人開発のサービスなどに、AIを搭載することができるという便利なもの。
• AIの機能を一から開発する必要がないので、作業コストを抑えることができる。
• OpenAIの公式HPには、各タスクの実装コードの例が乗っているので、
APIキーの設定さえできれば、あとは例を参考にして実装するのみ!
97
発表まとめ
• AI超初心者による、AI超初心者のための発表内容。
• AIについて勉強したり、AIモデルを構築するには、複雑で曖昧な知識を理解しなければならないこともある。
• 「AIとは、“子供”と同じだ」と考えてみては?
• AIモデルを構築すること、AIに学習させるということは、
「子供に教育して知識を身につけさせたり、高度な技術を持てるように手助けしてあげること」と重なる。
• この発表を通して、AIに興味を持っていただけたら幸い。
98
発表は以上です。
ご清聴ありがとうございました。
99

AI入門