スキップしてメイン コンテンツに移動

『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装』☆5

技術本に定評のあるO'REILLY(オライリージャパン)によるディープラーニングの解説書。タイトルの通り、Scikit-learnのようなアルゴリズムライブラリを使わずに、自力でゼロからディープラーニングを実装できるようになります。

↑気になったらここからポチっと↑

見よう見まねで機械学習をやってきたので、後付けだけど機械学習について体系的に学んでみようの第四弾。考え方を解説してゴリゴリ実装していきます。解説はとても分かりやすいですが、内容的にエンジニア向けの本だと思います。

この本を読むとわかること

全体的な章立てと概要はこんな感じです。

パーセプトロン

複数の信号を入力として受け取り、1つの信号を出力するパーセプトロンの基本概念や、
出力の強さを制御するバイアスについて解説されています。どの機械学習の本もまずはパーセプトロンを理解するところから始まるのです。

また、パーセプトロンを組み合わせてAND・OR・NAND・XORのような論理回路を構成できることが紹介されています。パーセプトロンを層状に積み重ねた多層パーセプトロンはこの性質を利用することで複雑な論理を表現可能であり、ディープラーニングの基本概念となっているのです。

ニューラルネットワーク

パーセプトロンにおいて入力値に基づいて出力を算出する際に使われる活性化関数の解説からスタートします。線形の恒等関数や、S字型で出力が0から1の範囲のシグモイド関数(ロジスティック関数)が代表的な活性化関数です。

解く問題に合わせて活性化関数を選択することが大事なのです。例えば、写真に写った人物の体重を予測するような場合は、身長と体重は概ね比例するので、線形の恒等関数を使うと良さそうです。また、Yes/Noを判定するような2値分類では、S字型のシグモイド関数を使うのが一般的です。

ニューラルネットワークの学習

MNISTと呼ばれる手書き文字のデータセットを使って画像から特徴を抽出し、分類すること(手書き文字を識別すること)を実装します。データを訓練データとテストデータに分けて、訓練データでモデルを作ってテストデータで精度を検証します。

機械学習においては訓練データを正確に分類するために損失関数というものを定義し、二乗和誤差交差エントロピー誤差などを最小化することでモデルを最適化します。例えば、二乗和誤差であれば各次元(数字なら10個)に対して、ニューラルネットワークによる出力と教師データの特徴の差の二乗を計算し、それを最小化することで正しく分類できるモデルを目指します。

モデルの最適化においては、複数の変数がある場合に他の変数を固定して1変数に対して微分を行う偏微分を行います。偏微分すると微分対象の変数について勾配が発生します。勾配の示す方向は関数の値が最小化する方向であり、そこが最適ポイントということになります。ただしグラフの形によっては複数の勾配の収束ポイント(鞍点:Saddle point)があり、誤って収束することもあるのです。

誤差逆伝播法

入力層から出力層への順方向の伝播(計算)は概念としては正しいのですが、実装するとかなりの計算量が必要となり、計算に時間がかかってしまいます。この計算量の問題を解決するのが誤差逆伝播法で、出力層から逆算するようにして最適なモデルを短時間で見つけることができます。

パーセプトロン間の関係を可視化する計算グラフという書き方を使って計算過程を見える化しながら、各関数をレイヤ(層)として実装することでレイヤの伝播だけでニューラルネットワークを表現するモデルを実際に作ることができます。

学習に関するテクニック

確率的勾配降下法では学習率(0.01や0.001)を掛けあわせて更新量で重みを減らしていき最適点を探索しますが、等方的でない関数(伸びた形状の関数)だと学習が非効率になるという欠点があります。

これを解決する工夫として、物体が何も力を受けなければ徐々に減速するようなモメンタムという変数や、パラメータの要素ごとに適応的に学習を行うAdaGrad(Adaptive Grad)、モメンタムとAdaGradを合わせたAdamという手法などがその効果を可視化しながら紹介されています。

また、過学習を抑制しつつ学習を早く進行させることができるバッチ正規化という手法についても概念・実装・効果が解説されています。実装としては、ニューラルネットワークのレイヤの間にバッチ正規化レイヤを入れるのが良いのです。

畳込みニューラルネットワーク

全結合したニューラルネットワークの問題点はデータの形状が丸められてしまうことです。画像であれば縦・横・奥行きの3次元の情報がありますが、全結合層に入力するにはピクセル単位に横に並べた1次元データ(平面を分解した線)にする必要があり、人間が目で見るような画像処理ができません。

この問題を解決するのが全結合ではなく部分結合する構造の畳込みニューラルネットーワクです。畳込み層を使えば3次元の形状を保って処理できる点が大きなブレークスルーなのです。畳込み層はフィルターの役割を果たし、3次元データに対しては縦・横・奥行きの3種類のフィルターを使うことで人間の目で行われるような画像処理をコンピューター上で再現するのです。

この章では、畳込み層による畳込み演算の具体的な計算方法・実装方法をイメージ図を含めて分かりやすく解説しています。また、フィルターからの出力を1つに集約するプーリング層についてもその効果と実装方法が紹介されています。

ディープラーニング

この章ではディープラーニングの最新研究が紹介されています。1枚の画像から複数の物体を検知する物体検出や、風景写真をゴッホ風の絵に加工するAI、架空の部屋や都市を自動生成する画像生成AIについて事例や考え方が解説されています。

また、ディープラーニングに必要な大量の計算を効率的に行うためにCPUではなく、GPUを使うとよいことも紹介されています。GPU (Graphic processing unit)はその名の通り、コンピューターゲームのグラフィック描画などを高速に行うための専用ハードです。CPUのコア数は普通のPCで2個・4個・8個くらいですが、GPUは数千個のコアを積んでおり、ディープラーニングで使われる積和演算の並列実行に適しています。GPUを作っている主な企業はAMDとNVIDIAですが、NVIDIA製GPUのほうがディープラーニングに向いているのだそうです。NVIDIAの昨今の急成長の背景にはディープラーニングやAI技術の進展があったのですね。

↓気になったらここからポチっと↓

関連情報

AI(機械学習)やってみた

AI(機械学習)関連書籍


ビッグデータ解析やってみた

ベストビュー(過去1カ月)

『九龍城探訪 魔窟で暮らす人々 - City of Darkness』 ☆4

魔窟とも言われた香港の九龍城の住人へのインタビューや、在りし日の写真集。香港の本土返還に伴い取り壊されてしまっているけど、その怪しさに妙に惹かれるのです。

【番外編】ボストン旅行記(UMASS Lowell卒業式編)【Day 4:卒業式】

UMASS Lowellの卒業式@Boston。4 日目は卒業式本番です。とても賑やかでアメリカンな式典でした。ただしあいにくの雨、僕曇り男なのに。。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day2:晩餐会】

UMASS Lowellの卒業式@Boston。 2日目は午前中はボストン観光、夕方から Hooding ceremonyという卒業生(大学院生)向けの晩餐会です。卒業式で被るHoodをもらいました。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day0:渡米前にやっておくこと】

UMASS Lowellの卒業式@Bostonについて、計画の立て方やら行く前にやっておくことやらをまとめておきます。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day5:帰国】

UMASS Lowellの卒業式@Boston。5 日目にして帰国なのです。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day1:ボストンへ】

UMASS Lowellの卒業式@Boston。 1日目は移動だけで終わりました。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day3:終日観光】

UMASS Lowellの卒業式@Boston。3 日目は終日フリーなので、ゆっくりボストンを観光しました。

【番外編】AI(機械学習)やってみた。【第3回】ソムリAI ~ニューラルネットワーク編~

AI(機械学習)やってみた、第3弾です。「ニューラルネットワーク(Neural Network)」を使ったソムリAIを作ってみようと思います。”ニューラルネットワーク”、見るからにAIっぽい名前ですよね。

【番外編】AI(機械学習)やってみた。【第2回】ソムリAI ~ロジスティック回帰編~

AI(機械学習)やってみた、第2弾です。前回は決定木(Decision Tree)を使ったソムリAI(ワインソムリエAI)を作りました。今回は「ロジスティック回帰(Logistic Regression)」というモデルを使ったソムリAIを作ってみようと思います。

【番外編】AI(機械学習)やってみた。【第4回】ソムリAIの改良(正規化)

ソムリAI(ワインの評価を機械学習で当てる「ソムリエ+AI」)はもういいかなと思っていたのですが、機械学習の教科書的な本を読んでいるといくつか改良ポイントが見えてきたので、実際に適用してみようと思います。 まずは データの正規化 という手法を試してみました。結論から言うと、 あまり効果はなかった のです。。 ソムリAIの振り返り ワインの成分とランクのデータに対して、決定木・ロジスティック回帰・ニューラルネットワークの3通りのモデルを使って機械学習 を行い、モデルの精度を検証してきました。それぞれのソムリAIの性能はこんな感じでした。 どのモデルも概ね60%程度の精度 でした。 改良その1:正規化 正規化とは まずは 正規化 という手法を試してみます。標準化とも呼ばれます。正規化を行うことで 尺度の異なるデータを比べやすくする とともに、 はずれ値の影響を小さくする ことができます。正規化には 各データを平均0・標準偏差1に成形する手法 と、各データを 0から1の範囲に成形する手法 の2つがあります。 前者は標準偏差が出てくることからも分かるように、 データが正規分布に従うことを前提にした正規化手法 です。 元のデータが釣鐘型の分布になっている場合に有効 です。後者は単純に データの範囲を0から1の範囲に狭める手法 であり、 元のデータが一様分布の場合 (規則性が無くランダムなように見える場合) に有効 です。 どちらの手法でもデータの範囲を一定のレンジに狭めており、そうすることで異なる尺度のデータを比べやすくしつつ、はずれ値の影響を下げるのです。 正規化してみる 元データの分布を確認 前回同様のワインのデータを使って正規化してみます。まずはワインのデータを読み込んで表示してみます。ついでに機械学習で使うワインの成分と、ワインの評価にデータを分割しておきます。 【オリジナルのワインデータ】 UCI(University of California, Irvine:カリフォルニア大学アーバイン校) http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv #入力データセットを読み込み i

ベストビュー(全期間)

Malaysia Quarantine Premium Package 【番外編】Malaysia赴任記 隔離ホテル情報

Once entering Malaysia, we need to be quarantined for 14days. At the beginning of COVID-19 spread, the hotel for quarantine have been determined randomly. In these days, we can choose "premium quarantine stay package" in advance . This article is summary of premium packages which I asked each hotel. Note: Information in this article might be old. It's better to confirm the latest plan to the hotel. Note: Only Hotel Istana can be booked via its homepage so far. As the other hotels don't show their premium package plans on their homepage, you need to contact them through their reservation E-mail address or "Contact us". マレーシア入国とともに14日間ホテルで隔離されます。当初は滞在ホテルがランダムに割り振られていたようですが、より快適なプレミアムプランが追加されました。各ホテルにどんなプランがあるのか聞いてみたので、聞いた内容をまとめます。 ※情報が古い可能性があるので、念のため最新情報を各ホテルに確認したほうがよいかもしれません。

【番外編】AI(機械学習)やってみた。【第1回】ソムリAI ~決定木編~

最近ブームのAI(機械学習)に手を出しました。まずは、決定木(Decision Tree)というモデルを使って「ソムリAI(ワインソムリエAI)」を作ってみようと思います。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day0:渡米前にやっておくこと】

UMASS Lowellの卒業式@Bostonについて、計画の立て方やら行く前にやっておくことやらをまとめておきます。

【番外編】AI(機械学習)やってみた。【第6回】乳がん診断AI その1

ソムリAI(ワインソムリエAI)で使った手法で乳がん診断AIを作ってみます。まずは決定木とニューラルネットワークの2つのモデルを試してみます。かなり高性能なモデルができました。名医誕生かもしれません 笑

【番外編】AI(機械学習)やってみた。【第3回】ソムリAI ~ニューラルネットワーク編~

AI(機械学習)やってみた、第3弾です。「ニューラルネットワーク(Neural Network)」を使ったソムリAIを作ってみようと思います。”ニューラルネットワーク”、見るからにAIっぽい名前ですよね。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day5:帰国】

UMASS Lowellの卒業式@Boston。5 日目にして帰国なのです。

【番外編】AI(機械学習)やってみた。【第2回】ソムリAI ~ロジスティック回帰編~

AI(機械学習)やってみた、第2弾です。前回は決定木(Decision Tree)を使ったソムリAI(ワインソムリエAI)を作りました。今回は「ロジスティック回帰(Logistic Regression)」というモデルを使ったソムリAIを作ってみようと思います。

【番外編】ボストン旅行記(UMASS Lowell卒業式編)【Day 4:卒業式】

UMASS Lowellの卒業式@Boston。4 日目は卒業式本番です。とても賑やかでアメリカンな式典でした。ただしあいにくの雨、僕曇り男なのに。。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day2:晩餐会】

UMASS Lowellの卒業式@Boston。 2日目は午前中はボストン観光、夕方から Hooding ceremonyという卒業生(大学院生)向けの晩餐会です。卒業式で被るHoodをもらいました。

『深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト』 ☆5

一般社団法人日本ディープラーニング協会が実施している「Deep Learning for GENERAL (通称G検定 ) 」 の公式テキスト 。 ディープラーニングについて1冊で網羅的によくまとめられているので 、 ディープラーニングの入門書としてもおすすめです 。 ついでに勢いで資格も取ってしまいました 。 AI人材への第一歩なのです 笑