Computer Software Association of Japan

次世代AI人材育成訓練プログラム
テキスト

Computer Software Association of Japan

目次
AI概要
機械学習のアルゴリズム
教師あり学習教師なし学習従来法による画像・映像処理
06_CNNとImageAugmentation
NNによる分析と分類
Inception_CIFAR10
物体検出法_SSD
データの加工と可視化
生成モデル
再帰型ネットワーク

自然言語処理
組み込み
まとめ

第1章
第2章
第3章
第4章
第5章
第6章
第7章
第8章
第9章
第10章
第11章
第12章

第13章・第14章
第15章・第16章
第17章

Computer Software Association of Japan

第１章

AI基礎

- 1-

Computer Software Association of Japan

世間一般のAIのイメージ
一番よくある画像分類・判定
画像から物体を認識して領域を切り出す- 2-

Computer Software Association of Japan

画像判定系の一番の応用といえば……
自動運転はこれをリアルタイムで実施- 3-

Computer Software Association of Japan

AIってバズワード？

10年前はクラウドがバズワード
今はAIが一番のバズワード
しかし、クラウドはすっかり根付いてもう欠かせなくなった
AIもバズワードになりつつも、この先欠かせなくなる？

？
- 4-

Computer Software Association of Japan

今日のテーマ
午前 大阪から：AIと機械学習と深層学習(Deep Learning)の区別をつける
AIは怖くない
午後 東京から：ビジネスへの応用(1)
まずざっくりとAIをどのようにビジネスへ活かせるか考える- 5-

Computer Software Association of Japan

AIの歴史と概念（再掲）
Goodfellow(Apple)
による概念図ロジスティック
回帰
自己符号化器表現学習

エキスパートシステム

機械学習

Ian Goodfellow, Yoshua Bengio and Aaron Courville, "Deep Learning", The MIT Press, 2016
- 6-

Computer Software Association of Japan

従来の機械学習例）画像の物体認識 (OpenCVなど)
学習用ラベル

特徴量※
抽出

違う

特徴量データ学習

違う※画像データでよく使われる特徴量
SIFT（Scale-Invariant Feature Transform）
SURF（Speeded Up Robust Features）
HOG（Histogram of Oriented Gradients）
Haar-like, BoF（Bag-of-Features）, BoK（Bag-of-Keypoints） 猫
etc.

機械学習では、認識すべき対象の着目点（＝入力データ）は人間が考える- 7-

Computer Software Association of Japan

例) OpenCVによる画像識別
ハール(Haar)特徴量にもとづくCascade 識別器を使用
P. Viola (2001)によるオブジェクト検出の研究とR. Lienhart (2002)による改良がベースになっている
白と黒で構成される矩形を画像に適用し、対象画像の特徴量を作成する
例えば顔画像は、目の領域の画素は周辺よりも暗い、口の領域の画素が周辺より明るい、などの特徴が得られる
顔、目、正面、上半身、下半身、笑顔、などの識別器がOpenCVで使用できる

Sample face detection from, Paul Viola and Michael J. Jones,"Rapid Object Detection using a Boosted Cascade of Simple
Features", IEEE CVPR, 2001.

- 8-

Computer Software Association of Japan

Deep Learningの学習例）画像の物体認識
大量の正解画像と不正解画像（の画素値）をニューラルネットワークの入力とし、特徴と認識ルールを自動的に学習させる

学習
違う

大量の猫
画像
大量の異なる画像

ニューラルネットワークの中間層が多数の画像フィルタとなる
この画像フィルタが特徴抽出を行う
違う
次の2つを同時に学習する• 各画像フィルタの重み• 画像フィルタの出力値を特徴量と
猫
した認識ルール- 9-Computer Software Association of Japan

従来のニューラルネットワーク
処理能力の限界から、入力層、中間層、出力層の3層構造が多く精度の問題が
あった

入力層

中間層

出力層

入力
入力

出力

入力

精度の問題

- 10 -

Computer Software Association of Japan

Deep Learning（深層学習）
中間層を多層化することで精度の問題を解決
ただし、GPUを使用してもやはり処理時間はそれなりにかかってしまう

入力層

中間層

出力層

入力

出力

入力

入力

中間層を多層化- 11 -

Computer Software Association of Japan

従来手法と深層学習は何が違うのか
従来手法
人間が、どのような特徴量に着目するか、あらかじめ特徴を定義する
深層学習
コンピュータによって、特徴量を自動的に抽出する
ただし、学習のためのネットワークは人間が用意する- 12 -

Computer Software Association of Japan

具体例紹介
きのこの山とたけのこの里の分類
従来の機械学習（SVM）（Interface 2017年8月号より）– 入力対象の何を抽出し、どうやって解析するかを人間が考える
1. きのこの山は柄の部分が細いので白い部分が多そうだ
2. きのこの山は傘の部分に凹凸が多そうだ– 画像取得→2値化（チョコの部分抽出）
1. バウンディングボックス内の白と黒の面積比の計算
2. 黒い部分の頂点を検出し頂点数を求める– 分類対象を1．と2．の数値データで表している（Interface 2017年8月号 p.33）

Deep Learning– 取得した画像を入力データとする• 画像の画素値が入力データ（Interface 2017年8月号 p.33）- 13 -

Computer Software Association of Japan

機械学習とはArthur Samuel (1959)"Field of study that gives computers the ability to learn without
being explicitly programmed“
明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野

Photo by https://en.wikipedia.org/wiki/Arthur_Samuel- 14 -

Computer Software Association of Japan

機械学習の例
k-近傍法（教師あり）
決定木（教師あり）
ランダムフォレスト（教師あり）
自己組織化マップ（教師なし）
サポートベクターマシン（教師あり）
ニューラルネットワーク（教師あり）
遺伝的アルゴリズム
ベイジアンネットワーク- 15 -

Computer Software Association of Japan

人工知能とは人工知能のFAQ（人工知能学会のサイトより抜粋）
Q．人工知能とは何でしょうか？

– A．知的な機械、特に、知的なコンピュータプログラムを作る科学と技術です。人の知能を理解するためにコンピュータを使うことと関係がありますが、自然界の生物が行っている知的手段だけに研究対象を限定することはありません。
Q. では、知能とは何でしょうか？

– A．知能とは、実際の目標を達成する能力の計算的な部分です。人間、動物、そして機械には、種類や水準がさまざまな知能があります。
Q．AIは人の知能をまねようとしているのではないのですか？

– A．ときにはそうしますが、いつもというわけではありません。あるときは、機械に問題を解決させることについて、他人や自分自身がどうするかを調べます。一方、AIのほとんどの研究は、人間や動物について研究するよりも、知的に解決しなければならない問題そのものについて研究しています。AI研究者は、人間がやらないような方法や、人間ができるよりも多くの計算を伴う方法を用いることもできます。

- 16 -

Computer Software Association of Japan

AIは何の略ですか？
Artificial Intelligence :人工的な 知性
教師あり学習– 人間（教師）があらかじめ用意したデータとパターンを学習し、ここから新しいデータに対して何らかの結果を出力する

教師なし学習– 与えられたデータやパターンから、何らかの規則性をAI自らが発見し、見いだす

強化学習– どのような行動を取れば最大限の利益が得られるかを学習する（囲碁やチェスなど）- 17 -

Computer Software Association of Japan

ニューラルネットワークとはシナプスの結合によりネットワークを形成した人工ニューロン（ノード）が、学習によってシナプスの結合強度を変化させ、問題解決能力を持つようなモデル（Wikipediaより）
教師あり学習、教師なし学習の両方がある
単純パーセプトロン
入力層と出力層の2層のみのニューラルネットワーク

入力Xに対して重みとバイアスを用いた計算により得られた値と教師データYの誤差を計算し、誤差が小さくなる
ように重みとバイアスを更新して学習する- 18 -

𝑦 = 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑏
単純パーセプトロンの例

Computer Software Association of Japan

ニューロン
情報処理と情報伝達に特化した神経組織
電気信号を樹状突起から軸索末端に伝達する昆虫で10万、人間にはおよそ1000億のニューロンが存在している髄鞘をもつ神経細胞の構造図(Wikipedia 神経細胞 より)- 19 -

Computer Software Association of Japan

形式ニューロン
1943年に発表された人工ニューロン。マカロックとピッツによって発表されたので、マカロック・ピッツモデルとも呼ばれる
ニューロンに対する入力を足し合わせ、ある閾値を超えると発火する

𝑥1
𝑥2

Σ

𝑥3

出力y

𝑥𝑛
Warren S. McCulloch; Walter Pitts. “A logical calculus of the ideas immanent in nervous
activity”. The bulletin of mathematical biophysics (Kluwer Academic Publishers) 5 (4): pp.115133, 1943.
- 20 -

Computer Software Association of Japan

ニューロンの発火設定された閾値を超えて、初めてニューロンは値を出力する
閾値はコップのようなもの。コップの容量内なら水を入れてもこぼれないが、容量を超えると水があふれる

𝑥1

出力

𝑥2
𝑥3

Σ

出力
閾値

𝑥𝑛

- 21 -

入力

Computer Software Association of Japan

AIの歴史
1960年代：最初期のAI。推論・探索の研究が盛んに行われたが、まったく実用的ではなく、急速にブームが収束
1980-90年代：エキスパートシステム、ファジー
専門分野の知識を取り込み、推論を行うことでその分野のエキスパートのように振る舞うシステム
If-Thenルール：条件を定義し、条件を満たせばその条件における判断を下す
2010年代：Deep Learning- 22 -

Computer Software Association of Japan- 23 -

Computer Software Association of Japan

ELIZA
最初期のAI。基本的にルールベース
ELIZA自身は精神科医という立場を取り、人間と対話する
今の技術からすると稚拙だが、当時はブームに。一部のユーザーはワイゼンバ
ウムがその仕組みを説明しても納得せず、ELIZAの応答を真剣に受け止めた
日本でも類したものに、人工無脳、チャットボットがある

例）
人間： I have a terrible headache.
ELIZA： Maybe you should consult a doctor of medicine, I am psychiatrist.

- 24 -

Computer Software Association of Japan

画像をパターンで扱う
ヒューベル・ウィーゼルの階層仮設（1958年）
猫の視覚野にある線分を見せた時に反応する細胞があることを発見
さらに、単純型細胞(a)と複雑型細胞(b)の2種類に大別
単純型：パターン（線分）がある領域内に存在するときのみ反応
複雑型：パターン（線分）は領域からずれても反応「これならわかる深層学習入門」瀧雅人, 講談社 より- 25 -

Computer Software Association of Japan

パターンの抽出
単純型細胞(a)が反応する部分を1つのニューロンに集める (c)
これを繰り返すことで、単純型細胞を複雑型細胞として束ねることができる
この考え方を元にして、1979年に福島(NHK)が単純型と複雑型を交互に重ねた多層ネットワーク、ネオコグニトロン*を提唱
さらにこれを発展させ、ヤン・ルカンが1989年に5層、1998年に8層のCNNの構築・学習に成功している(LeNet) ……しかしこの後しばらくニューラルネットワークは冬の時代へ*福島邦彦、位置ずれに影響されないパターン認識機構の神経回路のモデル --- ネオコグニトロン---、1979年、電子通信学会論文誌A, vol. J62-A, no. 10, pp. 658-665- 26 -

Computer Software Association of Japan

AIの歴史と概念（再掲）
Goodfellow(Apple)
による概念図ロジスティック
回帰
自己符号化器表現学習

エキスパートシステム

機械学習

Ian Goodfellow, Yoshua Bengio and Aaron Courville, "Deep Learning", The MIT Press, 2016
- 27 -

Computer Software Association of Japan

書籍: DEEP LEARNIG
英語版800ページ、日本語版600ページというボリューム
英語版はWebでも公開されている： http://www.deeplearningbook.org/- 28 -

Computer Software Association of Japan

ちょっとブレイク

今後の受講中サポートについて検討中です
リモート講師からのサポートがまだ決まっていません
Slack, MS Teams, Cisco Teams, Zoomブレイクアウトルームなど検討中ですが、皆さんがやりやすいものはありますか？
（MS Teamsは会社で使っているので使いやすい or 紛らわしいからちょっと……など）- 29 -

Computer Software Association of Japan

流行したきっかけ: 1
G.H.ヒントン(Toronto Univ., Google)の2006年の論文“Reducing the Dimensionality of Data with Neural Networks”, G. E.
Hinton, R. R. Salakhutdinov, Science 28 Jul, Vol. 313, Issue 5786,
pp. 50111-507,(2006)
要旨：小さな中心層を持つ多層ニューラルネットワークを訓練することによって高次元の入力ベクトルを再構成し、高次元のデータを低次元の符号に変換することができる。このような “Auto Encoder” ネットワー
クでは、グラディエント降下を使用してウェイトを微調整できるが、これは初期の重みが適切なソリューションに近い場合にのみ効果がある。
本論文では、データの次元性を低減するツールとして主成分分析よりもはるかに良く働く低次元符号をDeep Auto Encoder ネットワークが学習することを可能にする重みを初期化する効果的な方法を述べる。

- 30 -

Computer Software Association of Japan

流行したきっかけ: 2
物体認識率コンテストである IMAGENET Large Scale Visual Recognition
Challenge 2012 (ILSVRC2012)において、G.H.ヒントンらのチームがDeep
Learning手法で従来26%のエラー率を15%まで改善させた

LeNetを発展させたCNN

AlexNet: 5つの畳み込み層、3つの全結合層、65万ニューロン- 31 -

Computer Software Association of JapanILSVRC2012 結果
1000万枚の画像で学習しテスト用に用意された15万枚画像のエラー率を競う
HintonらのSuperVisionのエラー率は他チームを圧倒
他チームは従来の特徴量抽出技術の延長
ディープラーニング手法はSuperVisionのみ
チーム名

エラー率 (%)

備考

SuperVision15, 16

Hintonら

ISI26, 27

牛久ら東大チーム

OXFORD_VGG

27

Simonyanら Oxford Univ.

University of Amsterdam

29

アムステルダム大学

XRCE/INRIA

33

イエーナ大学

http://www.image-net.org/challenges/LSVRC/2012/results.html

ILSVRCでは1000カテゴリの画像分類を行う
http://image-net.org/challenges/LSVRC/2012/browse-synsets- 32 -

Computer Software Association of Japan

その後の発展: GoogLeNet, VGG16ILSVRC2014で1位がGoogLeNet, 2位がVGG16
GoogLeNet: Googleによる22層モデル。Inceptionモデルとも呼ばれ、Googleが開発しているTensorflowでは、最新版のInception-v3がソースレベルで公開されている。（ネットワークは優秀だが複雑）
VGG16: Oxford Univ.によるAlexNetの拡張系。16層によるCNNで、設計がシンプルなので2位に終わったがよく使われるように。 19層使用するVGG19もある- 33 -

Computer Software Association of Japan

人間の認識率を超える
ILSVRC2015では人間の画像認識エラー率 4%を超える、3.5%の結果をMicrosoft Research Asiaのチームが実現
ここでは、ResNetと呼ばれる152層のニューラルネットワークが使用された
前年のILSVRC2014で使用された主要ネットワーク VGGは19層、GoogleNetは22層なので、前年よりも7倍近い規模多層にすればある程度は性能が上がるが、多くしすぎると逆に誤差が増加したり、逆誤差伝搬の問題もあり、様々な工夫がなされているDeep Residual LearningMSRA @ ILSVRC & COCO 2015 competitions
http://kaiminghe.com/ilsvrc15/ilsvrc2015_deep_residual_learning_kaiminghe.pdf- 34 -

Computer Software Association of Japan

流行したきっかけ: 3
Googleによる猫の「認識」(2012年)
YouTubeにアップロードされている動画から、ランダム抽出した200x200ピ
クセルサイズの画像を1000万枚用意し、Deep Learningに入力した3%前後の画像に人間の顔が含まれており、猫が含まれる画像も多数
Googleクラウドの1,000台を使用して3日間計算した

9層のネットワーク構成- 35 -

Computer Software Association of Japan

人間の認識
Googleの研究では、人間の顔、背中、猫に強く反応するニューロンの選択に成功

ニューロンが反応した顔写真群

ニューロンによって生成された
人間の顔の特徴- 36 -

Computer Software Association of Japan

猫の認識

ニューロンが反応した猫写真群

本物の猫

ニューロンによって生成された猫の顔の特徴https://googleblog.blogspot.com/2012/06/using-large-scale-brainsimulations-for.html- 37 -

Computer Software Association of Japan

人工知能の世間的な分類
レベル1：単純な制御プログラム– マーケティング的に「人工知能」を名乗っているだけ
レベル2：古典的な人工知能– 推論、探索、知識ベースなどにより、組み合わせが極端に多い入力と出力を関係付ける方法を定義する
レベル3：機械学習を取り入れた人工知能– サンプルやデータをもとに入力と出力の関係であるルールや知識を自ら学習する– 入力は、目的に応じて入力対象の特徴をあらわすもの（特徴量）であ
る必要がある
レベル4：ディープラーニングを取り入れた人工知能– 特徴量自体を学習する機械学習（松尾豊、「人工知能は人間を超えるか」より）- 38 -

Computer Software Association of Japan

Goodfellowの図と対応
レベル3
レベル4
ロジスティック
回帰

レベル2

自己符号化器エキスパート
システム

表現学習
機械学習

圏外

レベル1

Ian Goodfellow, Yoshua Bengio and Aaron Courville, "Deep Learning", The MIT Press, 2016
- 39 -

Computer Software Association of Japan

弱い人工知能（AI）と強い人工知能（AI）
ジョン・サール（アメリカの哲学者）の造語
 弱い人工知能➢ 人間の全認知能力を必要としない程度の問題解決や推論を行うソフトウェアの実装や研究➢ チェスや囲碁など限定された範囲の問題について、一見知的に見える問題
解決ができるもの 強い人工知能➢ 人間の知能に迫るようになるか、人間の仕事をこなせるようになるか、幅広い知識と何らかの自意識を持つもの

 汎用人工知能（≒強い人工知能）AGI: Artificial General Intelligence➢ 人間レベルの知能を実現するもの➢ 限定された問題を解決する特定型人工知能ではなく、一般的な知能を実現するもの- 40 -

Computer Software Association of Japan

人工知能の利用動向
 人工知能の効果を最大化するためには、質の高い学習用データを基に付加価値を生み出す学習済みモデルを生成することが重要
 学習済みモデルを初期状態とし再利用することで、比較的少数の学習デー
タから優れた性能を持つ派生データを得ることができる
 画像認識や音声認識の領域ではすでに実用性の高い技術として応用が進められている➢ 自動走行における車外走行環境認識、医用画像からの疾病等の診断支援など➢ 家庭や自動車内での音声対話や音声アシスタント、工場での異常音検知など（AI白書2017より）- 41 -

Computer Software Association of Japan

今後の展望
海外では検索サービスやSNSなどのインターネット空間での活動から得られるデータに対して適用を進めている
海外企業がすでに圧倒的なシェアを持つインターネット空間を中心とした人
工知能利用に、今後対抗することは容易ではない
先行する企業はAIの機能を組み込んだ機械やロボットを普及させることで実空間における消費者との接点も押さえつつある
健康情報、自動車の走行データ、工場の稼働データなど、個人や企業の実世界における活動から得られる実空間データへの適用は今後の競争課題（AI白書2017より）- 42 -

Computer Software Association of Japan

AIの課題(フレーム問題)

1969年にマッカーシーとヘイズが指摘した人工知能研究の最大の難問であり、今からしようとしていることに関係のある事柄だけを選び出すことが、実は非常に難しいという問題
AI搭載のロボットは、人間の代わりに危険な作業を行う。爆弾が仕掛けられている部屋から、美術品を取り出してくる作業において、美術品の入った台車を押して作業をしていたが、爆弾が台車に仕掛けられていたので爆発に巻き込まれてしまった。そこで、改良型ロボットが作られ、再度部屋に向かった。しかし、美術品を運び出すには台車を動かせばよいと思いついたあと、台車を動かしたときの影響を、天井は落ちてこないか、部屋の壁の色は変わらないか、電気は消えないか……などと考えているうちに爆弾が作動してしまった

J.McCarthy and P.J.HayesSome philosophical problems from the standpoint ofartificial intelligence, Machine Intelligence, vol.4, pp.463-502 (1969) 画像はAI学会Webサイトより- 43 -

Computer Software Association of Japan

AIの課題(シンボルグラウンディング問題)
記号システム内のシンボルがどのようにして実世界の意味と結びつけられるかという問題。記号接地問題とも呼ぶ。ハルナッドが提唱

猫
人間は、猫の画像と、猫という概念・意味を理解している
AIがこれを理解するには、目が2つ、耳が頭の上に……などの猫の特徴を細かく画像で理解するしかない。しかし、りんごと青りんごや、シマウマと馬などがそれぞれ近い種類であることは、単なる画像認識ではわからない

Harnad, S.:"The Symbol Grounding Problem", Physica D 42: pp.335-346, 1990.
- 44 -

Computer Software Association of Japan

AIの実例：自動運転
国土交通省による自動運転のレベル
レベル1：運転支援 自動ブレーキ、車線検知など
レベル2：特定条件下での自動運転機能 レベル1の組み合わせなど
レベル3：条件付自動運転 システムが全ての運転タスクを実施するが、シス
テムの介入要求等に対してドライバーが適切に対応することが必要
レベル4：特定条件下における完全自動運転 特定条件下においてシステムが全ての運転タスクを実施
レベル5：システムによる完全自動運転
現在、米テスラがレベル3の自動運転を提供。ただし事故も報告されている- 45 -

Computer Software Association of Japan

実例：Google Photo
人物や動物を登録すると、自動で抽出してくれる- 46 -

Computer Software Association of Japan

パンの自動選別株式会社ブレイン によるトレイ上のパン自動選別システムBakeryScan
手法としては従来型の画像処理で、機械学習ではあるがDeep Learningではない- 47 -

Computer Software Association of Japan

きゅうりのAI
実家のきゅうり農家を継いだ元ソフトウェアエンジニアが自作
きゅうりの等級選別をなるべく自動で行いたい → AIによる自作開発
Webカメラ、Raspberry Pi、Tensorflowで環境構築、きゅうりを運ぶベルト
コンベアも自作
教師データ用画像2万8000枚、8000枚のテスト画像での精度は約80%
完全選別ではなく、人間のサポートとして使用すると、仕分けスピードが約40%向上

元組み込みエンジニアの農家が挑む「きゅうり選別AI」 試
作機3台、2年間の軌跡
https://www.itmedia.co.jp/enterprise/articles/1803/12/news035.html- 48 -

Computer Software Association of Japan

医療診断：肝臓腫瘍候補の検出
MR/CT画像を合成した画像から、肝臓腫瘍を検出
Cycle-GANをベースにしたニューラルネットワークを構築

Wei, Dongming, et al. "Synthesis and Inpainting-Based MR-CT Registration for ImageGuided Thermal Ablation of Liver Tumors." International Conference on Medical Image
Computing and Computer-Assisted Intervention. Springer, Cham, 2019.
- 49 -

Computer Software Association of Japan

構築したネットワーク- 50 -

Computer Software Association of Japan

診断画像からの病気予測(1)陽電子放出断層撮影(PET)画像の結果から、アルツハイマーを予測・分類
3層の畳み込みを含む5層ネットワークを使用
提案手法(PETNet)が最も高い予測を得ている

Guo, Jiaming, et al. "Predicting Alzheimer's Disease by Hierarchical Graph Convolution from
Positron Emission Tomography Imaging." arXiv preprint arXiv:1910.00185 (2019).
- 51 -

Computer Software Association of Japan

診断画像からの病気予測(2)富士フイルム 画像診断系プラットフォームREiLI

http://reili.fujifilm.com/ja/- 52 -

Computer Software Association of Japan

書籍紹介：AI概論、動向
60分でわかる！機械学習＆ディープラーニング超入門：機械学習研究会
技術評論社、2017 本当に超入門。コンパクトにとりあえず概要をつかむ本
人工知能は人間を超えるか ディープラーニングの先にあるもの：松尾豊、KADOKAWA/中経出版、2015
日本でもトップレベルのAI研究者による紹介本。内容は若干古いが、非常にわかりやすく、かつコンパクトにまとめられている

AI白書 2020：独立行政法人情報処理推進機構 AI白書編集委員会 編、KADOKAWA、2020
国内・国外のAI動向をまとめたもの。松尾先生も委員会に加わっている- 53 -

Computer Software Association of Japan

書籍紹介：事例紹介
業界別！AI活用地図：本橋 洋介，翔泳社
タイトルの通り、AIの活用事例を集めて解説したもの2019年11月発売なので、かなり最近の事例が多い
ただし、ここで公表されている事例が本当にAIなのかどうかは不明- 54 -

Computer Software Association of Japan

書籍紹介：AIに必要な数学を学ぶ
高校数学でわかるディープラーニングのしくみ：涌井貞美、ベレ出版

Deep Learningに必要な数学について、高校数学
ベースで説明した良書
著者の涌井氏は、この他「Excelでわかるディープ
ラーニング超入門」など、平易でわかりやすい関連本を多く手がけている- 55 -

Computer Software Association of Japan

この講座で今後使用するライブラリ
Tensorflow, Keras：機械学習ライブラリ
Matplotlib：Python標準のプロット用ライブラリ
Numpy：リスト、行列操作用ライブラリ
Pandas: データ解析用ライブラリ
OpenCV：画像・映像を扱うには欠かせない画像処理ライブラリ
Deep Learningではとにかくデータ構造を入れ替えたり操作したりが多いので、Numpyと可視化のためにMatplotlibが欠かせない。また、データ解析にはPandasも使用される- 56 -

Computer Software Association of Japan

AIにライブラリは必要？
必須ではない自分で組めばもちろん必要なし
ライブラリを使うと正直ブラックボックスも多いが、様々なネットワークが簡単に組める
主流はTensorflow/KerasとPythonによる開発
最近人気があるのがPyTorchとPython
データ操作は、Pythonを使用した方が圧倒的に楽自作本として、例えば「ニューラルネットワーク自作入門」
著：Tariq Rashid, 監訳：新納浩幸- 57 -

Computer Software Association of Japan

PC上でDeep Learningを実行するならCPUでは演算時間が膨大になってしまうので、NVIDIA GPUの使用がほぼ必須
ただしGPUのライブラリであるCUDA, cuDNNとPython, ライ
ブラリのTensorflowのバージョンを合わせないといけない※動作できるバージョンが決まっている
Python ver, 3.7, Tensorflow ver.2.1.x, CUDA 10.1.418.x,
cuDNN 7.6
(最新バージョンはPython 3.8, CUDA11, cuDNN 8.0)

ローカルPCとほぼ同一ではないが、Google Colaboratoryでバージョン合わせに悩むことなく簡単に実行できる- 58 -

Computer Software Association of JapanGPU
巨大なデータをGPUで扱う場合、GPUのメモリ容量に注意
最新版 RTX 3080iは12G予定
現行品では RTX 2080 8G（8万円前後）など
nVIDIA GPUは複数使用も可能なので複数使用でメモリは拡張可能
データセンター向けのTESLAシリーズは16Gなど- 59 -

Computer Software Association of Japan

Google Colaboratory
PythonをWebブラウザ上で実行し、画像を組み合わせて表示できる環境
Jupyter NotebookをGoogle Compute Engine上で実装したもの。完全無料
https://colab.research.google.com/
Googleクラウド上のGPUや、Googleが独自開発したTensorFlow用演算ハードウェアのTPUを使用して高速な演算が可能
WebブラウザからアクセスできればOK
ただし、90分＆12時間ルールがある
データはGoogle Drive上に保存するか、ダウンロードする
Google ColabのGPU速度は、おおよそGTX 1060程度（2017年3万程度）- 60 -

Computer Software Association of Japan

クラウドサービスのDeep Learning API例) Amazon Rekognition
https://aws.amazon.com/jp/rekognition/
JavaScriptからAPIを呼び出す
有料だが、画像1000枚の判定につき1ドル、など安価
実際に使用するには、EC2, S3などAWSの周辺知識が必要- 61 -

Computer Software Association of Japan

第２章

機械学習やアルゴリズムへの
理解

- 1-

Computer Software Association of Japan

本節の内容
e-learnin教材では、ニューラルネットワークの重みパラメータはあらかじめあたえていたが、ここではそれを自動的に求めるための基礎となる概念、手法（損失関数と勾配降下法）について説明する- 2-

Computer Software Association of Japan（人工）ニューラルネットワーク
 マカロック=ピッツのモデルを源流とする人工ニューロン（という関数）を次々と組み合わせて構成された関数のこと。複数のニューロン（神経細胞）から、あるニューロンへの信号の入力を重みを持った線形和と活性化関数（後述）により数式化する。
 もっとも原始的な例（右図）
 入力層と出力層の2層（数え方によっては1層）のみのニューラルネットワーク
 右側の丸の内部では左側からの3つの重み付き和に活性化関数と呼ばれるある関数を施した結果が出力される

𝑦 = 𝑓(𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑏)

 ネットワークの重みとバイアスは当初は手で（あるいは勘で）決められたが、より複雑なネットワークは人手では扱うことができず、コンピュータ
プログラムにより自動的に調整する必要がある。この調整過程が学習と呼
ばれる
- 3-

Computer Software Association of Japanニューロン

脳科学辞典「シナプス」 より- 4-

Computer Software Association of Japan

Deep Learning（深層学習）とは
 多層のニューラルネットワーク
による機械学習手法

バイアス
バイアス

 層の数に特に厳密な定義は無い➢ 入力層と出力層以外に層があればDeepと呼ぶこともある 層の数が増えると学習が難しく、特殊例を除きあまり実用化されていなかった 入力と出力層の間にある層を中間層、あるいは隠れ層と呼ぶ

入力層
- 5-

中間層

出力層

Computer Software Association of Japan

ディープラーニングの学習過程概要
入力をディープニューラルネットワー
クで計算し、出力を得る
出力を推測値として、教師データとの誤差を用いて各層の重みを更新する
推測と重みの更新を繰り返し、誤差が少なくなるように重みを適正な値に収束させる※隠れ層 = 中間層- 6-Computer Software Association of Japan

ニューラルネットワーク内の計算
下の図は最も基本的な全結合ニューラルネットワーク（第1層は2ユニット、第2層は3ユニット）
重み和の計算は、行列とベクトルの積として表すことができる
𝒚𝒌 = 𝒘𝒌𝟏 𝒙𝟏 + 𝒘𝒌𝟐 𝒙𝟐 + 𝒃𝒌
(𝒌 = 𝟏, 𝟐, 𝟑)

𝒚𝟏
𝒘𝟏𝟏 𝒘𝟏𝟐𝒚𝟐 = 𝒘𝟐𝟏 𝒘𝟐𝟐
𝒚𝟑
𝒘𝟑𝟏 𝒘𝟑𝟐
𝒘𝟏𝟏
= 𝒘𝟐𝟏
𝒘𝟑𝟏

𝒘𝟏𝟐
𝒘𝟐𝟐
𝒘𝟑𝟐

𝒃𝟏
𝒃𝟐
𝒃𝟑

𝒃𝟏
𝒙𝟏
𝒙𝟐 + 𝒃𝟐𝒃𝟑𝒙𝟏𝒙𝟐𝟏※ 実際は、次に述べる活性化関数をさらに施したものを出力とする- 7-

Computer Software Association of Japan

活性化関数（Activation function）
各ニューロン（図式内の丸印）の計算結果を活性化関数で変換して次の層へ送る
ニューロン電位がある閾値を超えると発火（シナプスから顆粒が放出）するという動きを模倣している
この発火の関数モデルは当初はステップ関数（後述）であり、現在用いられ活性化
る学習アルゴリズム実装上不都合
関数
バイアス

入力

w31
w12

出力

Σ f

y1

𝒚𝒌 = 𝒇(𝒘𝒌𝟏 𝒙𝟏 + 𝒘𝒌𝟐 𝒙𝟐 + 𝒃𝒌 )

b2

w11

x1

x2

b1

w21

Σ f

y2

Σ f

y3

b3
w22
w32

※ここで、Σは（重み付きの）和をとるという操作を表す- 8-

Computer Software Association of Japan

活性化関数の種類（入力:x、出力:y） 恒等写像、線形関数➢ 𝑦=𝑥 シグモイド関数（Sigmoid）
1➢ 𝑦 = 1+𝑒 −𝑥 tanh関数（e-learning教材で登場）
𝑒 𝑥 −𝑒 −𝑥➢ 𝑦 = 𝑒 𝑥 +𝑒 −1

 ReLU（Rectified Linear Unit）➢ 𝑦 = max(𝑥, 0)（藤田、高原、「実装ディープラーニング」, p.52）

 Leaky ReLU➢

𝑦 = 𝑥 𝑖𝑓 𝑥 ≥ 0
𝑦 = 𝑎𝑥 𝑖𝑓 𝑥 < 00 ≤ 𝑦𝑖 ≤ 1、 σ𝐾
𝑖=1 𝑦𝑖 = 1 となるため、確率変数とみなせる ソフトマックス関数（Softmax）➢ 𝑦𝑖 =

𝑒 𝑥𝑖
𝑥

𝑗
σ𝐾
𝑗=1 𝑒

K：出力層のユニット数

活性化関数は他にも種類があるが割愛- 9-

Computer Software Association of Japan

損失関数（Loss Function）
推測した出力データと教師データとの間の誤差を計算する関数
n:サンプル番号、yn：出力データ、tn：教師データとする 平均二乗誤差（Mean Squared Error） 連続値の回帰の場合
𝐸𝑛 =

1
2

1
𝐾

𝑦𝑛 − 𝑡𝑛 2、𝐸 = σ𝐾
𝑛=1 𝐸𝑛 クロスエントロピー

出力が離散値の場合

𝐾
 𝐸𝑛 = − σ𝐾
𝑘=1 𝑡𝑛𝑘 log 𝑦𝑛𝑘 、𝐸 = σ𝑛=1 𝐸𝑛

𝑡𝑛𝑘 ：nサンプル目のクラスkの教師データ
𝑦𝑛𝑘 ：ｎサンプル目のクラスkの出力データ 2値（バイナリ）クロスエントロピー 2値分類の場合
𝐸𝑛 = − 𝑡𝑛 log 𝑦𝑛 + 1 − 𝑡𝑛 log(1 − 𝑦𝑛 ) 、𝐸 = σ𝐾
𝑛=1 𝐸𝑛- 10 -

Computer Software Association of Japan

One-hotベクトル
 ラベルデータのベクトル表現
 総ラベル数Nの i 番目のラベルを、N次元ベクトルの i 番目の要素だけを1とし、その他は0のベクトルで表す
 例：総ラベル数5（1～5）で3番目ラベルは [0, 0, 1, 0, 0] となる

 分類問題の教師ラベル表現として使われる➢ 分類問題では出力層のノード数を総ラベル数にし、Softmax関数を活性化関数とする➢ 教師データをOne-hotベクトルで与えると、正解ラベルに相当する
ノードの出力が1、それ以外のノードの出力が０に近づくようにノードの重みを更新する➢ Softmax関数を使うので、それぞれの出力ノードの値は、そのラベルに属する確率とみなすことができる- 11 -

Computer Software Association of Japan

誤差最小化手法
 勾配降下法
重みパラメータ全体ならなるベクトルwは、深層学習の場合、一般に巨大次元のベクトルである。
このwに対する誤差Eの勾配 𝛻𝐸 というベクトルを計算し、これをもとに誤差Eが小さくなる方向にwを更新する（勾配ベクトル 𝛻𝐸 の向きは、Eが大きくなる向きに一致する）➢ 𝑤 = 𝑤 − 𝜀𝛻𝐸、

𝜀：学習係数（0.01や0.001など小さな数）
1

1➢ 仮に誤差を二乗誤差E = 2 𝑌 − 𝑡 2 = 2 𝑤𝑋 − 𝑡 2とすると、Eの𝑤での微分は

𝛻𝐸 = 𝑤𝑋 − 𝑡 𝑋 𝑇 となる➢ 誤差をクロスエントロピーとすると、
𝛻𝐸 = − σ𝐾
𝑛=1 𝑦𝑛 − 𝑡𝑛 𝑋
 あとで、勾配降下法をExcelで説明する- 12 -

Computer Software Association of Japan

勾配降下法のイメージ
 あるウェイトwの時点での損失関数の勾配を求め、損失が減少する方向にwを更新する 勾配𝛻𝐸が正なら𝑤を減少させ、負なら𝑤を増加させる
 学習係数 𝜀 が大きい場合

𝛁𝑬➢ 早く収束点に向かう➢ 収束点を通り過ぎることがある（収束せずに振動する）

 学習係数 𝜀 が小さい場合➢ 多くの学習回数が必要➢ 着実に収束点に向かう（収束しやすい）➢ 極小解で収束する場合がある（最小解ではない）
 多次元でもあり、一概に決めることが難しい- 13 -

𝑤 − 𝜀𝛻𝐸
（更新）

𝑤
（現在）

Computer Software Association of Japan

誤差逆伝播法多層のニューラルネットワークでは誤差を伝播させて各層で重みを更新する
勾配は誤差信号δと入力から求められ、誤差信号は次のように求められる
zは隠れ層の出力

δ3 = 𝑌 − 𝑡 ∘ 𝑓3′ 𝑍3f’は活性化関数の微分
δ2 = (𝑊3 )𝑇 δ3 ∘ 𝑓2 ′(𝑍2 )δ1 = (𝑊2 )𝑇 δ2 ∘ 𝑓1 ′(𝑍1 )∘ はアダマール積で、同じサイズの2つの行列の要素ごとの積𝛻𝐸3 = δ3 𝑋2𝑇
𝛻𝐸2 = δ2 𝑋1𝑇
𝛻𝐸1 = δ1 𝑋0𝑇
誤差信号が逆方向に伝播しながら勾配を求めるようになっている- 14 -

Computer Software Association of Japan

勾配消失問題 誤差逆伝播法では、誤差が出力層側から入力層側に伝播しながら各層の重みを更新する 活性化関数によっては、活性化関数の微分が小さな値になり、それが層を重ねることで誤差がほぼ0になる➢ シグモイド関数の微分の最大値は0.25➢ 3層分逆伝播すると3層目は0.253となり、最初の誤差の約0.016倍となる

 ReLUを使うことでこの問題を軽減することができる➢ ReLUは入力が正の時の微分は常に1- 15 -

Computer Software Association of Japan

バッチ学習とミニバッチ学習 バッチ学習➢ 用意した学習データや学習評価データを一度に使って学習を行う ミニバッチ学習➢ データを小分けにして学習を繰り返す
 行列計算はデータをGPUに展開して計算を行うので、一度に計算できる
データ量はGPUのメモリに依存する➢ ミニバッチのサイズを大きくすれば学習が速くなるが、GPUのメモリ容量に応じてミニバッチのサイズを調整する必要がある
 全サンプルの学習を1回終えることを1エポック（Epoch）と呼ぶ- 16 -

Computer Software Association of Japan

過学習、過剰適合
 ディープラーニングでは、層やユニットが増えるとパラメータ数が増え、学習データの情報を全て保持できる➢ 学習データ自体の推測はほぼ100%にできる
 しかし、学習データ以外のデータは未知のデータなので推測精度が悪くなる場合がある➢ たとえるなら、過去問は暗記して完璧だが本番が全然ダメという受験生
 過学習を抑える方法➢ 学習評価データを使ったエポック数の設定➢ 正則化✓ 学習時のパラメータの更新幅に制約をつける➢ ドロップアウト✓ 学習時にランダムにユニットを無効化してネットワークの構造を変える- 17 -

Computer Software Association of Japan

分類の評価指標
Accuracy（正解率）：

Recall（再現率）：

𝑨+𝑫
𝑨+𝑩+𝑪+𝑫𝑨
𝑫、
𝑨+𝑩 𝑪+𝑫

𝑨
𝑫
Precision（適合率）：
、
𝑨+𝑪
𝑩+𝑫

F-Measure（F尺度）：
RecallとPrecisionの調和平均（逆数の算術平均の逆数）
𝟐・𝑹𝒆𝒄𝒂𝒍𝒍・𝑷𝒓𝒆𝒄𝒊𝒔𝒊𝒐𝒏
𝑹𝒆𝒄𝒂𝒍𝒍 + 𝑷𝒓𝒆𝒄𝒊𝒔𝒊𝒐𝒏- 18 -

Computer Software Association of Japan損失関数と勾配降下法
Excelによるデモ- 19 -

Computer Software Association of Japan

2つのタスク：分類と回帰
• 分類

• 回帰
• 入力（説明変数）から出力（目的変数）を予測• 入力から出力が得られるメカニズ
ムを関数でモデル化• データをいくつかのグループに分ける• あるいは、個々のデータにラベルを付加する• 例: メールのスパム判定、画像のカテゴリ判定- 20 -

Computer Software Association of Japan

それぞれのタスクに関する手法の利用場面• 未知データについての推測• 分類タスクの場合、未知データがどのグループに属するかを推測• 回帰タスクの場合、未知の入力値から出力値を推測• 既存データの説明• 分類の様子から知見を得る（そもそもグループがいくつあるかとか、各グループ間の関係など）• 変数間の関係から知見を得る- 21 -

Computer Software Association of Japan

数学的視点から見た機械学習のタスク• 分類および回帰• 関数のあてはめ（フィッティング）• パラメータを持った関数族を設定し、損失関数を適切に定め（2乗誤差など）、その値が最小になるようにパラメータを決定する- 22 -

Computer Software Association of Japan損失関数と最適化• 回帰問題の場合、当てはめに利用する関数族を設定する• 例： 𝑦 = 𝑎𝑥 + 𝑏（直線の族。 𝑎、𝑏 の組一つ一つについて、直線 𝑦 =𝑎𝑥 + 𝑏 が族に含まれる）• 関数族のパラメータを変数とする関数を適切に設定し、それを最小化することを目標とする。この関数を損失関数という。
• 上の例の場合、 損失関数は 𝑓(𝑎, 𝑏) という形の関数• 損失関数というのはパラメータの悪さ（良さ）を測るための指標となるもの• 具体例は次の最小2乗法を見てください
32.5

𝑓1 𝑥 = 2.1𝑥 + 3.7
𝑓2 (𝑥)
𝑓3 𝑥
𝑓42 (𝑥) = 1.2𝑥 +4.8

𝑓12345 𝑥
候補となる関数族

13.8
22.4
3.7
88.9
数値化（損失関数の値）- 23 -

候補となる各関数を数値化し、その値の一番小さいものを選ぶ。
各関数を数値化する際に利用するのが損失関数という関数（関数の関数）Computer Software Association of Japan

最小2乗法（あとでExcelでも説明します）• 回帰問題の場合、損失関数として以下の2乗誤差が用いられることが多い• 下図左のように入力と出力の組 𝑥𝑖 , 𝑦𝑖 𝑖=1,…,𝑁 が与えられているとき、例
えば、入力 𝑥 に対して出力 𝑦ො を 𝑦ො = 𝑎𝑥 + 𝑏 の形の関数で予測（単回帰）• 2乗誤差 𝐸 = 12 σ𝑁𝑖=1 𝑦𝑖 − 𝑦ෝ𝑖 2 = 12 𝑦𝑖 − 𝑦ෝ𝑖 たち = 12 （下図右の縦棒の長さの2乗の和） を最小にするの2乗の和
ように 𝑎、 𝑏 を決定する
10

10

9

9

8

8

7

7

6

6

5

5

4

4

3

3

2

2

1

1

𝑦ො = 𝑎𝑥 + 𝑏

0

0
0

1

2

3

4

5

6

7

8

9

0

10

- 24 -

1

2

3

4

5

6

7

8

9

10

Computer Software Association of Japan

勾配降下法による最適化（Excelでも説明）• 損失関数などの関数が最小値をとる点を探索する方法• 候補点（ときにはランダムで選択）から出発し、損失関数が減少する向きへ歩を進める• 損失関数 𝑓 が増加する向きというのは、関数の勾配 ∇𝑓 =

4.5
4
3.5
3
2.5
2
1.5
1
0.5
0-1
-0.7
-0.4
-0.1
0.2
0.5
0.8
1.1

4.6

4.4

4

4.2

3.8

3.6

3.4

3

3.2

2.8

2.6

2.4

2

2.2

1.8

1.6

1.4

1

1.2

0.8

0.6

0.4

0

0.2

-0.2

- 25 -

0.6

2.9
3.2
3.5

-0.4

1.4
1.7
2
2.3
2.6

-1

の向きとして計算できる（あとで説明します）• 勾配 ∇𝑓 の向きとは逆向きに少しずつ移動することを繰り返せ
ば、最小値に行き着くだろうという（ある意味楽観的な）手法• 深層学習でも用いられる

こちらが最小値

5

0.8

𝜕𝑓 𝜕𝑓
,
𝜕𝑥 𝜕𝑦

こちらにはまる
可能性ありComputer Software Association of Japan

Excelによる勾配降下法のデモ- 26 -

Computer Software Association of Japan

さまざまな工夫
デモのような簡単な場合でも、単純な実装では実用にならない可能性がある。手法の改良、他の手法の採用が必要になる。
• 勾配降下法の改良• 局所的な最小値にはまりにくくする工夫• 確率的勾配降下法など• 多層の場合にシステマティックに対応• 単純に合成関数の勾配を求めると面倒（→誤差逆伝播法）- 27 -

Computer Software Association of Japan

第３章

教師あり・なし学習- 1-

2Computer Software Associationof Japan

機械学習の分類
入力に関する 出力に関するデータ
データ（正答）活用例

教師あり学習有り

有り

不動産価格の予測（回帰）、検査結果に基づく陽性判
定（分類）教師なし学習有り無し

顧客の属性に基づく分類、
情報の集約

強化学習

有り

直接的な正答は無いが、報酬が与えられるロボットの歩行学習、将棋、
囲碁

- 2-

3
Computer Software Associationof Japan

教師あり学習• 正解の用意された問題集（教師データ）がある• 教師は正解の導き方を詳しく説明してくれない• 学習者（コンピュータ）は問題と正解の関係を推測する• これまで見たことの無い新しい類似の問題に対して正解を導けるようになることを目指す

教師あり学習の概要– 入力とそれに対応する正解出力の組からなる教師データを用いる– 教師データに基づいて入力と出力の関係を表現するモデルを構築する– 新しい入力に対して精度の高い予測出力ができることを目指す– 出力が連続値の場合「回帰」モデル、出力がカテゴリの場合「分類」
モデルを構築する
ex. 不動産価格の予測（回帰）、検査結果に基づく陽性判定（分類）

- 3-

4
Computer Software Associationof Japan

教師なし学習
出力に関するデータ（正解）が与えられていない
クラスタリングか次元圧縮を目的とする– クラスタリング• 入力データに基づいてサンプルをいくつかのクラスタに分類する– 次元圧縮• 多種類の入力を少数種類の入力にまとめる
ex. 顧客の属性に基づいて顧客をいくつかのクラスタに分類する（クラスタリング）、学生の複数科目の試験成績データに基づいて学生の能力を説明できる少数の変数を作る（次元圧縮）

- 4-

5
Computer Software Associationof Japan

強化学習（本授業の範囲外）
試行錯誤を通じて報酬が最大となるような行動や選択を学習する
ex.

– ロボットの歩行学習• 歩けた距離を報酬とする。機械は手足の動かし方を試行錯誤して報酬が最大になるような動かし方を学習する– 将棋• 敵の王将を取ることを報酬とする。駒の動かし方を試行錯誤して報酬が最大になる戦略を学習する

- 5-

6
Computer Software Associationof Japan

機械学習のプロセス
1. データ分割

2. モデル（アルゴリズム）選択

訓練データ

モデル

検証データ

学習済み
モデル

3. 学習：訓練データ（入出力の組）をモデルに与えてパラ
メータ調整

元データ

4. 予測：検証データ（入力）を学習済
みモデルに与えて予測出力

予測出力

5. 評価：予測出力と検証
データ（出力）を比較して予測精度を評価

機械学習タスクの例：• 腫瘍の検査値X（直径や面積、滑らかさ等）と良性・悪性の診断結果yが組になった
データ (X,y) が100サンプルある場合を考える• 入力Xからyを予測できるモデル y=f(X,C) を構築したい（C:モデルのパラメータ）• 80サンプルでモデルを訓練して、20サンプルでモデルの予測精度を評価する- 6-

7
Computer Software Associationof Japan

機械学習のアルゴリズム
教師あり学習– 分類• k近傍法、SVM、決定木、ランダムフォレスト、パーセプト
ロン，ロジスティック回帰，ニューラルネットワーク– 回帰• 線形回帰、Ridge回帰、Lasso回帰、Elastic Net

教師なし学習– クラスタリング• k平均法– 次元削減• PCA、自己組織化マップ

強化学習（本授業の範囲外）– Q-learning、SARSA、モンテカルロ法- 7-8Computer Software Associationof Japan

ニューラルネットワーク
脳の神経回路の仕組みを真似たモデル．機械学習アルゴリズムの一種
入力と対応する正解出力の組からなる教師データを与える
出力データと正解データの差が小さくなるように重みパラメータを更新す
る
in1

重み

wij

Σ f
重み Vij

出力

Σ f

in2

正解

出力と正解の差が小さくなるように重みパラメータ
Wijを更新する

in3

Σ f

入力層

隠れ層
- 8-

出力層

9
Computer Software Associationof Japan

深層学習
ニューラルネットワークの隠れ層を増やしたモデル
画像や音声等入力と対応する正解出力の組からなる教師データを与える
出力データと正解データの差が小さくなるように重みパラメータを更新する
機械は与えられたデータに基づいて特徴量を抽出・学習する
in
1

重み

wij Σ f

Σ f
重み Vij重み Uij

出力

Σ f

in2

in3

Σ f

Σ f

入力層

隠れ層1

隠れ層2
- 9-

正解

出力と正解の差が小さくなるように重みパラメー
タW,V,Uを更新する

出力層

10
Computer Software Associationof Japan

機械学習・深層学習のための言語R– ベクトル・行列やデータフレーム等データ処理機能、描画機能が標準で用意されており操作が統一されている– 統計解析の機能が標準で用意されている– 機械学習の各種アルゴリズムがパッケージとして豊富に提供されている– 深層学習のライブラリはあるものの主流ではない
Python– ベクトル・行列計算にはNumPyやSciPy、データフレーム処理には
pandas、描画にはMatplotlibのように外部ライブラリが必要で操作が統一されていない– 統計解析の機能が標準で用意されていない（別途StatsModelsが必要）– 機械学習のライブラリ（scikit-learn）がある– 深層学習のライブラリ（TensorFlow, Keras, PyTorch, Caffe等）が充実しており主流となっている- 10 -

11
Computer Software Associationof Japan演習で採用する環境
機械学習– 言語と開発環境：RとR Studio– ライブラリ：Rの各種パッケージ– 実行環境：ローカル
深層学習– 言語と開発環境：PythonとGoogle Colaboratory– ライブラリ：Keras– 実行環境：クラウド- 11 -

12
Computer Software Associationof Japan

教師あり学習（分類）- 12 -

13
Computer Software Associationof Japan

教師あり学習（再掲）• 正解の用意された問題集（教師データ）がある• 教師は正解の導き方を詳しく説明してくれない• 学習者（コンピュータ）は問題と正解の関係を推測する• これまで見たことの無い新しい類似の問題に対して正解を導けるようになることを目指す

教師あり学習の概要– 入力とそれに対応する正解出力の組からなる教師データを用いる– 教師データに基づいて入力と出力の関係を表現するモデルを構築する– 新しい入力に対して精度の高い予測出力ができることを目指す– 出力が連続値の場合「回帰」モデル、出力がカテゴリの場合「分類」
モデルを構築する
ex. 不動産価格の予測（回帰）、検査結果に基づく陽性判定（分類）- 13 -

14
Computer Software Associationof Japan

2021/3/24

k-近傍法
教師あり学習（分類）- 14 -

15
Computer Software Associationof Japan

2021/3/24

k-近傍法の概要と例
k-近傍法：特徴空間上で最も近い距離にある訓練データに基づいて分類を行う方法
歯ごたえ

果物

野菜
セロリ

にんじん

例：トマトは野菜か果物か• 甘さと歯ごたえの2つの特徴量に基づいて判定すると仮定する

リンゴ

レタス
きゅうり
洋ナシ

さやいんげん

ベーコン

ナッツ

ブドウ

タンパク質

オレンジ

エビ
チーズ

魚

バナナ

甘さ

- 15 -•

2次元特徴空間（平面）における近傍点が野菜なら野菜、果物なら果物と判定•

この例ではトマトの4つの近傍はブドウ、オレンジ、さやいんげん、
ナッツだが、4つのうち2つが果物なので果物！
出典：Brett Lantz: 「Rによる機械学習」 翔泳社（2017）を基に鈴木作成

Computer Software Association of Japank-近傍法における次元と距離
例：トマトは野菜か果物か• 甘さと歯ごたえの2つの特徴量に基づいて判定• 2次元特徴空間（平面）における近傍点が野菜なら野菜、果物なら果物• 2点 𝑝1 , 𝑝2 , (𝑞1 , 𝑞2 )間の距離–𝑑=

例：注目する腫瘍が良性か悪性か• ガン細胞のサイズや滑らかさなど30の特徴量に基づいて判定• 30次元特徴空間における近傍点が良性なら良性、悪性なら悪性• 2点 𝑝1 , 𝑝2 , ⋯ , 𝑝𝑛 , (𝑞1 , 𝑞2 , ⋯ , 𝑞𝑛 )間の距離

𝑝1 − 𝑞1 2 + 𝑝2 − 𝑞2 2–

Feature4

2次元

Feature2

𝑝1 − 𝑞1 2 + 𝑝2 − 𝑞2 2 + ⋯ + 𝑝𝑛 − 𝑞𝑛 2

𝑞2

Featuren(𝑞1 , 𝑞2 )𝑝1 , 𝑝2 , ⋯ , 𝑝𝑛𝑑𝑝2n次元イメージ

Feature 3

𝑝1 , 𝑝2(𝑞1 , 𝑞2 , ⋯ , 𝑞𝑛 )𝑝1

𝑞1

Feature 2
Feature 1- 16 -

Feature 1

Computer Software Association of Japank-近傍法による予測方法とkの値による違い
新しいデータ点は最近傍点（もしくはk個の近傍点うち多数派）と同じクラスと予測
1-NN

7-NN

★の最近傍点は●⇒ ★は●と同じクラスと予測••

線形分離不可能なデータセットでも分類可能
kが小さい場合きめ細かく分類、大きい場合滑らかに分類される※データ出典：A. C. Muller et al. mglearn.datasets- 17 -★の7つの近傍点は▲が4、●が3⇒★は▲と同じクラスと予測
（多数決）

18
Computer Software Associationof Japank-近傍法の処理手順と実装
処理手順

– 学習
• 訓練データセット（特徴量・クラス）を格納するだけ（学習不要）– 予測
1. 未分類のデータ点1個に対して、分類済みの近傍データ点をk個見つける
2. 未分類データ点は、分類済み近傍データ点の多数派が所属するクラスに分類する
実装– Rのclassパッケージに含まれるknn実装など- 18 -

19
Computer Software Associationof Japank近傍法で用いるデータの前処理の必要性
特徴量間で値の範囲が大きく異なる場合
Feature 2𝑞2
𝑝2(𝑞1 , 𝑞2 )𝑝1 , 𝑝2

𝑝1

𝑞1

𝑝1 − 𝑞1 2 + 𝑝2 − 𝑞2 2 ∼𝑝1 − 𝑞1 2 = 𝑝1 − 𝑞1

Feature 1

値の範囲が狭い特徴量がモデル構築において評価されない

Feature 2

𝑞2(𝑞1 , 𝑞2 )𝑝1
正規化・標準化

𝑞1
𝑝1 , 𝑝2

𝑝2- 19 -

Feature 1

すべての特徴量について
正規化・標準化を行い、どの特徴量も同等に評価されるようにする必要がある20
Computer Software Associationof Japan

Zスコア標準化・最大最小正規化
Zスコア標準化

𝑋−𝜇
𝑍=
𝜎
𝜎

𝜇
値の範囲が広すぎる

値の範囲が標準化された

最大最小正規化𝑋 − min(𝑋)X′ =max 𝑋 − min(𝑋)𝑋 ′ ∈ 0,1
値の範囲が0以上1以下に標準化された- 20 -

21
Computer Software Associationof Japan※参考：k-近傍法を利用した回帰
処理手順

– 学習
• 訓練データセット（特徴量・目的変数）を格納するだけ（学習不要）– 予測
1. 目的変数の値が未知のデータ点1個に対して、特徴空間における近傍データ点をk個見つける
2. k個の近傍データ点の目的変数の平均を、注目データ点の目的変数の値とする- 21 -

22
Computer Software Associationof Japan

決定木
教師あり学習（分類）- 22 -

23
Computer Software Associationof Japan決定木の概要と例
決定木：特徴量に関する条件分岐をたどると最終的に分類が決定する木構造
例：アヤメの種類を咢と花弁の長さと幅から決定する決定木- 23 -•

Petal（花弁）の長さが2.5未満ならsetosa• 2.5以上で幅が1.8未満ならversicolor• 2.5以上で幅が1.8以上ならvirginica•

setosa 50個体、versicolor 50
個体、virginica 50個体からなる
全150個体を、本モデルによっておおむね綺麗に分けられている

24
Computer Software Associationof Japan

決定木の学習手順
Petal.Length < 2.5 という基準を選ぶことでsetosa 50 とそれ以外100 を綺麗に分割
できている

学習手順
1. 最も綺麗にデータを分割できる
基準を選ぶ※「情報利得」が最大となる基準

2. データを分割する
3. 終了条件を満たすまで1と2を繰り返す

Petal.Width < 1.8 という基準を選ぶことでversicolorとvirginica をおおむね綺麗に分割できている※終了条件は、木の深さ、終端ノード数、ノードに含まれるデータ数、誤り率などを考慮する

実装• RのrpartやC50など- 24 -

25
Computer Software Associationof Japan

決定木：
情報利得による分割基準の選択- 25 -

26
Computer Software Associationof Japan

エントロピー
エントロピー： 乱雑さ– ノード 𝑁𝑡 のエントロピー𝑛𝐻(𝑁𝑡 ) = − ෍ 𝑝𝑖 log 2 𝑝𝑖
𝑖=1

– 𝑝𝑖 ：ノード𝑁𝑡 におけるクラス𝑖 に属するインスタンスの割合– 𝑛：クラス数
ノード𝑁𝑡

ノード𝑁𝑡 のエントロピー

クラス1: 𝑝1
クラス2: 𝑝2
クラス3: 𝑝3…
クラスn: 𝑝𝑛𝑛

𝐻(𝑁𝑡 ) = − ෍ 𝑝𝑖 log 2 𝑝𝑖
𝑖=1

ただし σ𝑛𝑖=1 𝑝𝑖 = 1- 26 -

Computer Software Association of Japan𝑛

エントロピーの性質（2クラス）
ノード𝑁𝑡

𝐻(𝑁𝑡 ) = − ෍ 𝑝𝑖 log 2 𝑝𝑖
𝑖=1

ノード𝑁𝑡 のエントロピー
クラス1: 𝑝1 = 𝑝
クラス2: 𝑝2 = 1 − 𝑝𝑛=2

𝐻 𝑝 = −𝑝 log 2 𝑝 − 1 − 𝑝 log 2 1 − 𝑝※一方のクラスの割合を𝑝とおいた𝐻 𝑝

エントロピーの性質（2クラス）
• 𝑝=
•

1
1
で𝐻
2
2

= 1.0 （最大値）

データの割合が50:50 のときエント
ロピー最大• 𝑝 → 0 𝑜𝑟 𝑝 → 1 で𝐻 𝑝 → 0• いずれか一方のクラスしかない場
合エントロピーは0

クラスの混在の程度が高いほどエントロピーが大きい- 27 -

Computer Software Association of Japan

エントロピーの性質（nクラス）
ノード𝑁𝑡

ノード𝑁𝑡 のエントロピー

クラス1: 𝑝1
クラス2: 𝑝2
クラス3: 𝑝3…
クラスn: 𝑝𝑛𝑛

𝐻(𝑁𝑡 ) = − ෍ 𝑝𝑖 log 2 𝑝𝑖
𝑖=1

ただし σ𝑛𝑖=1 𝑝𝑖 = 1

エントロピーの性質（nクラス）
1
𝑛• データの割合が均等なとき（𝑝𝑖 = ）、エントロピー最大𝑛1
1
𝐻(𝑁𝑡 ) = − ෍ log 2 = log 2 𝑛𝑛𝑛𝑖=1• いずれか一つのクラスしか含まない場合エントロピーは0クラスの混在の程度が高いほどエントロピーが大きい- 28 -

Computer Software Association of Japan情報利得• 情報利得：分割によるエントロピーの減少量• ある分割𝐷1 によりノード𝑁0 を2つのノード 𝑁1 , 𝑁2 に分割した場合の情報利得

𝐼𝐺(𝐷1 ) = 𝐻 𝑁0 − 𝑝 𝑁1 𝐻 𝑁1 + 𝑝 𝑁2 𝐻 𝑁2
• 𝐻：エントロピー

分割前エントロピー

分割後エントロピー• 𝑝：分割比率（ 𝑝 𝑁1 + 𝑝 𝑁2 = 1 ）𝑁0𝑝(𝑁1 )

𝑁1

𝐻(𝑁1 )

𝐻 𝑁0 : 分割前エントロピー

𝐻(𝑁0 )
分割基準 𝐷1

𝑁2

𝑝(𝑁2 )

𝐻(𝑁2 )- 29 -

𝐼𝐺(𝐷1 ) ∶ 情報利得
＝エントロピーの減少量
𝑝 𝑁1 𝐻 𝑁1 + 𝑝 𝑁2 𝐻(𝑁2 ):分割後エントロピー

Computer Software Association of Japan

ある分割D1による情報利得の計算例
1
1 1
1 1
1
𝐻 𝑁0 = − log 2 − log 2 − log 2 = log 2 3 = 1.584
3
3 3
3 3
3

𝑁0

50
150

𝑁1

setosa: 50
versicolor: 0
virginica: 0
𝐻 𝑁1 = 0

𝐼𝐺 𝐷1 = 𝐻 𝑁0 −setosa: 50
versicolor: 50
virginica: 50
Petal.Length < 2.5

𝑁2

分割D1:
Petal.Length < 2.5

100
150

setosa: 0
versicolor: 50
virginica: 50

1
1 1
1
𝐻 𝑁2 = − log 2 − log 2 = log 2 2 = 1.0
2
2 2
2
50
100
∗ 𝐻 𝑁1 +∗ 𝐻 𝑁2150
150= 1.584 − 0.666 = 0.918 bit

分割前エントロピー- 30 -

情報利得

分割後エントロピー

Computer Software Association of Japan

ある分割D2による情報利得の計算例
1
1 1
1 1
1
𝐻 𝑁0 = − log 2 − log 2 − log 2 = log 2 3 = 1.584
3
3 3
3 3
3

𝑁0

setosa: 50
versicolor: 50
virginica: 50

分割D2:
Sepal.Length < 5.8

Sepal.Length < 5.8
77
150

73
150

𝑁1

𝐻 𝑁1 = −= 1.092

setosa: 49
versicolor: 21
virginica: 3

𝑁2

49
49 21
21 3
3
log 2
− log 2− log 2
73
73 73
73 73
73

setosa: 1
versicolor: 29
virginica: 47

𝐻 𝑁2 = −73
77
𝐼𝐺(𝐷2 ) = 𝐻 𝑁0 −∗ 𝐻 𝑁1 +∗ 𝐻 𝑁2
150
150

1
1 29
29 47
47
log 2
− log 2− log2= 1.046
77
77 77
77 77
77

情報利得
= 1.584 − 1.068 = 0.516bit

分割前エントロピー- 31 -

分割後エントロピー

Computer Software Association of Japan

分割D1と分割D2の情報利得の比較
エントロピー

分割D2による
情報利得 0.516

分割D1による
情報利得 0.918

分割前： 1.584

D2分割後:1.068

D1分割後:0.666

分割D1による情報利得の方が大きいため分割D1を採用

分割方法
分割D1

分割D2

- 32 -

33
Computer Software Associationof Japan

2021/3/24

決定木のメリット
分析結果の解釈や実装が容易
特徴量の正規化・標準化が不要
複数の決定木を組み合わせることで、ランダムフォレストなどの強力なアルゴリズムに発展させることが可能- 33 -

34
Computer Software Associationof Japan

2021/3/24

ランダムフォレスト
ランダムサンプリングされた訓練データによって学習した多数の決定木を使用する方法
学習

1. 学習に用いるデータや特徴量をランダムに抽出する
2. 抽出したデータと特徴量で決定木を生成する
3. 1．と2．を繰り返す

予測– 予測したい事例について、個々の決定木が予測した各クラスへの所属確率を平均し、確率が高いと判断されるクラスを予測結果とする

実装– RのrandomForestパッケージなど- 34 -

Computer Software Association of Japan

演習：教師あり学習（分類）演習ガイド参照
機械学習モデル構築（演習）手順
0. 前処理元データ

1. データ分割

3. 学習：訓練データ（入出力の組）をモデルに与えてパラメータ調整

2. モデル（アルゴリズム）選択

訓練データ

モデル

検証データ

学習済み
モデル

前処理済み
データ

4. 予測：検証データ（入力）を学
習済みモデルに与えて予測出力

演習：Wisconsin乳がんデータセットを利用• 腫瘍細胞の30の特徴量から良性・悪性の診断を行う機械学習モデルを構築• k近傍法か決定木を採用• 必要なら正規化・標準化等の前処理を実施• 全569事例のデータを訓練データ469事例、検証データ100事例に分割• 訓練データでモデルを訓練• 検証データを学習済みモデルに与え、その予測精度を評価- 35 -

予測出力

5. 評価：予測出力と検証データ（出力）を比較して予測精度を評価

Computer Software Association of JapanRとR Studio- 36 -

37
Computer Software Associationof Japan

RとR StudioR– 統計解析・可視化のための言語・開発実行環境– オープンソース・フリーソフトウェアであり、Windows、
MAC、Linux等様々なOSで利用可能– 機械学習のためのライブラリも数多く提供されており、少ないコマンドで簡単にインストール・利用可能
R studio– Rのための統合開発環境– コンソールや高機能なエディタ、描画やコマンド履歴、デバッグ、ワークスペース管理のためのツールなどを備える– クロスプラットフォームであり、各種OSで利用可能- 37 -

38
Computer Software Associationof Japan

R・Rtoolsのインストール
https://cran.r-project.org/ にアクセスし、Download and Install Rから自分のOSを選択– Windowsの場合はbaseとRtools（recommended）をそれぞれダウンロードし、exeファイルを実行してインストール– Rtoolsインストール中に”Add rtools to system PATH”に✓• Rtoolsはソースで配布されているライブラリ等をコンパイルして利用する場面で必要- 38 -

39
Computer Software Associationof Japan

2021/3/24

R Studioのインストールと起動
https://rstudio.com/にアクセスし、DOWNLOADからRStudio Desktop(Free)を選択– Windowsの場合はDOWNLOAD RSTUDIO FOR
WINDOWSからexeファイルをダウンロード・実行してインストールをクリックしてR Studioを起動
プロジェクトの概念：データやRのコードをまとめて管理する- 39 -

Computer Software Association of Japan

R Studio起動後、右上からNew Project
New Project- 40 -

Computer Software Association of JapanNew Directory ⇒ New Project ⇒ 任意のディレクトリ名

任意のディレクトリ名- 41 -

Computer Software Association of Japan

R Studioのペインと概要
SourceペインかConsoleペインにコマンド入力すれば実行できる
ペイン名

ショートカット

概要

SourceCtrl + 1

スクリプトやマークダウンの編集・表示

ConsoleCtrl + 2

Sourceペインに書かれたコマンドの実行。直接コマンドを入力して実行

Terminal

Shift + Alt + T

R studio内でターミナル操作するためのペイン

HelpCtrl + 3関数やパッケージのヘルプ

History

Ctrl + 4

コマンド履歴Files

Ctrl + 5

ワーキングディレクトリにあるファイルを表示

Plots

Ctrl + 6

図の描画

Packages

Ctrl + 7

インストールされているパッケージの表示

Environment

Ctrl + 8

読み込んだデータセットや作成した変数など、現在のワークスペースにある環境を表示- 42 -

Computer Software Association of Japan

左上からR Scriptを選択
R Script- 43 -

Computer Software Association of Japan

ソースペインにコマンド入力• str(iris)でirisのデータ構造確認• 実行はCtrl + Enter (Win)Consoleペインにirisのデータ構造が表示される••

SourceペインかConsoleペインにコマンドを入力すれば実行できるSourceペインでスクリプトとしてまとめておけば保存・再現できる- 44 -

Computer Software Association of Japan

データ読込み・データ構造確認
オブジェクト名の左にある矢印ボタン
でstr()同様データ構造が確認できる

d <- iris でオブジェクトdにiris
データ読み込み- 45 -

Computer Software Association of Japan

データフレーム型データの表示

データフレーム型データの場合行の適当な場所をクリックするとデー
タ全体をソースペインに表示できる

データフレーム：
表形式のデータ構造- 46 -

Computer Software Association of Japan

データ構造：ベクトルx <- 1:5
y <- c(1.2, 2.5, 3.2, 4.9, 5.0)
z <- c("Benign", "Malignant")
x
y
z
ベクトル
• 同じ型のデータを複数まとめたもの• c()を用いて要素を並べるか、 : で数値
範囲指定して作成する• その他のデータ構造の基本となる- 47 -

Computer Software Association of Japan

データ構造：行列

A <- matrix(1:10, nrow = 5, ncol =2)
B <- matrix(c(1.2, 6.1, 3.2, 5.2, 2.4, 2.5,
4.9, 9.9, 1.3, 4.0, 5.0, 0.5),
nrow = 4)A
B
行列• 同じ型のデータからなる二次元配列• matrix()で作成する- 48 -

Computer Software Association of Japan

データ構造：リスト
オブジェクト名の左にある矢印ボタンでもデータ構造確認

l <- list(m = matrix(1:10, nrow = 2), v=1:100, df = iris)
l
l$m
l$v
l$df
str(l)
リスト• 異なる構造のデータを集めたもの• list()で作成する- 49 -

Computer Software Association of Japan

データフレーム

データフレーム• リストの一種• 各列は1つの特徴量、各行は1つの観測値• 特徴量別の統計処理が容易• data.frame()で作成する

sex <- c("F", "F", "M", "M", "M")height <- c(158, 162, 177, 173, 166)weight <- c(51, 55, 72, 57, 64)
medical<- data.frame(SEX = sex,
HEIGHT = height, WEIGHT = weight)
str(medical)
medical$HEIGHT• sex, height, weightベクトルを作成• それらを束ねてデータフレーム作成
medical[,2]• ラベルはSEX, HEIGHT, WEIGHTとした
medical[4,]• 大文字と小文字は区別される
summary(medical)- 50 -

51
Computer Software Associationof Japan

2021/3/24

教師あり学習（分類）のためのデータ準備- 51 -

52
Computer Software Associationof Japan

2021/3/24

R studioで新規プロジェクトとスクリプト作成
プロジェクト名は任意だが一応 wbcd とする– Wisconsin Breast Cancer Diagnosticの意味
プロジェクトを立ち上げたら、新しいスクリプトを作成する「新規プロジェクト作成」「スクリプト作成」の手順は覚えていると思うが、忘れた人は次のページを参照のこと- 52 -

53
Computer Software Associationof Japan

2021/3/24

R Studio起動後、右上からNew Project
New Project- 53 -

Computer Software Association of JapanNew Directory ⇒ New Project ⇒ ディレクトリ名
wbcd

ディレクトリ名
wbcd- 54 -

55
Computer Software Associationof Japan

2021/3/24

左上からR Scriptを選択
R Script- 55 -

Computer Software Association of Japan

kaggleの登録• 機械学習・データサイエンスに関わる人が集まるコミュニティ• 企業等から実データが提供されたうえで賞金付きのコンペ（競技会）も実施される• 提供されている実データを機械学習の学習のために利用可能• https://www.kaggle.com/- 56 -

Computer Software Association of Japan

kaggleの登録

Register

どちらでも好きな方法で登録- 57 -

Computer Software Association of Japan

データのダウンロード
Wisconsin乳がん
診断データセット• https://www.kaggle.com/uciml/breast-cancer-wisconsin-dataのDownloadから圧縮ファイル（.zip）をダウンロード• ダウンロードしたzipファイルを展開する（zipファイルを右クリックして「すべて展開」を選択）• 展開後のフォルダの中に"data.csv"があることを確認- 58 -

Computer Software Association of Japan

データの準備
1. R Studio のConsoleペインでgetwd()して作業ディレクトリを確認

2. 先ほど用意した"data.csv"を作業
ディレクトリに移動

3. R Studio のFilesペインでdata.csvの存在が確認できればOK- 59 -

Computer Software Association of Japan

データの読込みとデータ構造確認

wbcd <- read.csv("data.csv", stringAsFactors =FALSE)
str(wbcd)- 60 -

Computer Software Association of Japan

データの意味569事例、32変数
1) ID, 2) 診断結果（M=悪性、B=良性）, 3-32) 細胞核の10の特徴量各々について平均、標準偏差、最大値
欠損値なし
357 良性、212 悪性• Number of instances: 569• Number of attributes: 32 (ID, diagnosis, 30 real-valued input features)• Attribute information• 1) ID number• 2) Diagnosis (M = malignant, B = benign)• 3-32)Ten real-valued features are computed for each cell nucleus:
•
•
•
•
•
•
•
•
•
•
•

a) radius (mean of distances from center to points on the perimeter)b) texture (standard deviation of gray-scale values)c) perimeterd) areae) smoothness (local variation in radius lengths)f) compactness (perimeter^2 / area - 1.0)g) concavity (severity of concave portions of the contour)h) concave points (number of concave portions of the contour)i) symmetryj) fractal dimension ("coastline approximation" - 1)
The mean, standard error, and "worst" or largest (mean of the three largest values) ofthese features were computed for each image, resulting in 30 features. For instance,
field 3 is Mean Radius, field13 is Radius SE, field 23 is Worst Radius.
• All feature values are recoded with four significant digits.

• Missing attribute values: none
• Class distribution: 357 benign, 212 malignant- 61 -

Computer Software Association of Japan

データ確認と不要な変数の発見
1. 変数の種類が33？おかしい．
クリックして確認

2. 意味のない変数Xが入ってしまっている- 62 -

Computer Software Association of Japan

不要な変数xの削除

wdbc$x <- NULL
str(wdbc)

変数の種類が32となり正しい- 63 -

Computer Software Association of Japan

スクリプトの保存・ワークスペースの保存
FileからSave As…

スクリプトファイル名の拡
張子は .R とする

R 終了時- 64 -

65
Computer Software Associationof Japan

教師あり学習（回帰）- 65 -

Computer Software Association of Japan••••

教師あり学習正解の用意された問題集（教師データ）がある
教師は正解の導き方を詳しく説明してくれない
学習者（コンピュータ）は問題と正解の関係を推測する
これまで見たことの無い新しい類似の問題に対して正解を導けるようになることを目指す• 教師あり学習の概要• 入力とそれに対応する正解出力の組からなる教師データを用いる• 教師データに基づいて入力と出力の関係を表現するモデルを構築する• 新しい入力に対して精度の高い予測出力ができることを目指す• 出力が連続値の場合「回帰」モデル、出力がカテゴリの場合「分類」モデ
ルを構築する• ex. 不動産価格の予測（回帰）、検査結果に基づく陽性判定（分類）- 66 -

67
Computer Software Associationof Japan

回帰（Regression）
教師あり学習入力データから連続値を予測する– ex. 都市の電力消費量や住宅価格など回帰のアルゴリズム– 線形回帰（通常最小二乗法）– Ridge回帰、Lasso回帰 、Elastic Net– SVR(Support Vector Regression)- 67 -

68
Computer Software Associationof Japan

線形回帰
教師あり学習（回帰）- 68 -

Computer Software Association of Japan

線形回帰の概要と例
説明変数の線型結合で目的変数を表現するモデル• 単回帰• 説明変数が1つ• 目的変数 𝑦 ，説明変数 𝑥 として𝑦 = 𝑎𝑥 + 𝑏 と表現される. 𝑎は回帰係数, 𝑏は切片

• 重回帰
• 説明変数が２つ以上• 目的変数 𝑦 , 説明変数 𝑥1 , 𝑥2 , ⋯ , 𝑥𝑑 として𝑦 = 𝑤0 + 𝑤1 𝑥1 + 𝑤2 𝑥2 + ⋯ + 𝑤𝑑 𝑥𝑑と表現される．𝑤1 , 𝑤2 , ⋯ , 𝑤𝑑 は偏回帰係数, 𝑤0 は切片

単回帰の例• R標準データセットcars• 車速(mph)と停止距離(ft)の組50組• 車速を説明変数、停止距離を目的変数として単回帰• 回帰式𝑦 = 3.9 𝑥 − 17.6
• 回帰式は最小二乗法により求まる※実際は、空走距離は車速に比例するが、制動距離は速度の二乗に比例する- 69 -

Computer Software Association of Japan

最小二乗法による回帰係数の導出(1/2)
予測値と実測値の差（残差）の平方和を最小にするよう回帰係数を決定する方法
ex. 単回帰式• データセット 𝑥1 , 𝑦1 , 𝑥2 , 𝑦2 , ⋯ , (𝑥𝑛 , 𝑦𝑛 )に基づき回帰式𝑦 = 𝑎𝑥 + 𝑏 を導出する• 予測値を𝑦ො𝑖 = 𝑎𝑥𝑖 + 𝑏と書くと、残差平方和は以下の式であらわされる𝑛𝑛

𝐸 = ෍ 𝑦ෝ𝑖 − 𝑦𝑖 2 = ෍ 𝑎𝑥𝑖 + 𝑏 − 𝑦𝑖 2
𝑖=1

𝑖=1

𝑦
実測値 𝑦𝑖
予測値 𝑦ෝ𝑖𝑦 = 𝑎𝑥 + 𝑏
残差𝑥𝑖- 70 -𝑥Computer Software Association of Japan

最小二乗法による回帰係数の導出(2/2)
𝑛𝑛

𝐸 = ෍ 𝑦ෝ𝑖 − 𝑦𝑖 2 = ෍ 𝑎𝑥𝑖 + 𝑏 − 𝑦𝑖 2
𝑖=1

𝑖=1

𝐸は𝑎, 𝑏の二変数関数𝐸 𝑎, 𝑏 と見ることができ、下に凸の二次関数となる

𝐸(𝑎, 𝑏)
𝜕𝐸
𝜕𝐸= 0, = 0 で𝐸は最小となるため、
𝜕𝑎
𝜕𝑏

𝜕𝐸
= σ2 𝑎𝑥𝑖 + 𝑏 − 𝑦𝑖 𝑥𝑖 = 0𝜕𝑎
𝜕𝐸= σ2 𝑎𝑥𝑖 + 𝑏 − 𝑦𝑖 = 0
𝜕𝑏

𝑎, 𝑏

1
𝑛

1
𝑛

連立方程式を解くと、𝑥ҧ = σ𝑥𝑖 , 𝑦ത = σ𝑦𝑖 として

𝜕𝐸
𝜕𝐸
=
0,
= 0 なる (𝑎, 𝑏)
𝜕𝑎
𝜕𝑏

1 𝑛
σ𝑖=1(𝑥𝑖 − 𝑥)(𝑦ҧ 𝑖 − 𝑦)
ത
𝜎𝑥𝑦
𝑎=𝑛
= 2,
1 𝑛
𝜎𝑥
σ 𝑥 2 − 𝑥ҧ 2
𝑛 𝑖=1 𝑖b = yത − 𝑎𝑥ҧ- 71 -

𝜎𝑥2 : 𝑥の分散
𝜎𝑥𝑦 : 𝑥と𝑦の共分散Computer Software Association of Japan

決定係数
回帰式が全体の変動のうちどの程度を説明できるか示す係数
𝑦𝑦 = 𝑎𝑥 + 𝑏

実測値 𝑦𝑖
予測値

𝑦ෝ𝑖

平均値

𝑦ത

残
差 全

変
回 動
帰

𝑥ҧ

𝑥𝑖

𝑥

• 全変動平方和 = 回帰変動平方和 + 残差変動平方和

σ 𝑦𝑖 − 𝑦ത 2 = σ 𝑦ෝ𝑖 − 𝑦ത 2 + σ 𝑦𝑖 − 𝑦ෞ𝑖 2• 決定係数＝回帰変動平方和／全変動平方和

𝑅2 =σ 𝑦ෝ𝑖 − 𝑦ത 2
σ 𝑦𝑖 − 𝑦ෝ𝑖 2=1−
σ 𝑦𝑖 − 𝑦ത 2
σ 𝑦𝑖 − 𝑦ത 2
- 72 -

どの残差も0ならば決定係数は1になる73
Computer Software Associationof Japan重回帰の場合の最小二乗法による回帰係数の導出
(1/3)
重回帰式は
𝑦 = 𝑤0 + 𝑤1 𝑥1 + 𝑤2 𝑥2 + ⋯ + 𝑤𝑑 𝑥𝑑𝒙 = 𝑥1 , 𝑥2 , ⋯ , 𝑥𝑑 𝑇 は入力変数、𝑤0 , 𝑤1 , ⋯ , 𝑤𝑑 はパラメータ
෥ = 1, 𝑥1 , 𝑥2 , ⋯ , 𝑥𝑑 𝑇 , 𝒘 = 𝑤0 , 𝑤1 , ⋯ , 𝑤𝑑 𝑇 と定義す
ここで 𝒙
ると
重回帰式は
෥
𝑦 = 𝒘𝑇 𝒙とあらわせる- 73 -

74
Computer Software Associationof Japan重回帰の場合の最小二乗法による回帰係数の導出
(2/3)
重回帰式は

𝑦 = 𝒘𝑇 ෥
𝒙

データ行列
𝑿=

𝑥11 𝑥12⋮⋮𝑥𝑛1 𝑥𝑛2

⋯ 𝑥1𝑑
⋱
⋮
⋯ 𝑥𝑛𝑑

෩=
𝑿

1 𝑥11 𝑥12⋮⋮⋮1 𝑥𝑛1 𝑥𝑛2

⋯ 𝑥1𝑑
⋱
⋮
⋯ 𝑥𝑛𝑑

をもとに

を定義すると、各サンプル行（1~𝑛）に対して回帰式をあてはめた結果は

𝑤0 + 𝑤1 𝑥11 +𝑤0 + 𝑤1 𝑥21 +⋮𝑤0 + 𝑤1 𝑥𝑛1 +⋯ + 𝑤𝑑 𝑥1𝑑… + 𝑤𝑑 𝑥2𝑑⋮⋮⋯ + 𝑤𝑑 𝑥𝑛𝑑とあらわすことができる- 74 -

=

𝒘𝑇 ෥
𝒙1
𝒘𝑇 ෥
𝒙2
⋮
𝑇
𝒘 ෥
𝒙𝑛

෩𝒘
=𝑿

Computer Software Association of Japan

重回帰の場合の最小二乗法による回帰係数の導出(3/3)
重回帰式を𝒘の関数とみて
෩𝒘
ෝ 𝒘 =𝑿𝒚
目的変数𝑦との差の二乗和を目的関数として、これを最小にするような𝒘 を求める𝟐𝐓෩෩෩𝒘
𝐸 𝒘 = 𝒚 − 𝑿𝒘 = 𝒚 − 𝑿𝒘 𝒚 − 𝑿
෩ 𝑻 𝒚 − 𝒚𝑻 𝑿
෩ 𝒘 + 𝒘𝑻 𝑿
෩ 𝑻𝑿
෩𝒘= 𝒚𝑻 𝒚 − 𝒘 𝑻 𝑿
目的関数𝐸(𝒘)の勾配を求めると
෩ 𝑇 𝒚 + 2𝑿
෩𝑇𝑿෩𝒘
𝛻𝐸 𝒘 = −2𝑿
これを = 0とおくことで෩𝑇𝒚 = 𝑿
෩𝑇𝑿
෩𝒘
𝑿
よって
−1 𝑇
𝑇
෩
෩
෩ 𝒚
𝒘= 𝑿 𝑿 𝑿- 75 -

データ行列と目的変数ベクトルからパラメータベクトルが決まる

76
Computer Software Associationof Japan線型回帰の処理手順と実装
処理手順

– 学習
• 訓練データセット（特徴量・目的変数）を与えると、残差平方和を最小化する回帰式が得られる– 予測• 回帰式にテストデータセットの特徴量を与えると目的変数の予測値が得られる
実装– Rのstatsパッケージに含まれるlm実装など- 76 -

77
Computer Software Associationof Japan

Ridge回帰・Lasso回帰
Ridge回帰– 最小にすべき目的関数にペナルティ𝜆 𝒘 2 (L2ノルム)を付
加𝟐෩𝐸 𝒘 = 𝒚 − 𝑿𝒘 + 𝜆 𝒘 2– 係数があまりに大きくならないようにしている
Lasso回帰– 最小にすべき目的関数にペナルティ 𝜆 𝑤 1 （L1ノルム）を付加
𝟐
෩
𝐸 𝒘 = 𝒚 − 𝑿𝒘 + 𝜆 𝑤 1– ここで 𝑤 1 = σ𝑑𝑖=1 𝑤𝑖– 係数があまりに大きくならないようにしている- 77 -

78
Computer Software Associationof Japan

Ridge回帰・Lasso回帰
Ridge回帰– 最小にすべき目的関数にペナルティ𝜆 𝒘 2 (L2ノルム)を付
加𝟐෩𝐸 𝒘 = 𝒚 − 𝑿𝒘 + 𝜆 𝒘 2– 係数があまりに大きくならないようにしている
Lasso回帰– 最小にすべき目的関数にペナルティ 𝜆 𝑤 1 （L1ノルム）を付加
𝟐
෩
𝐸 𝒘 = 𝒚 − 𝑿𝒘 + 𝜆 𝑤 1– ここで 𝑤 1 = σ𝑑𝑖=1 𝑤𝑖– 係数があまりに大きくならないようにしている- 78 -

Computer Software Association of Japan

線形回帰とRidge回帰の比較▼Ridgeは係数小さい●Linearはどれも係数大きい• Boston house prices dataset• 目的変数：ボストン近郊の住宅地の住宅価格の中央値• 説明変数：犯罪率、固定資産税率、生徒教師比率等13の特徴
量と、13から2つの特徴量を重複を許して選んだ組み合わせ91の合計104の特徴量• サンプル数506• 379を訓練データにする• 127をテストデータにする• 訓練データを用いて104の説明(Linear) Training set score: 0.95
(Linear) Test set score: 0.61
(Ridge) Training set score: 0.89
(Ridge) Test set score: 0.75

変数の重みを求めて、テスト
データで推定する

Ridgeの方がテストのscoreが高くなる

Ridge回帰は係数の大きさにペナルティを与えることで過剰適合を防ぐ※データ出典：A. C. Muller et al. mglearn.datasets- 79 -

80
Computer Software Associationof Japan

SVM
教師あり学習（分類／回帰）- 80 -

81
Computer Software Associationof Japan

サポートベクターマシン（SVM）
教師あり学習のひとつ– 分類もしくは回帰に利用可能

SVMの種類– ハードマージンSVM• 各クラスのデータが分類境界からなるべく離れるように分類境界を定める– ソフトマージンSVM• 線形分離できない場合に、スラック変数𝝃を導入して、分類境界で分離できない
データを許容する– カーネルSVM• カーネル法によって入力データをより高次元の特徴空間に写像し、特徴空間上で線形分離することで、実空間での非線形分離を可能にする– SV回帰• SVMを回帰問題へ応用したもの

SVMの実装– Rのkernlabパッケージなどで実装されている- 81 -

Computer Software Association of Japan

ハードマージンSVM
収束前

収束後

マージン小

マージン大

それぞれのクラスのデータが分類境界からなるべく離れる（マージンを最大化する）ように分類境界を定める
サポートベクトル：分類境界に最も近いサンプル
マージン：サポートベクトルと分類境界の距離※データ出典：A. C. Muller et al. mglearn.datasetsを改変- 82 -

Computer Software Association of Japan

マージン最大化による分類境界の導出(1/3)
サポートベクトル𝒙+

𝐾1
分類境界

𝒘𝑇 𝒙 + 𝑏 = 0
𝒘𝑇 𝒙 𝒊 + 𝑏 > 0
サポートベクトル𝒙−
𝐾2

𝐾1

𝑡𝑖 = ቊ
𝐾2

1 (𝒙𝑖 ∈ 𝐾1 )
−1 (𝒙𝑖 ∈ 𝐾2 )𝒘𝑇 𝒙 𝒊 + 𝑏 < 0なるラベル変数𝑡𝑖 を導入すると，

𝑡𝑖 (𝒘𝑇 𝒙𝑖 + 𝑏)
任意の点𝒙𝑖 と分類境界平面との距離は|𝒘|と表される．これより，マージン最大化は

𝑡𝑖 (𝒘𝑇 𝒙𝑖 + 𝑏)
Maximize min
𝑖
𝒘,𝑏
|𝒘|
※データ出典：A. C. Muller et al. mglearn.datasetsを改変- 83 -

Computer Software Association of Japan

マージン最大化による分類境界の導出(2/3)
𝑡𝑖 (𝒘𝑇 𝒙𝑖 + 𝑏)
1
Maximize min= Maximize
min 𝑡𝑖 (𝒘𝑇 𝒙𝑖 + 𝑏)
𝑖
𝒘,𝑏
𝒘,𝑏
|𝒘|
|𝒘| 𝑖
今、 min 𝑡𝑖 (𝒘𝑇 𝒙𝑖 + 𝑏) = 1 の場合だけ考えればよい．これより最適化の式は，𝑖1Maximize𝒘,𝑏|𝒘|

Subject to 𝑡𝑖 (𝒘𝑇 𝒙𝒊 + 𝑏) ≥ 1 (𝑖 = 1,2, ⋯ , 𝑛)さらに簡単化して，

Minimize𝒘,𝑏1
𝒘 2 Subject to 𝑡𝑖 (𝒘𝑇 𝒙𝒊 + 𝑏) ≥ 1 (𝑖 = 1,2, ⋯ , 𝑛)2

ラグランジュ未定乗数𝒂を導入して以下のラグランジュ関数を定義する
𝑛1
𝐿 𝑏, 𝒘, 𝒂 = 𝒘 2 − ෍ 𝑎𝑖 {𝑡𝑖 𝒃 + 𝒘𝑻 𝒙𝒊 − 1}2
𝑖=1

𝐿を𝑏, 𝑤で偏微分して0とおいたものを用いて𝐿を変形すると以下のような𝒂だけの関数になる
𝑛

𝑛

𝑛

𝑖=1

𝑖=1 𝑗=1

1
𝐿 𝒂 = ෍ 𝑎𝑖 − ෍ ෍ 𝑎𝑖 𝑎𝑗 𝑡𝑖 𝑡𝑗 𝒙𝑇𝑖 𝒙𝑗
2- 84 -

85
Computer Software Associationof Japan

マージン最大化による分類境界の導出（3/3）
主問題であったマージン最大化問題は双対問題である以下の二次計画問題に帰着される
𝑛

𝑛

𝑛

𝑖=1

𝑖=1 𝑗=1

1
Maximize 𝐿 𝒂 = ෍ 𝑎𝑖 − ෍ ෍ 𝑎𝑖 𝑎𝑗 𝑡𝑖 𝑡𝑗 𝒙𝑇𝑖 𝒙𝑗
2𝑛Subject to ෍ 𝑎𝑖 𝑡𝑖 = 0
𝑖=1

𝑎𝑖 ≥ 0𝑎𝑖 𝑡𝑖 𝑏 + 𝒘𝑇 𝒙𝑖 − 1 = 0

SVMのライブラリ内部では、このような双対問題を解くような実装がなされている- 85 -

Computer Software Association of Japan

ソフトマージンSVM• 線形分離できない場合に、スラック変数𝝃を導入して、分離境界で分離できないデータを許容する方法

𝒘𝑇 𝒙 + 𝑏 = 1

𝜉𝑖 = 0𝒙𝛼
𝜉𝛽𝒙𝛾

𝒘𝑇 𝒙 + 𝑏 = 0
𝒘𝑇 𝒙 + 𝑏 = −1𝜉𝛼𝒙𝛽𝜉𝑖 = 0𝜉𝛾𝑛1Minimize𝒘 2 + 𝐶 ෍ 𝜉𝑖𝒘,𝑏,𝝃2

Subject to 𝑡𝑖 𝒘𝑇 𝒙𝒊 + 𝑏 ≥ 1 − 𝜉𝑖 (𝑖 = 1,2, ⋯ , 𝑛)𝑖=1

C:小さい⇒大きい𝜉を許容
C:→ ∞ ⇒ 𝜉 = 0のみ許容（ハードマージン）

𝜉𝑖 ≥ 0 (𝑖 = 1,2, ⋯ , 𝑛)
- 86 -

Computer Software Association of JapanSV回帰• SVMの回帰問題への応用(𝒙𝑖 , 𝑦𝑖 )𝑦𝑖

𝒘𝑇 𝒙 + 𝑏 = 0

𝑦ෝ𝑖

𝒙𝑖
𝑛

1
Minimize𝒘 2 + 𝐶 ෍ max{ 𝑦𝑖 − 𝒘𝑇 𝒙𝑖 + 𝑏 − 𝜖, 0}
𝒘,𝑏
2
𝑖=1

𝜖 > 0 ∶ 不感度係数
𝐶 > 0 ： 正則化係数

不感度：残差が𝜖以下の時は損失0
正則化：小さい ⇒ 残差がもたらす損失に対して寛容※カーネル法を用いれば非線形回帰も可能- 87 -

Computer Software Association of Japan

非線形SVM
入力データをより高次元の特徴空間に写像し、特徴空間上で線形分離することで、実空間での非線形分離を可能にする方法

𝒘𝑇 𝜙(𝒙) + 𝑏 = 0

𝑛

𝑛

𝑛

𝑖=1

𝑖=1 𝑗=1

1
Maximize 𝐿 𝒂 = ෍ 𝑎𝑖 − ෍ ෍ 𝑎𝑖 𝑎𝑗 𝑡𝑖 𝑡𝑗 𝜙 𝒙𝑖 𝑇 𝜙(𝒙𝑗 )2𝑛Subject to ෍ 𝑎𝑖 𝑡𝑖 = 0
𝑖=1- 88 -𝑎𝑖 ≥ 089Computer Software Associationof Japanカーネル法
𝜙 𝒙𝑖 𝑇 𝜙 𝒙𝑗 = 𝐾(𝒙𝑖 , 𝒙𝑗 ) とおくと、目的関数は次のようになる
𝑛

𝑛

𝑛

𝑖=1

𝑖=1 𝑗=1

1
𝐿 𝒂 = ෍ 𝑎𝑖 − ෍ ෍ 𝑎𝑖 𝑎𝑗 𝑡𝑖 𝑡𝑗 𝐾(𝒙𝑖 , 𝒙𝑗 )2
ここで𝐾はカーネル関数と呼ばれる

カーネル関数を使うことで、特徴空間における内積𝜙 𝒙𝑖 𝑇 𝜙 𝒙𝑗 を明示的に計算せずに、𝐾だけの評価で問題を解くことができる
特徴空間中の座標を計算しないことで計算量を抑えることができる
カーネル関数の一例– RBFカーネル（Radial Basis Function kernel）– 実データ 𝒙𝒊 と 𝒙𝑗 の特徴空間における内積
𝐾 𝒙𝑖 , 𝒙𝑗

𝒙𝑖 − 𝒙𝑗= exp −
2𝜎 2- 89 -

2

Computer Software Association of Japan

演習：教師あり学習（回帰）演習ガイド参照
機械学習モデル構築（演習）手順
0. 前処理元データ

1. データ分割

2. モデル（アルゴリズム）選択

3. 学習：訓練データ（入出力の組）をモデルに与えてパラメータ調整

訓練データ

モデル

検証データ

学習済み
モデル

前処理済み
データ

4. 予測：検証データ（入力）を学
習済みモデルに与えて予測出力
演習：Wine Qualityデータセットを利用• 11種類の科学的特性に基づいて品質スコアを推定する機械学習モデルを構築• 線形重回帰かSVMを採用• 必要なら正規化・標準化等の前処理を実施• 白ワイン4,898事例のデータを訓練データ3,750事例、検証データ1,148事例に分割• 訓練データでモデルを訓練• 検証データを学習済みモデルに与え、その予測精度を評価 - 90 -

予測出力5. 評価：予測出力と検証データ（出力）を比較して予測精度を評価

1
Computer Software Associationof Japan

第４章

教師なし学習（次元削減）

- 1-

2
Computer Software Associationof Japan

教師なし学習
出力に関するデータ（正解）が与えられていない
クラスタリングか次元圧縮を目的とする– クラスタリング• 入力データに基づいてサンプルをいくつかのクラスタに分類する– 次元圧縮• 多種類の入力を少数種類の入力にまとめる
ex. 顧客の属性に基づいて顧客をいくつかのクラスタに分類する（クラスタリング）、学生の複数科目の試験成績データに基づいて学生の能力を説明できる少数の変数を作る（次元圧縮）

- 2-

3
Computer Software Associationof Japan

主成分分析（PCA）
教師なし学習（次元圧縮）- 3-

Computer Software Association of Japan

主成分分析の概要と事例
主成分分析：データの特徴を表現できる少数の合成変数を見出す手法

例：Breast cancer wisconsin(diagnostic) dataset• 腫瘍細胞569例のそれぞれに関する直径や滑らかさ、対称性等30の特徴量の測定値からなるデータセット•

良性（benign）357例、悪性（malignant）212例•

30次元特徴空間は描画できない•

主成分分析を行い30の特徴量を2つの主成分に縮約して散布図を描
画

多次元特徴量を次元縮約して可視化が可能※データ出典：sklearn.datasets.load_breast_cancer()- 4-Computer Software Association of Japan

主成分分析事例
元の特徴量２つで描いた散布図PC1とPC2で描いた散布図

例：Iris Species Dataset• 3種類のアヤメsetosa 50、versicolor 50、virginica 50の各個体に関するSepal.Width, Sepal.Length,
Petal.Width, Petal.Lengthの4つの特徴量の測定値からなるデータセット• 任意の2変数で散布図を描画するが（左）、どの変数も3種類のアヤメを分離できるような変数ではない• 主成分分析を行い、第1主成分（PC1）と第2主成分（PC2）の2変数で散布図を描画（右）すると、PC1はそれだけでも3種類のアヤメを分離できるような変数になっている

識別しやすい特徴の抽出- 5-

Computer Software Association of Japan

主成分の見つけ方 -分散最大基準Feature 2

PC1

PC2

Feature 1

1. データの分散が最大となる方向を見つけ第1主成分とする
2. それに直交する方向で分散が最大となる方向を第2主成分とする
3. 次元数に至るまで繰り返す• 特徴量が元々２つの場合、上図の黄色楕円のようにデータが分布している場合、長軸方向が第1主成分、それに直交する方向が第2主成分となり完了• 特徴量がd個の場合、d次元特徴空間において同様のことを行う- 6-

Computer Software Association of Japan

主成分分析のアルゴリズムと実装• データ行列に基づいて共分散行列Sを求める• Sの固有値問題を解く
分散最大化問題は共分散行列の固有値問題に帰着するため、• S𝒗 = 𝜆𝒗
固有値問題を解けばよい• 𝜆: 固有値、𝒗: 固有ベクトル• 固有値λは固有ベクトル𝒗方向に射影したデータの分散となっている• 対応する固有値の大きい固有ベクトルから順に第1主成分、第2主成分…となる• 実装• Rのprcompパッケージなどで利用可能- 7-

Computer Software Association of Japan

共分散行列の固有値問題(1/2)
分散最大化問題は共分散行列の固有値問題に帰着する• 簡単のため1次元への射影を考える。射影先の単位ベクトルを𝒘1 とすると
1𝑛

𝒘1𝑇 𝒘1 = 1である。データ 𝒙𝑖 𝑛𝑖=1 の平均を ഥ
𝒙 = σ𝑛𝑖=1 𝒙𝑖 とする。

• データ点𝒙𝑖 の𝒘1 方向への射影は内積𝒘1 ⋅ 𝒙𝑖 = 𝒘1𝑇 𝒙𝑖 = 𝒙𝑇
𝑖 𝒘1 で表されることをふまえ、 𝒘1𝑇 𝒙𝑖 𝑛𝑖=1 の平均を計算すると
𝑛
𝑛
1
1 𝑇
𝑇
ഥ
෍ 𝒘1 𝒙𝑖 = 𝒘1 ෍ 𝒙𝑖 = 𝒘1𝑇 𝒙𝑛𝑛𝑖=1• したがって 𝒘1𝑇 𝒙𝑖 𝑛𝑖=1 の分散は
𝑛

𝑖=1

𝑛

1
1
𝑇
𝑇 2
ഥ { 𝒙𝑖 − 𝒙ഥ 𝑇 𝒘1 }෍ 𝒘1 𝒙𝑖 − 𝒘1 ഥ
𝒙 = ෍ 𝒘1𝑇 𝒙𝑖 − 𝒙
𝑛
𝑛
𝑖=1

= 𝒘1𝑇

𝑛

𝑖=1

1
ഥ 𝒙𝑖 − 𝒙ഥ 𝑇 𝒘1
෍ 𝒙𝑖 − 𝒙
𝑛
𝑖=1

- 8-

Computer Software Association of Japan

共分散行列の固有値問題（2/2）
1

ここで、 σ𝑛𝑖=1 𝒙𝑖 − ഥ
𝒙 𝒙𝑖 − ഥ𝒙 𝑇 は𝒙𝑖 の共分散行列であり、Sとおく。Sは(𝑑, 𝑑)𝑛行列で、解くべき問題は次の最適化問題になる
𝒘1𝑇 𝒘 = 1の条件の下 𝒘1𝑇 S𝒘1 を最大化する
ラグランジュ未定乗数法で解くため以下の関数𝜙を考える
𝜙 𝒘1 , 𝜆1 = 𝒘1𝑇 S𝒘1 − 𝜆1 (𝒘1𝑇 𝒘1 − 1)
𝜕𝜙
= 2S𝒘1 − 2𝜆1 𝒘1 = 0 より
𝜕𝒘1

S𝒘1 = 𝜆1 𝒘1
𝜆1 はSの固有値である。また、このとき𝒘1𝑇 S𝒘1 = 𝒘1𝑇 𝜆1 𝒘1 = 𝜆1であるため、分散は固有値に一致し、分散最大化問題は最大固有値を求める問題に帰着した- 9-

Computer Software Association of Japanpca <- prcomp(iris[ ,1:4])
Rの主成分分析で得られるデータの構造 を例として
特徴量 (d)主成分 (d)
PC1

PC2

PC3

Sepal. Sepal.
Length Width

PC4

Petal. Petal.
Length Width

主成分 (d)
PC1

PC3

PC4

ഥ 𝑇
𝒙𝑖 − 𝒙

ഥ 𝑇 𝒘1𝒙𝑖 − 𝒙

特
徴
量
d
事
例
数
n

PC2

事
例
数
n

pca$x
主成分スコア

pca$rotation
負荷量行列
scale(iris[,1:4])
中心化後の
データ行列

pca$sdev

pca$scale

主成分毎の標準偏差（各固有値の平方根）

scale.=T のとき
特徴量毎の標準偏差

第1固有値の平方根

𝒘1- 10 -

第1固有ベクトル

主成分スコアpca$xで散布図を描けば可視化できるComputer Software Association of Japan

累積寄与率等
summary(pca)で以下の情報が得られる• Standard deviation• 各主成分の標準偏差• Proportion of Variance（寄与率）• 各主成分の固有値（分散）をその総和でわったもの• Cumulative Proportion（累積寄与率）• 第1主成分から当該主成分までの寄与率の和
累積寄与率から、どの主成分まで採用すれば全体の分散を十分に説明できるか判断する- 11 -

12
Computer Software Associationof Japan

教師なし学習（次元削減）- 12 -

13
Computer Software Associationof Japan

教師なし学習
出力に関するデータ（正解）が与えられていない
クラスタリングか次元圧縮を目的とする– クラスタリング• 入力データに基づいてサンプルをいくつかのクラスタに分類する– 次元圧縮• 多種類の入力を少数種類の入力にまとめる
ex. 顧客の属性に基づいて顧客をいくつかのクラスタに分類する（クラスタリング）、学生の複数科目の試験成績データに基づいて学生の能力を説明できる少数の変数を作る（次元圧縮）- 13 -

14
Computer Software Associationof Japan

主成分分析（PCA）
教師なし学習（次元圧縮）- 14 -

Computer Software Association of Japan

主成分分析の概要と事例
主成分分析：データの特徴を表現できる少数の合成変数を見出す手法

例：Breast cancer wisconsin(diagnostic) dataset• 腫瘍細胞569例のそれぞれに関する直径や滑らかさ、対称性等30の特徴量の測定値からなるデータセット•

良性（benign）357例、悪性（malignant）212例•

30次元特徴空間は描画できない•

主成分分析を行い30の特徴量を2つの主成分に縮約して散布図を描
画

多次元特徴量を次元縮約して可視化が可能※データ出典：sklearn.datasets.load_breast_cancer()- 15 -

Computer Software Association of Japan

主成分分析事例
元の特徴量２つで描いた散布図PC1とPC2で描いた散布図

例：Iris Species Dataset• 3種類のアヤメsetosa 50、versicolor 50、virginica 50の各個体に関するSepal.Width, Sepal.Length,
Petal.Width, Petal.Lengthの4つの特徴量の測定値からなるデータセット• 任意の2変数で散布図を描画するが（左）、どの変数も3種類のアヤメを分離できるような変数ではない• 主成分分析を行い、第1主成分（PC1）と第2主成分（PC2）の2変数で散布図を描画（右）すると、PC1はそれだけでも3種類のアヤメを分離できるような変数になっている

識別しやすい特徴の抽出- 16 -

Computer Software Association of Japan

主成分の見つけ方 -分散最大基準Feature 2

PC1

PC2

Feature 1

1. データの分散が最大となる方向を見つけ第1主成分とする
2. それに直交する方向で分散が最大となる方向を第2主成分とする
3. 次元数に至るまで繰り返す• 特徴量が元々２つの場合、上図の黄色楕円のようにデータが分布している場合、長軸方向が第1主成分、それに直交する方向が第2主成分となり完了• 特徴量がn個の場合、n次元特徴空間において同様のことを行う- 17 -

Computer Software Association of Japan

主成分分析のアルゴリズムと実装• データ行列に基づいて共分散行列Sを求める• Sの固有値問題を解く
分散最大化問題は共分散行列の固有値問題に帰着するため、• S𝒗 = 𝜆𝒗
固有値問題を解けばよい• 𝜆: 固有値、𝒗: 固有ベクトル• 固有値λは固有ベクトル𝒗方向に射影したデータの分散となっている• 対応する固有値の大きい固有ベクトルから順に第1主成分、第2主成分…となる• 実装• Rのprcompパッケージなどで利用可能- 18 -

Computer Software Association of Japan

共分散行列の固有値問題(1/2)
分散最大化問題は共分散行列の固有値問題に帰着する• 簡単のため1次元への射影を考える。射影先の単位ベクトルを𝒘1 とすると
1

ഥ = σ𝑛𝑖=1 𝒙𝑖 とする。
𝒘1𝑇 𝒘1 = 1である。データ 𝒙𝑖 𝑛𝑖=1 の平均を 𝒙𝑛• データ点𝒙𝑖 の𝒘1 方向への射影は内積𝒘1 ⋅ 𝒙𝑖 = 𝒘1𝑇 𝒙𝑖 = 𝒙𝑇
𝑖 𝒘1 で表されること𝑛𝑇をふまえ、 𝒘1 𝒙𝑖 𝑖=1 の平均を計算すると
𝑛
𝑛
1
1 𝑇
𝑇
෍ 𝒘1 𝒙𝑖 = 𝒘1 ෍ 𝒙𝑖 = 𝒘1𝑇 ഥ
𝒙
𝑛
𝑛
𝑖=1
𝑖=1
𝑛
𝑇
• したがって 𝒘1 𝒙𝑖 𝑖=1 の分散は
𝑛
𝑛
1
1
2
෍ 𝒘1𝑇 𝒙𝑖 − 𝒘1𝑇 ഥ
𝒙 = ෍ 𝒘1𝑇 𝒙𝑖 − ഥ
𝒙
𝑛
𝑛
𝑖=1
𝑖=1
𝑛

= 𝒘1𝑇

1
෍ 𝒙𝑖 − ഥ𝒙 𝒙𝑖 − ഥ𝒙 𝑇 𝒘1𝑛𝑖=1- 19 -{ 𝒙𝑖 − ഥ𝒙 𝑇 𝒘1 }Computer Software Association of Japan

共分散行列の固有値問題（2/2）
1

ここで、 σ𝑛𝑖=1 𝒙𝑖 − ഥ
𝒙 𝒙𝑖 − ഥ𝒙 𝑇 は𝒙𝑖 の共分散行列であり、Sとおく。Sは(𝑑, 𝑑)𝑛行列で、解くべき問題は次の最適化問題になる
𝒘1𝑇 𝒘 = 1の条件の下 𝒘1𝑇 S𝒘1 を最大化する
ラグランジュ未定乗数法で解くため以下の関数𝜙を考える
𝜙 𝒘1 , 𝜆1 =1 𝑇
𝒘1 S𝒘1 − 𝜆1 (𝒘1𝑇 𝒘1 − 1)2

𝜕𝜙
= S𝒘1 − 𝜆1 𝒘1 = 0 より
𝜕𝒘1

S𝒘1 = 𝜆1 𝒘1
𝜆1 はSの固有値である。また、このとき𝒘1𝑇 S𝒘1 = 𝒘1𝑇 𝜆1 𝒘1 = 𝜆1であるため、分散は固有値に一致し、分散最大化問題は最大固有値を求める問題に帰着した- 20 -

Computer Software Association of Japanpca <- prcomp(iris[ ,1:4])
Rの主成分分析で得られるデータの構造 を例として
特徴量 (d)主成分 (d)
PC1

PC2

PC3

Sepal. Sepal.
Length Width

PC4

Petal. Petal.
Length Width

主成分 (d)
PC1

PC3

PC4

ഥ 𝑇
𝒙𝑖 − 𝒙

ഥ 𝑇 𝒘1𝒙𝑖 − 𝒙

特
徴
量
d
事
例
数
n

PC2

事
例
数
n

pca$x
主成分スコア

pca$rotation
負荷量行列
scale(iris[,1:4])
中心化後の
データ行列

pca$sdev

pca$scale

主成分毎の標準偏差（各固有値の平方根）

scale.=T のとき
特徴量毎の標準偏差

第1固有値の平方根

𝒘1- 21 -

第1固有ベクトル

主成分スコアpca$xで散布図を描けば可視化できるComputer Software Association of Japan

累積寄与率等
summary(pca)で以下の情報が得られる• Standard deviation• 各主成分の標準偏差• Proportion of Variance（寄与率）• 各主成分の固有値（分散）をその総和でわったもの• Cumulative Proportion（累積寄与率）• 第1主成分から当該主成分までの寄与率の和
累積寄与率から、どの主成分まで採用すれば全体の分散を十分に説明できるか判断する- 22 -

23
Computer Software Associationof Japan

教師なし学習（クラスタリング）- 23 -

24
Computer Software Associationof Japan

クラスタリング（Clustering）
教師なし学習
データを類似性の高いグループに分ける– ex. 顧客を収入や借入でグループに分ける，学生を成績や出席率によってグループに分ける等
クラスタリングのアルゴリズム– k-平均法– 自己組織化マップ- 24 -

25
Computer Software Associationof Japank-平均法の概要と事例
教師なし学習特徴空間において距離が近いデータを同じクラスタとみなし、k個のクラスタを見出す手法- 25 -

Computer Software Association of Japank-平均法のアルゴリズム(1/2)
12Feature 2

Feature 2

Feature 1

Feature 1

2. データ点毎に、クラスタ中心との距離を求め最も近いクラスタに割り振る

1. k個の点を訓練データセットから無作為に選ぶ（初期クラスタ中心）

3

4

Feature 2

出典：Brett Lantz: 「Rによる機械学習」
翔泳社（2017）を基に鈴木作成

Feature 2

Feature 1

Feature 1

3. クラスタ毎に、その時点で含まれる点から重心を求め、新たなクラスタ中心とする

4. データ点毎に新たなクラスタ中心との距離を求
め改めて割り振る- 26 -

Computer Software Association of Japank-平均法のアルゴリズム(2/2)
5

出典：Brett Lantz: 「Rによる機械学習」
翔泳社（2017）を基に鈴木作成

6
Feature 2

Feature 2

Feature 1

Feature 1

5. クラスタ毎に、その時点で含まれる点から重心を求め、新たなクラスタ中心とする

7

6. データ点毎に、クラスタ中心との距離を求め最も近いクラスタに割り振る

8

Feature 2

Feature 2

Feature 1

Feature 1

7. クラスタ毎に、その時点で含まれる点から重心を求め、新たなクラスタ中心とする

8.新たな割り振りが生じないため終了- 27 -

28
Computer Software Associationof Japank-平均法のアルゴリズム
1. クラスタ中心の初期設定– クラスタの中心となるk個の点を訓練データセットから無作為に選んで決める2. データ点を最も近いクラスタへ割り振り– 各データ点について、クラスタ中心との距離を計算し、最も近いクラスタ中心を持つクラスタに割り振る

3. クラスタ中心の更新– クラスタ毎に、その時点で当該クラスタに含まれるすべての点か
ら重心を求め、新たなクラスタ中心とする

4. Step.2とStep.3の繰り返し– クラスタ中心の更新にともない、所属クラスタが変わるデータ点が現れうる。Step.2 で各データ点について、新たなクラスタ中
心との距離を計算し、最も近いクラスタへ改めて割り振る。割り振りに変化がない場合終了する- 28 -

29
Computer Software Associationof Japank-平均法適用上の注意(1/2)
初期クラスタ中心を無作為に選ぶため、結果が異なることがある– 特徴空間全体から無作為な点を選ぶ方法、初期中心を選ばずにいきなり各
インスタンスにクラスタを割りあてる方法などもあるが、各方法に依存したバイアスがある
距離関数を用いるため、事前にデータの正規化や標準化が必要である– ユークリッド距離を用いることが多いが、マンハッタン距離やミンコフス
キー距離を用いることもある
クラスタ数kは分析者が決める必要がある– いくつに分けるのが自然か、いくつに分けたいかで決める– データに関する事前知識が無く目安が欲しい場合は𝑘 =𝑛とする方法もあ2る– 𝑘を増やしながらクラスタリングを試行し、グループ内の同質性の増加が鈍くなる𝑘を採用する方法（elbow法）もあるが計算量過多- 29 -

Computer Software Association of Japank-平均法適用上の注意(2/2)
適用可能なデータ（丸い形状）

適用失敗するデータ（複雑な形状）• 各データ点は各クラスタ中心との距離に基づき、最も近いクラスタに割り当てられるため、複雑な形状のデータではクラスタリングに失敗する※データ出典：A. C. Muller et al. mglearn.datasets- 30 -

2020/6/1

能力開発論（鈴木）第7回
31
Computer Software Associationof Japan

自己組織化マップ（SOM）
教師なし学習（次元削減）- 31 -

Computer Software Association of Japan

自己組織化マップ（SOM）の概要と例
高次元の特徴空間にあるインスタンスを2次元平面上に表現する手法
•

タスク事例
–
–

•

手法：SOM–––•https://archive.ics.uci.edu/ml/datasets/Wine+Quality
赤ワインデータを正規化したものに対してKohonenを利用

11種類の科学的特性データであらわされる赤ワ
イン1,599品種を二次元平面上に可視化したい
品質スコア（0から10の11段階）は学習に用いな
い（教師なし学習）

11次元特徴空間の1点となるひとつの品種は、2次元に並んだ10×10の出力ユニットのいずれかに対応付けられる
黒丸は出力ユニット、中の小さい点ひとつがひとつの品種を表している
科学的特性が互いに似ている品種は同じ出力ユニットか近くの出力ユニットに描画されることにな
るため、品種間の類似性の検討等に活用できる

結果の妥当性確認–- 32 -

各品種の品質スコアを色で表現したところ、同じ色が同一か近傍のユニットに配置されている

Computer Software Association of Japan

自己組織化マップのアルゴリズム
入力層（d個のユニットからなる）

𝒙
𝒎𝒊

𝑥1

𝑥2

𝑚𝑖1

𝑥𝑑

𝑚𝑖2

𝑚𝑖𝑑

𝑖

出力層（ 多数のユニットが二次元状に配置される）
入力層と出力層の間は全結合

1. 入力ベクトル𝒙と最も近い重みベクトル𝒎𝑖 を持つ出力ユニット𝑐を勝者とする
𝑐 = arg min |𝒙 − 𝒎𝑖 |𝑖

2. 勝者ユニットやその近傍ユニットの重みベクトルを入力ベクトルに近付ける
𝚫𝒎𝒊 = 𝒎𝑖 + 𝛼 ℎ𝑐𝑖 (𝒙 − 𝒎𝑖 )𝒓𝑐 − 𝒓𝑖 2ℎ𝑐𝑖 = exp(−)
2𝜎 2𝛼は学習定数、ℎ𝑐𝑖 は近傍関数（近傍ほど大きく、離れるほど小さい）
3. 入力ベクトルを更新して繰り返す

Rのsomパッケージ、kohonenパッケージなどで実装されている- 33 -

Computer Software Association of Japan

第５章

従来法による画像・映像処理

Computer Software Association of Japan

今回の内容• Google ColabによるOpenCV画像処理• CondaによるPython環境構築• 実機によるOpenCV画像処理-2-

Computer Software Association of Japan

OpenCV• 1999年よりIntelが開発している画像・映像処理ライブ
ラリ• Colabではプリインストール済み。Python環境では追加
でインストールが必要• BSDライセンスによるオープンソース• 色変換、エッジ抽出、モザイク加工などの基本的なことから、顔や物体の検出、ラベリング、姿勢推定など
様々な処理が可能• チュートリアルも非常に豊富：
https://docs.opencv.org/master/d9/df8/tutorial_root.html-3-Computer Software Association of Japan

Google ColabによるOpenCV画像処理
演習ファイルのColabフォルダ内をすべてColabにコピー• Google Driveのマウント• 画像の表示、回転、ぼかし、モザイク• 顔や人の認識、猫の認識• Webカメラの利用-4-

Computer Software Association of Japan

ColabでのGoogle Driveのマウント• 次のコードを実行し、認証コードを取得・入力
from google.colab import drive
drive.mount('/content/drive')
クリックし、承認する発行された認証コードをここに入力-5-

Computer Software Association of Japan

Google DriveとGoogle Colabのファイル• 特にパスを指定しなければColabのVM上にファイルは保存• パスを指定することで、DriveとColabに分けて保存可能• もちろんColabに保存すると12時間後には消滅• Colab: /content• Drive: /content/drive/My drive/content

drive

-6-

My drive

Computer Software Association of Japan

OpenCVによる画像識別• ハール(Haar)特徴量にもとづくCascade 識別器を使用• P. Viola (2001)によるオブジェクト検出の研究とR. Lienhart(2002)による改良がベースになっている• 白と黒で構成される矩形を画像に適用し、対象画像の特徴
量を作成する• 例えば顔画像は、目の領域の画素は周辺よりも暗い、口の領域の画素が周辺より明るい、などの特徴が得られる• 顔、目、正面、上半身、下半身、笑顔、などの識別器がOpenCVで使用できる
Sample face detection from, Paul Viola and Michael J. Jones, "Rapid
Object Detection using a Boosted Cascade of Simple Features", IEEE
CVPR, 2001.
-7-

Computer Software Association of Japan

CondaによるPython環境構築• 別紙参照• Minicondaをインストールし、Python環境を構築する• Minicondaは、任意のバージョンのPython環境を構築できる一種の仮想実行環境• Anaconda > Conda > Miniconda の順番でパッケージが大き
いが、最低限の用途ならMinicondaがコンパクトで良い• Minicondaをインストールし、Python環境を構築、必要なパッケージをpipコマンドでインストールする-8-Computer Software Association of Japan

PC上でのPythonの利用(Miniconda)• Anaconda Promptから、conda activate <環境名>• プロンプトが (base) から (環境名) となったことを確認できたら、python <スクリプト> で実行• 遠隔受講でPythonからWebカメラを使用する場合は、
必ずZoomのカメラをOFFにすること-9-Computer Software Association of Japan

PCで実行するファイル
開始前に、Colabフォルダ前のmodelフォルダをそのままPC内にコピーしておく• 画像表示：image1.py, image2.py, image3.py• image1.py: システムの関連付けで表示• image2.py: Matplotlibで表示• image3.py: OpenCVで表示• Webカメラ(モザイク、エッジ)：webcam.py• 顔と目の検出(Webcam)：face_eye.py• 顔領域の書き出し(Webcam)：face_file.py• 人間検出(Webcam)：person.py• 動体検出(Webcam)：detect.py- 10 -

Computer Software Association of Japan

OpenCVによる人間の検出• HoG特徴量＋SVMによる識別器• 顔はだいたい誰も明暗差が変わらないが、人間全体だと服装によって明暗差が異なるため、輪郭情報を主に使用する• HoG特徴量は、画像の輝度の勾配を主にパラメータとして用いる• 複数人の検出も可能だが、精度はそれほどよくない＆
かなり処理が重い• getDaimlerPeopleDetectorとgetDefaultPeopleDetectorの2つの処理方法があり、ソースによってどちらが向いているか若干異なる- 11 -

Computer Software Association of Japan

OpenCVによる動体検出• Webカメラからの入力のうち、動いている部分を検出• フレーム間差分を計算し、差が大きいところが動いている部分になる• 参考：
https://ensekitt.hatenablog.com/entry/2018/06/11/200000- 12 -

Computer Software Association of Japan

参考：自分で識別器を作成• 一種の教師あり学習• 正解画像と不正解画像を用意し、モデルを構築
例：• https://premium.aidemy.net/magazine/entry/2018/05/21/2
10100• https://qiita.com/penstood/items/97421a91d3f4075d39a4- 13 -

Computer Software Association of Japan

第６章

CNN
（Convolutional Neural Network)と画像の水増し（Image Augmentation）- 1-

Computer Software Association of Japan

Convolutional Neural Network (CNN)の基礎知識

 CNNの一般的な構造

https://en.wikipedia.org/wiki/Convolutional_neural_network 画像データの処理➢ 畳み込み（Convolution）➢ プーリング（Pooling）（Subsamplingの一種）- 2-Computer Software Association of Japan

画像情報の弱点
ニューラルネットワークへの入力は1次元の形にするため、2次元の画像情報が1次元になってしまう → 画像の特徴が失われる
特徴を活かす形で入力できないといけない → 解決策の1つがCNN- 3-

Computer Software Association of Japan

畳み込み（Convolution）
 画像に小さなフィルターをかけ、その値をピクセル値として新たな画像を
生成する
 参考：
https://ja.wikipedia.org/wiki/%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF (Wikipedia: 畳み込み) フィルターの重みを学習によって変化させることで、特徴を表す画像を生成する
 畳み込みで生成された特徴画像は特徴マップとも呼ばれる
 後述するパディング、ストライドの大きさによって生成される画像のサイ
ズが異なる

- 4-

Computer Software Association of Japan

畳み込み（Convolution）
 入力データに対してフィルターをかけることで、特徴マップを作成する
 例：カーネルサイズ：3×3、ストライド：横1、縦1
1 0 1
0 1 0
0 0 1

学習によって重みが変わる

フィルター

入力画像

1 0 1
0 1 0
1 0 1
1
0
0
0
0
0
1

1
1
0
0
0
1
1

1
1
1
1
1
1
1

1 0 0
0 1 0
0 0 1
0
1
1
1
1
1
0

0
0
1
1
1
0
0

1
0
0
0
0
0
1

1
1
1
1
1
1
1

0 0 1
0 0 0
1 0 1
1 0 1
0 0 0
0 0 1

フィルターの重みによって出力が変わる

4
2
2
2
4

3
4
3
4
3

7_1_画像の畳み込みとプーリング.ipynbを参照
- 5-

4
4
5
4
4

2
3
3
3
2

3
3
4
3
3

特徴マップ

Computer Software Association of Japan

プーリング（Pooling）
 サブサンプリングの一種
 ある領域ごとに代表値を求め、その値をピクセル値として新たに画像を生成する
 結果として画像サイズが小さくなる（解像度が低くなる）➢ Max pooling：最大値を代表値とする➢ Average pooling：平均値を代表値とする➢ Sum pooling：合計値を代表値とする
 解像度が低くなることで、特徴の位置の多少のずれに頑健になる 領域の大きさによって、縮小率が変わる➢ 領域が2×2、ストライド（後述）が2の場合、サイズは縦1/2、横1/2の1/4になる。

- 6-

Computer Software Association of Japan

プーリング（Pooling）
 Max poolingの例
 ウィンドウサイズ（カーネルサイズ）：2×2
 ストライド：横2、縦2

4
2
2
2
4
1

3
4
3
4
3
2

4
4
5
4
4
2

2
3
3
3
2
1

3
3
4
3
3
2

2
3
3
4
5
3

4 4 3
4 5 4
4 4 5

- 7-

Computer Software Association of Japan

パディング（Padding）
 畳み込みを行うと、生成される画像サイズは、元の画像よりも小さくなる
 元の画像の外側を仮に何らかの値で埋め「ふち」をつくることで、生成される画像サイズを調整する
 0で「ふち」を埋めるゼロパディングが良く使われる
7×7
カーネルサイズ3×3
ストライド横1、縦1で
畳み込み
大きさ1の
ゼロパディング 0 0 0 0 0 0 0 0 00（9×9） 0000
0
0
0
0 0 0 0 0 0 0 0

5×5

7×7

0
0
0
0
0
0
0

- 8-

Computer Software Association of Japan

畳み込みの意義 入力画像から目的にマッチした特徴量を学習によって生成する
 畳み込みフィルターの重みを学習によって決定する
 中間層が全結合ではないので、計算量が少なくなる

もし全結合にすると、入力画素数と特徴マップの画素数×特徴マップ数の結合が必要
https://en.wikipedia.org/wiki/Convolutional_neural_network- 9-Computer Software Association of Japan

CNNとDNNの比較演習
7_2_MNIST分類.ipynbを参照
演習のねらい• KerasによるCNNの基本的な実装• DNNとCNNによる分類の精度比較- 10 -

Computer Software Association of Japan

精度の改善
CNNの表現力増加– Convolution層やAffine層を深くする– Convolution層の特徴マップ（OutMaps）数を増やす– Affine層のOutput数を増やす– KernelShape（フィルターサイズ）を小さくする

勾配消失の回避– 層を深くすると勾配消失により誤差が小さくても精度が悪くなる– 活性化関数をReLUにすると勾配損失を防ぐことがある
過剰適合の回避– 層を増やしすぎない– DropOut層を入れる（ランダムにノードを無効化し表現力を落とす）
BatchNormalization層を入れる– 一部の入力のみの影響が大きくなりすぎることを防ぐ- 11 -

Computer Software Association of Japan

自作データでの検証
7_3_自作手書き文字認識.ipynbを参照
演習のねらい分類モデルが自作の手書き文字（準備されたデータ以外のデー
タ）でも分類できる汎用的な分類モデルであることを確認する
手書き数字データ– 背景が黒で文字が白のグレイスケール画像– サイズは28×28
画像データ作成– ペイントソフトなどで文字を書く• ひとまず今回はペイントソフトで文字を書きます– 紙に書いた文字をスキャナやカメラで画像化する- 12 -

Computer Software Association of Japan

自作手書き画像の作成
ペイントを起動し、画像サイズを28x28に変更する
マウスで数字を書く（幅3px程度）
jpgとして保存したあと、GoogleDriveにアップロードする- 13 -

Computer Software Association of Japan

画像データの水増し(Image augmentation)
学習には、画像内の対象の差異がある大量の画像データが必要
対象の差異の種類（手書き数字の場合）– 文字の形– 画像内での位置– 画像内での文字が閉める割合（サイズ）– アスペクト比– 回転、反転– その他変形– 明るさ、コントラスト、彩度

傾きやサイズ、アスペクト比などが学習データに無い場合、精度が落ちる

画像処理で生成できるものも多い– 一つの画像に様々な画像処理を組合せて適用し、学習データを増やす– 予測の安定性につながる- 14 -

Computer Software Association of Japan

Kerasによる画像の水増し
keras.preprocessing.image.ImageDataGeneratorの引数は次のとおり– rotation_range:回転（degree）– width_shift_range：横方向の移動（ピクセル）– height_shift_range：縦方向の移動（ピクセル）– shear_range：歪みの角度（degree）– zoom_range：スケーリングの範囲（等倍=1.0）– horizontal_flip：横方向反転（True or False）– vertical_flip：縦方向反転（True or False）- 15 -

Computer Software Association of Japan

画像データ水増し演習（1）
7_4_画像の水増し.ipynbを参照
演習のねらい• 基本的な画像処理により水増しされる画像が、どのような画像になっているかを確認する➢

パラメータを一つずつ変更して、画像処理による加工の様子を確認する- 16 -

Computer Software Association of Japan

画像データ水増し演習（2）
7_5_ASL認識モデル.ipynbを参照
演習のねらい
データ水増しにより分類精度が上がるケースを体験する
CNNを改良して分類精度の向上を試みる- 17 -

Computer Software Association of Japan

画像データ水増し演習（2）での学習データについて•

ASL画像データは下のような画像が、画像内の手の位置が少しずつ移動したり、画像内での手の大きさが少しずつ異なる（カメラからの距離が変わる）ような画像です。1種類につき3000枚ずつあります。

•

学習データはこれらの画像から10枚ずつ抜き出したものです。つまり、ある特定の手の位置や手の大きさの10枚の画像と言うことになります。

•

CNNによる分類では、対象の位置や大きさが異なれば、それは異なる画像となります。

•

画像処理によって様々な位置や大きさの手の画像を作ることで、分類精度の向上が期待できます。

ブランク
ラベル：0

ラベル：1

ラベル：2

- 18 -

ラベル：3