• 締切済み

ニューラルネットワークとAI

まさに今、書籍でもマスコミでもなんでもこの方面が賑やかのように見えます。 実際に本を読んでみてそれを実行するという面ではそれほどハードルが高くないように思えます(基礎理論は軽い線形代数と微積を少々)(これを考え付いた人はエライですが)。システムの枠組みがあってデータを学習させてシステムの変数を同定していくということですかね。そのため逆にいうと独自性を出すところとか頭1つ他よりも上に行くのは難しいだろうと思いますが、私の立場は単純にユーザです。言われた通りのことをやってみるってだけのことです。そういう立場で見ると、入力層とか出力層は問題設定で決まらざるを得ないのですが、中間層のノード数、層数はどうやって決めていくのかな?という疑問があります。教科書のサンプル例では中間層が1層で5ノードとかの事例が示されています。1層5ノードとなっているところを4層で各層10ノードとかに設定したとしてもプログラム自体は特に問題なく動くように思えます。今どきのコンピュータだと苦も無く計算してしまいそうです。ただし、そうなると学習させるデータがそれに見合って多くないと意味がないかもしれませんが。中間層の層数・ノード数の決め方に何か指標があるでしょうか。未知の変数が多くなるので十分学習すれば複雑な問題に対応できるのかもしれませんが、そこまでしなくていいだろうというような感じなのでしょうか。 また、AIって結局ニューラルネットワークのことだ、と思っていいのでしょうか。多分、ビッグデータがあるから皆出来るようになったんだなと思いますが。

みんなの回答

  • nagata2017
  • ベストアンサー率33% (6200/18494)
回答No.2

AIって結局ニューラルネットワークのことだ AIって結局アルゴリズムのことだ 意味は似たようなものかな。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

今勉強中の素人ですが、お許しください。 まず、中間層のノード数、層数は、多ければ良いわけでは無いようです。一つ目は、勾配消失問題です。モデルの学習において最適解を求めるために各パラメータの勾配を求める必要が有りますが、層数などを増やしすぎると勾配が消えてしまいます。データの変化に対する変数の変化がゼロになると言うことです。これが中間層を増やしたときの問題点の一つ目です。 もう一つの問題は、過剰適合です。例えば、仮に本来の分布がy=x^2のようなグラフで表せるとします。仮にこれを過剰な中間層を使って、実データで学習すると当然より高次の関数型の方が学習結果は良くなります。しかし、真のフィッティングからはずれていきます。訓練データでは予測がうまくいって、テストデータではうまくいかないというのは過剰適合の可能性が高いです。 では、どれくらいのサイズの中間層が最適なのかと言う事ですが、簡単には決められないようです。データポイント、「真の」適応関数の次数によって違うようで、結局試行錯誤かなと理解しています。 さて、AIはニューラルネットワークかという点ですが、昨年くらいに日本のトップクラスの研究者に来て頂いて研究会をした感じでは、そうではないようです。ニューラルネットワーク、ディープラーニングが最適の結果を出す適応事例は少ないと言われていたトップ研究者がおられます。様々なアルゴリズムのAIが提案されていて、その方が基本的には適応範囲が広いようでした。ただ、ディープラーニングは、ある意味使いやすい環境が出ており、一番多くの人が使っているので、当分はこのブームは続くように思います。 ディープラーニングに関しては、今多くの実用の現場ではどうやって手間を掛けずにビッグデータを用意するのかというのが一番の問題になっています。手入力で数十万件を入力するのは実際的では無いので、自動化する必要が有り、その自動化の作業がまた大変というところです。

skmsk1941093
質問者

お礼

回答ありがとうございました。ディープラーニング・機械学習・ニューラルネットワークが私の中で混同しているようです。そのような表題のテキストを見ると、結局ニューラルネットワークの説明ばかりになっているように思いました。勾配消失や過剰適合についてはテキスト書いてあるようですが、十分理解はしておりませんが、フィーリングはわかります。 層数、ノード数(パーセプトロン?)の数をいろいろ変えるところまでもプログラミングの内側に入れてあれこれやってみるという力わざもあるのかなと思ったりしますが。 流行を追うのは良し悪しだと思いますが、訓練というかボケ封じのために少し追ってみようかと思っています。ユーザとしてですが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ニューラルネットワーク

    0~9までの7セグメントディスプレイで表す数字を識別するニューラルネットワークを作成したいのですがなかなかわからないので質問したい所存です。 7セグメントを1~7のノードに割り振り中間層に10個のノード8~17でつなぎ出力するノードを18~27として18から0~9まで出力するようにしたいのですが、やり方としてまず、 27個のノードの結合関係を隣接行列で表す。 つぎに内部状態と重みのとる値の範囲を示す。 そしてそのニューラルネットワークに入力を与え、出力を計算する手順を説明するとのことなのですが。 よろしければアドバイス等お願いいたします。

  • ニューラルネットワークについて

    最近ニューラルネットについて勉強しています。 特に準ニュートン法での学習について考えています。 ある日手に入れたデータで学習したところ、誤差があまり小さくならなかったので(何度も学習を試し、ノイズ混入も試したので、ローカルミニマムに引っかかっている感じではないと思います)、中間層のユニット数を莫大に大きくしました(最初試したときの100倍以上です)。 しかし誤差が全然変らない、という結果が出ました。 このように、自由度を上げても学習しきらないことってあるんでしょうか。もしあるのなら、その原因は何でしょうか。また、学習しない原因となっている邪魔なデータを探す方法ってあるのでしょうか(出来れば視覚的に見えると嬉しいです)。 宜しくお願い致します。

  • 3層構造 階層型ニューラルネットワークについて

    入力層、中間層、出力層の3層構造からなる基本的な階層型ニューラルネットワークの結合荷重値はどのようにして与えられるのでしょうか? また、中間層のニューロンの数はどのようにして決められるのでしょうか?入力層のニューロンの数と相関があるのでしょうか?中間層が多層の場合、1層のニューロンの数はみな同じですか?

  • 4階層型ニューラルネット(逆伝播法)

     現在、実験のために4階層型のニューラルネットを作成しているのですが上手く収束しません。使用は入力層、中間層2層、出力層の計4層です。  各変数はo1が入力ユニットからの出力、o2とo3は中間層ユニットの出力、o4が出力層ユニットの出力です。w43,w32,w21はそれぞれの結合強度です。biasはそのままバイアスです。変数の前にdがついてるものは変化を表したものです。etaは学習率、alphaは慣性項係数です。この値と中間層ユニット数を変更してみても収束しませんでした。  問題があるのは逆伝播法での結合強度の更新です。以下にそのルーチンを示しますのでお気づきの点がありましたらお願いします。特に問題があるのは中間層~入力層間についてだと思うのですが。。  ご意見お願いします。また、よろしければ4層以上のニューラルネットについてのサイトがあればお願いします。

  • ニューラルネットワークの入力層の選択

    ニューラルネットワークで入力層・中間層・出力層があるわけですが、入力層をインプットとして出力層を推定するモデリングを考えていくのが基本だろうと思います。 そこで質問なのですが、出力層というのアウトプットとして欲しいものであり、入力層はそれを説明するに足りる情報だとみなすことができるように思います。という風に考えると入力層は説明には足りない数だとなっていた場合、十分学習した後、アウトプットはどのように変化していくものでしょうか。不安定とか発散とかそういう結果になるのでしょうか。また、正しくモデリングするためには入力層はある程度の数が必要ということになるのでしょうか。つまり必要な数よりも少ないとダメだけど、少々多いのは構わないということになるのでしょうか。それともモデリングの対象ごとにいろいろ違うということになるものでしょうか。また、入力層として必要なデータは理屈で考えて因果関係が説明できるものから選ぶというのが基本なのでしょうか。”風が吹けば桶屋が儲かる”ということで、風のデータは入力層に必ず含め、桶屋の収入をアウトプットとするという風にする、ということですが。 よろしくお願いします。

  • 4階層型ニューラルネットワークで学習(準ニュートン法)

    準ニュートン法の学習方法の中に出てくるヘッセ行列の逆行列の近似行列Hについてなんですが、よく最適化についての本に更新式が載っているのを見るのですけど、(DFP法やBFGS法)アルゴリズムの中に探索方向の計算についてあるんですが、4層のニューラルネットに準ニュートン法を導入すると、それぞれ入力層-中間層1と中間層1-中間層2と中間層2-出力層の3つの所でそれぞれ重みwや微分式∇f(w)の更新を行うと思うのですが、このときにHをそれぞれの層間で探索方向を用いて次のHを更新するみたいですが、このHはよく初期値として単位行列を設定しているようなのですが、これはそれぞれの層のユニット数を同じにする必要とかあるのでしょうか?例えば中間1-2層のユニット数は10個とか

  • 階層ニューラルネットワークにおける入出力層の数について

    ある問題を解くのに,入力層5個,出力層10個の階層ニューラルネットワークを用いています.このように入力層よりも出力層の方が多くても正しく計算されるのでしょうか?また,中間層の決定はどのように行うのが一番いいのでしょうか?よろしくお願いいたします.

  • 階層型ニューラルネットワークについて

    大学から出された課題です。 階層型ニューラルネットワークについて教えてもらえませんか? 詳細があるサイトなどあったら教えてほしいのですが。。 最終的に、 学習データ数Pの時刻tにおける重みの変化量を数式で表し、解説しなければなりません。 よろしくお願い致しますm(_ _)m

  • ネットワークの通信について

    TCP/IPプロトコルではあるノードのアプリケーション層から トランスポート層、インターネット層、 ネットワークインターフェース層を経て、 他のノードのネットワークインターフェース層、 インターネット層、トランスポート層、 アプリケーション層とデータが流れていくと理解しています。 (この理解自体が間違っているかもしれませんが・・・) そのとき、各層の通信機器として、ゲートウェイ、ルータ、 ブリッジ、ハブ、リピータなどがありますが、 上記の私の理解ではノード間はネットワークインターフェース層 しか繋がっていないのでは?と至ってしまい、 トランスポート間の通信にゲートウェイ、 インターネット層にルータ、 ネットワークインターフェース層にハブやリピータを使うという意味が わかりません。 データの流れ及び各層を繋ぐ必要性を どなたか教えていただけないでしょうか?

  • ニューラルネットワークの正規化されたデータを元に戻すには

    ニューラルネットワークで正規化し、パラメータを求めた後、パラメータの正規化をもとに戻したいのですが、方法が分かりません。 以下は、私がやっている途中を示します。 たとえば、データの入力が年齢と身長、出力が体重のデータがあるとします。 年齢x1  身長x2   体重y 21    160     55 24    172     63 私は、正規化するために  x1’=(x1-ave(x1))/std(x1)  x2’=(x2-ave(x2))/std(x2)  y’=(y-ave(y))/std(y) として正規化しました。aveは平均、stdは標準偏差 ニューラルネットとしては、次の式で表される三層パーセプトロンを利用しています。  f=W0+Σ{Wj*hj} Σはj=1からJまで  (中間層-出力層)  hj=sigmoid(Σ{Wjk*xk’}) Σはk=1,2  (入力層-中間層)  Error=(f-y’)*(f-y’) 入力層のバイアスはなしで、中間層のバイアスはありを考えています。 活性化関数は、中間層がシグモイド関数、出力層が線形関数です。 正規化したxとyに対して各wを求めるプログラムは作れたのですが、 ここからどうやってwの正規化を解除すればよいか分かりません。 正規化する方法は載っているサイトはいくつかあるのですが、解除する 方法が載っているのは見つかりませんでした。 回答よろしくお願いします。

このQ&Aのポイント
  • デグーの食欲不振や落ち着きのなさについて相談です。
  • 4年前から飼っているデグーが、最近ご飯を食べない時期があり、運動も中途半端で落ち着きがない状態です。
  • デグーが鳴いたりブルブルとして落ち着きがないような感じになることもあり、手にはげているところもあって心配です。病院に連れて行くべきかどうか教えてほしいです。
回答を見る