質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2181閲覧

多層パーセプトロンとdeep learning ネットワークとの違い?

OOZAWA

総合スコア45

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/01/12 08:57

編集2019/01/14 10:59

多層パーセプトロンとディープビリーフネットワークとの違いはなんでしょうか。

下記HPでは少し触れましたが、概念的に理解できない処があります。
http://yaju3d.hatenablog.jp/entry/2017/05/31/235745
==========引用==========
従来のニューラルネットワーク(左図)はパラメーターの更新を4層以上一度にやっていたが、ディープビリーフネットワーク(右図)では層毎に学習が完了してから次の層を付け足したことにある。1層が終わってから2層目と順に学習し、全ての学習が終わってから全層を結合してバックプロパゲーションをかけたのである。
========引用END=========

これによりますと、ディープビリーフネットワークの『パラメーターの学習』と『パラメーターの更新』とは別々の意味で、『パラメーターの学習』はforward的に行い、『パラメーターの更新』は従来のback propagationだそうです。

それじゃー、どうやって『パラメーターの学習』が実施されるのでしょうか。

つまり、自分の認識では
「パラメーターの学習 = パラメーターの更新 = back propagation」
back propagationなしのforward的な『パラメーターの学習』は具体的にどうやって実現されるのでしょうか。

ご存知の方宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

私自身の実装経験はなく、研修(勉強会)の知識ベースなので若干不確かですがコメントします。

<ディープビリーフネットワーク考案の背景>
ニューラルネットワークは、単層構造から多層構造へと研究が進みより複雑な課題を高精度で予測できるようになりました。一方、こうした方向性と異なり、層を深くすることなく、入力層から有用な特徴量を抽出する工夫をする方法も研究されました。ディープビリーフネットワークは、後者の方向の研究の成果にあたります。

<ディープビリーフネットワークのコンセプト>
ディープビリーフネットワークは、パーセプトロンで明示的に定義するノード(例えば、入力層と隠れ層)の間に制限付きボルツマンマシンを複数層化したものを導入したものです。制限付きボルツマンマシンとは教師なし学習に属するもので、識別モデルとは別物です。つまり、本来的に教師あり学習であるパーセプトロンの学習に必要な特徴量を教師なし学習を用いて生成した特徴量を用いようというものです。(この制限付きボルツマンマシンを多層化するとディープビリーフネットワークになります)

<制限付きボルツマンマシンの学習プロセス>
制限付きボルツマンマシンの学習プロセスは、オードエンコーダと似ていて、1)下位の層(例えば入力層)から上位の層(例えば隠れ層)へ向かって現在のパラメータを使って計算、2)先で計算した上位の層を入力に下位層を計算し、パラメータの精度を評価、3)評価結果をもとにパラメータ更新、というイメージで行われます。したがって、この段階の学習にはモデル全体における教師データは必要とされず、入力層と隠れ層との間の学習はそれ単独で進められることになります。実際の計算には、ベイズ推論などで用いられるサンプリングが用いられているようで、これもパーセプトロンとは異なる部分と言えるかもしれません。

投稿2019/01/15 15:41

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OOZAWA

2019/01/27 10:01 編集

> 本来的に教師あり学習であるパーセプトロンの学習に必要な特徴量を教師なし学習を用いて生成した特徴量を用いようというものです。(この制限付きボルツマンマシンを多層化するとディープビリーフネットワークになります) ★自分には長い間曖昧な処を明確にしていただきました! 『ディープビリーフネットワーク』は一種のクラスタリングと見なせますね!
OOZAWA

2019/01/27 12:19

追加質問をして申し訳ございませんが、 教師なしクラスタリングは今でも依然重要な役割を果たしているにも関わらず、当時あれほど注目されていた教師なしの「ディープビリーフネットワーク」はどうして今や陰でさえなくなっているのでしょうか。
R.Shigemori

2019/01/27 12:38

ディープビリーフネットワークで用いられる制限付きボルツマンマシンは、クラスタリングではありません。あえていうと、PCAのほうに近いかと思います。回答にも記載した通り、ディープビリーフネットワークの各層は、入力データからの特徴量の抽出を教師なし学習によって『事前に』実現しています。これは、ニューラルネットワークでいう畳み込み層やMaxPooling層などを重ねることによって実現している処理と概ね同じものです。
OOZAWA

2019/01/27 23:49 編集

そうですか。ご解説本当にありがとうございます。 そうしますと、概ねに、【ディープビリーフネットワークとは:統計的な原理で、多量のtraining sample(教師情報なし)から『主成分』のような情報を抽出し、それを『特徴データ』として出力する----ただし、分類段階に至らず】というような理解で大丈夫でしょうか。
R.Shigemori

2019/01/28 11:41

OKです。ただし、分類段階に至らずというのは、ニュアンスが違うと思います。ディープビリーフネットワークは、特徴量抽出のあとの続きにあたるパーセプトロンなどの識別モデルも含まれます。 元の質問が多層パーセプトロンとの相違点だったので、相違する部分にフォーカスしているだけのことです。よって、「ディープビリーフネットワークは分類段階に至らず」というのは一部分のことであって、全体としては識別モデルを学習していることになります
OOZAWA

2019/02/01 04:45

そうですか! すっきりしました。(さすが R.Shigemoriさん!) 改めてお礼を申し上げます。
guest

0

回答がつかないみたいなので。

ディープビリーフネットワークの『パラメーターの学習』と『パラメーターの更新』とは別々の意味で、

これはたぶん勘違いで、[Hinton+06]をざっと読むと、6章までがモデルをどのように構築するかの話をしていてここまではlearningという言葉だけがでていてtrainingという言葉がでてきません。
7章で実際MNISTに適用してみた、という話が始まってここからtrainingという言葉がでてきます。

理論の話をしているところでlearning(学習)、実装してMNISTデータセットで重みを獲得するところでtraining(訓練)と使い分けているだけなのでは? というのが数分ほど論文を眺めた印象です。


中間層の学習をどうやってるのか? というのはちゃんと論文を読んで数式も追わないと詳しいことはわかりませんが

  • 近似的な分布を導入して第1層を学習する(=どうやってか決めた近似分布を出力するように重みを更新する)
  • 1層目の学習を打ち切って1層目の重みを固定する。2層目が出力する近似分布を導入して2層目を学習する
  • 2層目の学習を打ち切って1層目と2層目の重みを固定する。3層目が出力する近似分布を導入して3層目を学習する
  • 全層を結合してデータを投入してバックプロパゲーションによって全層の重みを更新(ファインチューニング)する

という手順かと思います。というかそう理解しています。

途中の層が出す近似的な分布をどう決めたのかは[Hinton+06]を読みこむか、しっかり数式を出している解説を読んで数式の意味を理解するかしないといけないでしょう。

投稿2019/01/15 02:40

quickquip

総合スコア11038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OOZAWA

2019/01/15 07:02

素晴らしい解説有難うございます。 最初、タイトルに「ディープビリーフネットワーク」を入れましたが、 それはdeep learning の代表的な意味で使ったんで、本質的に「deep learningのトレーニング方法と多層パーセプトロンのそれと何が違うか」という質問にしたいのです。 因みに、この分野では通常「learning」=「training」と思います。 trainingはlearningのためですので、等価的になります。
quickquip

2019/01/15 07:25

大きい発展は、Adamのような最適化の発展と、Batch Normalization(が可能になるメモリ容量)かなーと思いますけど、結局はバックプロパゲーションですよね。そこは変わりないかと思います。learningとtrainingは無理に使い分ける必要はないと私も思います。
OOZAWA

2019/01/15 08:04

早速お返答ありがとうございます。 『Batch Normalization』ですか。これで、深層による誤差の逆向伝搬が消失や発散することは緩和されるのでしょうか。 (自分の感覚ではそうではないようです。たかが「ある程度」?)
quickquip

2019/01/15 08:28

NIPS2018 の論文 Understanding Batch Normalization (を日本語で解説した記事など)を読むのがいいかと思います。
quickquip

2019/01/15 09:04 編集

Batch Normalizationのオリジナル論文は2015です。この瞬間にも更新され続けている、現在進行形の分野であることを忘れないでください。「何が違うか」という質問に**本当の意味で**答えられる人はいませんよ。(1988年の時点でCNNの可能性を知る人がいなかったように)
OOZAWA

2019/01/15 10:20 編集

貴重なアドバイス有難うございます。 【NIPS2018 の論文 Understanding Batch Normalization】の実験によりますと、BNを利用する場合、 ① 学習レートを大きくしても発散しない; ② 収束に達するために所要のepoch数が少なくなる; ③ 学習精度が上がる 確かに多層NNには有利な方法ですね。 でも、Batch Normalizationは比較的に近年(2015年)の事で、2012年からか、deep learning はすでに層数の大きさによって誤差発散や消失問題を解決されたのではと思います。 「プリトレーニング」とか利用されていたのですね。 その後「プリトレーニング」もやめたけれども、『段階的なトレーニング法』が利用することになったと思います。 まさに質問の窓に貼ったリンク:http://yaju3d.hatenablog.jp/entry/2017/05/31/235745 はの『段階的なトレーニング法』に関する解釈かなと思います。 ところが、その解釈は非常に不明瞭ーーー書かれた方はもしかして専門家でもないか?
quickquip

2019/01/15 15:32

「プリトレーニング」と「段階的なトレーニング」はたぶん同じで、2006年前後ですね。 AdaGradやDropoutがでてきて、重みの初期値をどうしたらいいかみたいな議論がでてきて、大きなデータセットが整備されて、大規模クラスタ(CPU)が使えるようになってディープなCNNがうまくいったのが2011年前後。Deep Learningという言葉ができた。このころには「プリトレーニングは実は要らないみたい」となっていた。 2015年ぐらいでadamやBatch Normalizationがでてきて「重みの初期値にあまり気をつかわなくて大丈夫みたい」ということがわかってきて、今に至る。 と。 CNNにせよバックプロパゲーションにせよ道具立ては1980年代には全部そろっていて、それ以降の歴史は、多層ニューラルネットをバックプロパゲーションで学習させる時に、勾配消失/爆発をどうやって防ぐか? というのが常にテーマになっていた。 というような認識ですねー。
OOZAWA

2019/02/01 04:54

素晴らしいご解説本当にありがとうございました! quiquiさんの知見にとても感服です。 良い勉強になりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問