site_review: 2021-12-10 03:42:19.560680 【技術本】詳説DeepLearning

【技術本】詳説DeepLearning

https://amzn.to/44yjC5U


【技術本】詳説DeepLearning


x postへポスト
本書の肝は、並列反復アルゴリズムを実行できるSparkを活用し、YARNベースのHadoopクラスタ、MesosベースのクラスタでSparkを実行できる環境を作る。そして、Java製のディープラーニングフレームワークDL4JをSparkと統合する事でディープラーニングにおけるネットワークの訓練をスケール出来るようになる事である。
著書全体では、導入は近年のディープラーニングに到るまでの機械学習の歴史を踏まえた解説から入る。その後、基本的な機械学習ネットワークのアーキテクチャの説明、各種活性化関数、損失関数、ハイパーパラメータを踏まえた深層ネットワークの基礎、DL4Jによる実装概要、各種パラメータのチューニング、入力データであるデータのベクトル化の方法を解説。最後に、DL4Jを、Spark,をHadoopやMesosと連携した並列処理方法までを順を追って解説してくれている。
構成内容的には以下の通り。
・約190ページがディープラーニング概要解説:1~4章
・約70ページ:DL4Jによるディープラニング実装解説:5章
・約200ページが各種パラメータのチューニング解説、データのベクトル化のノウハウ:6~8章
・約50ページがDL4JのSpark, Hadoopを用いた並列処理解説:9章
・約100ページが付録

Java言語を利用してディープラーニングを行うという点で、個人的な先入観で性能に懸念があったが、ディープラーニングフレームワークDL4Jで、JavaCPP、CPUバックエンド(OpenMP,BLAS操作、SIMD拡張)、GPUバックエンド(CUDA,cuDNN)をサポートし、高速な線形代数を実行可能にしているため、他言語での環境と比較しても遜色がないことがわかった。それを踏まえたうえで、Java言語でディープラーニングを実装し、並列分散処理環境を構築して、スケールアウトする技術を勉強したい人に価値が出てくる著作であると感じた。
※Java言語仕様やアーキテクチャ、Javaプロジェクト管理ツールのMavenなどの概要は割愛されているので、必須前提知識。

---
個人メモ

1章:機械学習の概要
機械学習の背後にある数学:線形代数
 スカラー
 ベクトル
 行列
 テンソル:多次元配列
 超平面:対象空間より次元数がひとつ少ない部分空間を意味する
      2次元の空間によっての超平面は、一次元の線になる

機械学習の背後にある数学:統計
 確率
 分布
 尤度:ゆうど
  発生する可能性がかなりあるが、発生しないかもしれない事象に対して使われる。

機械学習の仕組み
 回帰
 分類
 クラスタリング
 未学習と過学習
 最適化
 凸最適化
 勾配下降法
 確率的勾配下降法
 準ニュートン法による最適化
 生成モデルと識別モデル
 
2章:ニューラルネットワークとディープラーニングの基礎

 2.1ニューラルネットワーク
 アーキテクチャの定義
  ニューロンの数
  層の数  
  層間の接続の形式

 一般的に誤差逆伝播学習で訓練

 パーセプトロン
 2値分類に使われる線形モデルの一つ
 多層フィードフォワードネットワーク
  一つの入力層、一つ以上の隠れ層、一つの出力層からなる
  接続の重み
  バイアス
  活性化関数
 2.2ニューラルネットワークの訓練
 誤差逆伝播学習 
 2.3活性化関数
 ある層の出力を次の層に伝える
  線形
  シグモイド
  tanh
  ハードtanh
  ソフトマックス
  修正線形
 
 2.4損失関数 loss
 損失関数の値:訓練によってどの程度理想な状態かの指標
 損失(loss)が最小化するようなパラメータ(重み、バイアス)を探すことが重要

 2.5ハイパーパラメーター
 ネットワークの訓練を効率的に高速にするためのパラメーター
  学習率
  正則化
   様々な方法でパラメータの値を最小化し、パラメータの値が制御不能になることを防ぐ手法

3章:深層ネットワークの基礎
ディープラーニング
 従来のネットワークよりニューロンが多い
 層間の接続方法が複雑
 訓練に必要な計算量が多い
 自動的な特徴量の抽出●

主要なアーキテクチャ
 教師なしの事前訓練済みネットワーク:Unsupervised Pretained Network
 畳み込みニューラルネットワーク:Convolitional Neural Network:CNN
 リカレントニューラルネットワーク:Recurrent Newral Network:RNN
 リカーシブニューラルネットワーク:Recursive Nueral Network

深層ネットワークのアーキテクチャに共通の要素
 パラメータ
 層 
 活性化関数
 損失関数
 最適化の手法
 ハイパーパラメーター

深層ネットワークの構成要素
 RBM:特徴量抽出、次元数の削減で使われる
オートエンコーダ:データセットの圧縮された表現を学習するために使用

4章:
4.1教師なしの事前訓練済みネットワーク
 オートエンコーダ
 DBN(Deep Belief Network)
  画像のモデル化でCNNより有効
 GAN(Generative Adversarial Network)
  訓練画像から全く別の画像を合成することを得意
  教師なしの学習で2つのモデルを並列に訓練する
   識別器ネットワーク:生成的ネットワークの画像を見破るのが目標
   生成的ネットワーク:識別器ネットワークをだませる画像を生成するのが目標
    逆畳み込み層でデータ生成(画像)する

 4.2 CNN :畳み込みニューラルネットワーク
 画像のモデル化に適す。
 自然言語の翻訳や生成、感情分析にも利用される
 未加工のデータを直接扱える。前処理不要のため、技術者はネットワークアーキテクチャの調整に注力できる

 畳み込みを通じてデータの中から高次の特徴量を学習する
 入力データに構造がある場合に威力を発揮する
  例:画像や音声パターンに繰り返しがある場合、隣り合う入力値に空間的関係がある場合

 ニューロンを以下の大きさをもつ3次元の構造に配置している
  幅
  高さ
  奥行き

 画像の以下の構造に対応
  画像の幅
  画像の高さ
  RGBの各チャンネル

 アーキテクチャ
  1入力層
  2特徴量抽出(学習)層
  3分類層

 特徴量抽出層では、一般的に以下の繰り返しパターンが見られる
  1畳み込み層
  2ReLU(Rectified Linear Unit層)
  3プーリング層

 畳み込み層のアーキテクチャは、各層のニューロンは直前の層のうち一部のニューロンにしか接続しません

 4.2.4 入力層
  幅、高さ、チャンネル(RGBの3つが一般的)
 4.2.5 畳み込み
  2セットの情報を一つにまとめるための数学的操作
   特徴量検出器として活用
 4.2.6 プーリング層
  2つ続く畳み込み層の間に挿入される
  データの表現の空間的サイズ(幅と高さ)を徐々に減らしていくため
 4.2.7 全結合層
  最後に位置する出力層での計算結果を算出するための層
  出力立体サイズ 1*1*N

 4.3 リカレントニューラルネットワーク
 多層パーセプトロンの進化系
  時間という次元をモデル化できる
  時間とともに会話が進展していくのにあわせて、一貫性のある回答を行うように学習できる
 チューリングテストにも合格している
  つまり、本物に人間と会話している、と人に思い込ますことも可能

 アーキテクチャ
  フォードフォワードニューラルネットワークの上位集合 

 得意分野
  音楽の生成
  テレビゲームの無人プレイ
  言語のモデル化
  文章の生成
  音楽の情報検索
  センサーやログの測定

 欠点:勾配消失問題
  勾配が極端位大きい、または小さい場合は、どちらかに振り切れてしまって、長期の依存関係をモデル化するのは難しい

 対策:LSTMネットワークをつかう
 ※LSTM:Long Short-Term Memory:RNNの拡張として1995年に登場
 記憶セルとゲート群(忘却ゲート、入力ゲート)。ゲート群によって聞くセルの内容を調整し、情報を長いタイムステップにわたって保持でき、勾配も長期伝播できる

p180※
 長さが1000のシーケンスに対してリカレントニューラルネットワークで勾配を求めるのに必要な計算量は、1000の層をもつパーセプトロンのネットワークで順方向と逆方向に処理を行う場合と同等

 シーケンス数が増大すると、計算量も増えコストも増大する
 Truncated BPTTという代替の訓練手法が必要
  細かなシーケンスステップごとに分割する

 4.4リカーシブニューラルネットワーク
 リカレントニューラルネットワーク同様に、可変長の入力を扱える。
 両者の違いは、リカーシブニューラルネットワークでは訓練用のデータセットの中にある階層構造をモデル化できる。
 画像の背景の分解などが得意。分解は再帰的な性質を持っているため。 

 得意分野
  画像の背景の分解
  NLP
  音声の書き起こし

5章:深層ネットワークの構築
 5.2 DL4Jのツール群
  分散データ処理基盤との統合
  ベクトル化
  モデル化
  評価
 java製:直列、並列でも実行可;複数プラットフォーム対応
 Spark,Hadoopとの統合可能
 DeepLearningをc++と同等速度でSparkによる並列計算したい人向け

 ニューラルネットワークの訓練対象はベクトルだけ。
 データの前処理にベクトル化は必須
 >>DL4Jのツールでモデル化に適したベクトルを生成できる

 高速化
  JavaCPP
  CPUのバックエンド
  GPUのバックエンド

 モデルの読み込みと保存
  HDFS(Hadoop用)にも対応

 DL4Jによる実装例
 5.4 CVSデータのモデル化
 5.5 手書き数字をCNNでモデル化する実践例
 5.6 RNNでシーケンスデータをモデル化
 5.7 オートエンコーダを使った異常検出
 5.8 MNISTの数字の再構成
 5.9 段落ベクトルによる文の離散表現

6章:深層ネットワークのチューニング

目前の問題に適したネットワークアーキテクチャの選択
ハイパーパラメータのチューニング基礎
学習プロセスに対する良い理解

対象アーキテクチャ
 DBN
 CNN
 リカレントニューラルネットワーク

表形式(CVS) ;多層パーセプトロン
画像:CNN
シーケンス、音声:リカレントニューラルネットワーク
動画:CNNとリカレントニューラルネットワークのハイブリッド

 分類モデルでの出力層
 出力層N個:N=分類する数
 分類するラベルは一つの場合(例:スパムかスパム出ないかの判定)N=1
  シグモイド活性化関数を使う(0.0 - 1.0の値を出力する)
  ラベルが一つの場合、0.0から1.0の間の値で2つのクラスが表現される
  損失関数として、交差エントロピーを使う

 カテゴリなど複数に分類する場合 N=分類数
  2ケースある
  1.ラベルが複数あり、最も可能性のあるクラスを一つ選びたい:多クラス分類
   活性化関数:ソフトマックス関数(それぞれの出力(確率)の総和それぞれの出力(確率)の総和が1.0)

  2.ラベルが複数あり、一つの出力の中で複数のラベルを選びたい
    例えば、人と車が共に写っている写真など:他ラベル分類
   活性化関数:シグモイド

 6.4.1 フィードフォワードの多層ニューラルネットワーク
 隠れ層の数:データセットのサイズと相関がある
  データセット大:隠れ層を増やす
  MNISTデータセットでは3〜4で十分。それ以上では精度が低下
  ※FaceBookのDeepFaceは9個:大きなデータセット

 層ごとのニューロンの数
  同種の層が連続するときはニューロンの数を減らす
  どの層でも、入力層のノードの1/4以下にはしないようにする

 6.4.2 層とパラメータの数をコントロールする
 過学習を防ぐために正則化のテクニックを使う
  L1
  L2
  ドロップアウト
  ノイズの注入
  ドロップコネクト

6.7.1 活性化関数まとめ

 関数名:使用箇所
 線形:回帰分析での出力層
 シグモイド:2値分類での出力層、出力値の範囲は(0,1),近年は好まれない。隠れ層での利用は避けるべき
 tanh:[-1,1]の範囲に限らず連続値、LSTM層
 ソフトマックス:多クラス分類のモデルの出力層
 ReLU:RBM,CNNの層、多層パーセプトロンネットワークの層

 6.8損失関数
 与えられた作業をどの程度うまくできているかを最適化の関数に伝える

 使用箇所
  出力層
  層ごとの教師なしの事前訓練が可能な層:オートエンコーダ、RBM,VAEなど

 6.9学習率を理解する
 6.10 ハイパーパラメータのスパース度が学習に与える影響
 6.11 SGDによる最適化手法
 6.12 並列化やGPUを使って訓練を高速化の手法概要
 6.13 エポックとミニバッチのサイズ
  エポック:入力のデータセットに対する1回の処理
     訓練が収束するまで複数エポックが必要なこともある
  ミニバッチのサイズ:学習アルゴリズムに対して、一度に渡されるレコード(ベクトル)の数
 6.14 正則化の利用方法
  パラメータベクトルの重みが早期に大きくなりすぎるのを防ぐ
 6.15 不均衡なクラスの扱い
 6.16 過学習への対処
 6.17 チューニングのUIでネットワーク統計量を利用

p303:大きなディスクアクセス
100MB/sの2テラのHDDは、データ全体を読み込むのに6時間かかる

7章:特定の深層ネットワークのアーキテクチャへのチューニング

対象アーキテクチャ
 CNN
 リカレントニューラルネットワーク
 DBN

7.1 CNN
プーリング層:データ表現の空間サイズ(幅と高さ)を徐々に減らしていくために用いられる

主なパターン
 入力層
 畳み込み層
 プーリング層
 畳み込み層
 プーリング層
 全結合層
 必要に応じてもう一つの全結合層

1998年:Yann LeCnnが発表したネットワーク
 入力層
 畳み込み層:20個のフィルター(5*5)
 最大値プーリング層(2*2)
 畳み込み層:50個のフィルター(5*5)
 最大値プーリング層(2*2)
 全結合層
p336 Javaによるモデル定義のコード

 7.1.4 転移学習
  以前訓練を行って良い結果を示したモデルに、特定のデータセットの画像を使ってさらに訓練を行う

 転移学習を検討すべきケース
  訓練データセットが小さい
  訓練データセットとベースのデータセットの間で視覚的特徴が共通

 7.2 リカレントニューラルネットワーク

  入力層と出力層の3つの次元
   ミニバッチのサイズ
   タイムステップごとのベクトル内の列数
   時系列の長さ

 7.2.3 ネットワークの訓練
  重みの初期化
   DL4Jでは、Xavierの初期化を推奨
  時間ごとの誤差逆伝播
   Truncated BPTTがうまく機能する
  正則化
   ドロップアウトがよく使われる

 7.2.4 LSTMでのよくある問題の解決
  勾配爆発と消失の対策
  勾配爆発:勾配のクリッピングや、再正則化する
  勾配消失:DL4JもサポートしているLSTMの変種と使うのが効果的

 7.2.5 パディングとマスキング
 7.2.6 マスキングによる評価とスコア付け
 7.2.7 リカレントニューラルネットワークのアーキテクチャの変種

 7.3制限付きボルツマン機械
  教師なしでデータセットから特徴量を学習できるニューラルネットワークの一種
  使用されるユースケース
  DBNにおける教師なしでの特徴量の学習
  データの再構成
  レコメンドのエンジン
 7.4 DBN(Deep Belief Nets)
  訓練プロセスは以下の2フェーズからなる
   事前訓練
   調整

8章;ベクトル化
 入力は、ベクトルや行列データが求められる
 ベクトル化のテクニックがデータサイエンスのプロセスにおける核心

 8.1.2 表形式の生データの属性を扱う方針
 8.1.3 特徴量の作成と正規化の手法
 8.2 ETLとベクトル化にDataVecを利用
 8.3 画像データのベクトル化
 8.4 連続データのベクトル化
 8.5 ベクトル化でテキストを扱う
 8.6 グラフを取り扱う

9章:Spark上でDL4Jを用いて機械学習を行う
 9.1 DL4JをSpark, Hadoopと併用
 Spark:MapReduceの後継:hadoop上で並列反復アルゴリズムを実行するフレームワーク
  汎用的な並列処理エンジン
  単体でも、Apache Mesosのクラスター上でも実行できる
   Hadoop YARNフレームワークを経由してHadoopクラスター上でも実行可能
  HDFS(Hadoop Distributed File System)に格納されたデータも利用可
 DL4J:spark上でのネットワークの訓練をスケールアウトできる
 Hadoop: 並列処理ツール、分散ファイルシステム(HDFS)のセット:javaで記述

 9.1.1.2:Hadoopセキュリティとkerberosを組み合わせる
  kerberos:エンタープライズの認証システムとして幅広く利用
   認証の横取りなどの攻撃を防げる。
   認証情報の暗号化により、なりすまし攻撃を防御
 9.2 Sparkの実行に対する設定とチューニング
  Mesos上でSparkを実行
  YARN上でSparkを実行
 9.3 SparkとDL4J向けにMavenのPOMをセットアップ
 9.4 SparkとHadoopでのトラブルシューティング
 9.5 Spark上でのDL4Jの並列実行
 9.6 Spark上のDL4Jのベストプラクティス
 9.7 Sparkでの多層パーセプトロンの例
 9.8 SparkとLSTMでシェイクスピア風の文章を生成
 9.9 Spark上の畳み込みニューラルネットワークでMNISTをモデル化

付録A 人工知能とは何か
付録B RL4Jと強化学習
付録C 誰もが知っておくべき数値
付録D ニューラルネットワークと誤差逆伝播
付録E ND4J APIの使用方法
付録F DataVecの使用方法
付録G DL4Jをソースから利用
付録H DL4Jプロジェクトのセットアップ方法
付録I DL4JプロジェクトのGPU設定
付録J DL4Jインストールのトラブルシューティング

以上。


x postへポスト


  Copyright 2021-2025 REVIEW_SITE ALL RIGHTS RESERVED.
  このサイトについて/お問い合わせ
  プライバシーポリシー
  総合トップページへ