2021年6月30日水曜日

TensorFlow2(3)第4章ニューラルネット

寝ても起きてもテンソルテンソル!

いつものように入門書「TensorFlow2プログラミング実装ハンドブック」の通りに動かしています.わたしはPythonをほとんど知らないのでPythonのクラスのsourceを読んでも判らんので困っています.

第4章では初歩的なニューラルネットが登場します.W修正式の導出は第3章よりもややこしくなっています.ややこしくても原理は同じです.下図の出力に現れた誤差をWで偏微分しまくりです.

第4章は「ロジスティック回帰」という計算をニューラルネットでやる方法を説明しているのだけど、わたしはロジスティックとか回帰という言葉を知りません.統計用語でしょうか?
ともあれやろうとしていることはこうゆうことだと思います.
・N次元ベクトルデータXが無数にある
・Xをplotすると下図のように2つの山に分かれて分布しているとする
・Xに「赤」「青」という属性を与えて分類するのが最終目的
・その分類をニューラルネットの学習(勾配降下法)で最適化する
・Xの一部は教師データであり、赤青の正解を持っている

↓「勾配降下法」に依らずしても解く方法はあります.固有値ベクトルを求めて、固有値ベクトルを基底とする座標変換をして、原点より右側ならパターン赤、原点より左側ならパターン青、と分類するのでも構わないはずです.
そう考えるとこんな風に思います.
・ニューラルネットにベクトルXが入力され、Xの各要素に重みづけWが掛け算される
・Wもベクトルだから、Xに重みづけWを掛けるのは「XとWの内積」を計算するのと同じである
・Wはニューラルネットの学習が進むにつれて修正されてゆき最終的には固有値ベクトル(=基底)に収斂してゆくのだろう
・Wが基底ならば、XとWの内積は座標変換計算そのものである

もっとも、ニューラルネットには心が無いので、そんな手の込んだ計算をしているとは自覚してません.人間がWの修正式を適切に設計してニューラルネットに組み込んでやったから赤青判定が上手に働いてるだけです.
虚しいです.
ヒトがWの修正式を解いてあげて、ヒトがニューラルネットに実装してあげなくちゃいけません.ニューラルネットには自力で学習方法を模索する能力は無いんです.つまり機械学習とは「教師あり学習のオートメーション化」に過ぎません.虚しいです.

第4章の後半では、画像を靴・ズボン・シャツ・バッグ、、、などに分類するより複雑な例が解説されています.28x28pixの画像が784次元ベクトルXとしてニューラルネットへ入力されます.784次元空間に占めるズボンの配置を特定するようなWの修正式がヒトによってニューラルネットに組み込まれています.スケールは大きくても原理は赤青分類と同じです.虚しい.

次回はTensorFlow2のsourceを追ってみます.

かしこ

22 件のコメント:

  1. AIが自分で法則を見つけ出すのが最近話題のディープラーニングと呼ばれる手法です。
    違いはよくわからないけど、たくさんのデータをニューラルネットワークに食わせるとAIが
    たくさんのデータから傾向を勝手に導き出してくれる・・・・・・・・・・かな?
    データは基本画像データで、階層も従来の機械学習に比べると深いです。
    貼り付けられているニューラルネットワークは判定処理についてしか記述されていません。
    AIの学習はバックプロパゲーションを行って閾値を変更して行く事で正しい応えに近づいていきます。
    なぜ最近ディープラーニングによるAIが知性を持ってきたかというと、演算速度が向上したので
    大量のデータを処理する事ができるようになったからです。

    返信削除
    返信
    1. >バックプロパゲーションを行って閾値を変更して行く

      そのバックプロパゲーションの修正式は人間の仕込みによるものなんじゃないですか?

      修正式をも自己確立してくれたらAIすげーって思いますが.

      削除
  2. >AIが自分で法則を見つけ出す
    個人的には、ある意味こんなの「知性」でも何でもないと思っていて、
    要するにやっていることは、例えば上の図で、人間なら誰でも
    「このデータには、2つのグループがあるらしい」
    というのは「一瞬」でわかりますが、これは高々元データが「2次元」だからできることで、
    同じようなことを「もっと高次元」でやってる(上の例だと784次元)のが、イマドキの
    「AI」と、呼ばれてるものなんですよね。

    自分が最近すごいと思ったのは、いわゆる「GAN(敵対的生成ネットワーク)」というもので、
    それ以前のAI学習には、それこそ「天文学的」な量のデータを用意して、学習させなければいけなかったものを、その「データ生成」自体を「AI」に、させてしまう、という逆転の発想で、学習時間の短縮化をはかる、という技術です。
    (いわゆる「ディープフェイク」も、この辺の技術の応用。)

    >そのバックプロパゲーションの修正式は人間の仕込みによるものなんじゃないですか?
    まぁ、最後は「人間のわかるデータ」を、吐いてくれないと困るので、どこかで
    「人間が、仕込まざるを得ない」
    のは、仕方がないんじゃないでしょうか?
    ※とある研究で、あまりにも「自動化」をすすめすぎて、AI同士が
    「人間の理解できない言葉」を、作り出しそうになったので、慌てて研究を中止した、とかあったらしいですが・・・

    >修正式をも自己確立してくれたらAIすげーって思いますが
    実際は「修正式」と言っても「数字の羅列」であって、そのままでは人間は理解も修正もできない代物でしょう。
    (せいぜい「最終的な判別結果」くらいでしか、人間には理解できない。)
    なので、結局、人間は、
    「人間だと、『ああいうもの』を『こういうもの』と、理解してる」
    という、「データを与える」ことだけしか、できないんだと思います。

    -----
    実は、こういう「人工知能の系統」は、いくつか流れがあって、ここでいうAIは、
    以前にも言いましたが
    ・とりあえず、やってみる系
    ですね。昨今の「マシンパワーの増大」によって、パソコンレベルで実現可能になったものですね。
    あと、高次元の評価関数とかという発想は、統計学(多重解析とか。どちらかというと、推計学に近い方面)の発達も、寄与してるんじゃないかと思います。
    (でも、そうは言っても、やってることって「ある特定の評価関数の微分値が低いところ(ピークかボトム)」を、何らかの形で発見してるだけ、とも言えなくはない。)

    その他に、「REDUCE」の末裔みたいなの(いわゆる数式処理)もあって、例えばCoqとか、
    https://ja.wikipedia.org/wiki/Coq
    ※このソフトを使って「四色問題」の、照明とかできる
    というのもあります。
    (こっちは、あんまり話題になってませんが。)

    返信削除
    返信
    1. >こんなの「知性」でも何でもないと思っていて

      その通りですね.処理数が多いってだけで.最適化マシーンでしかない.

      削除
    2. 最適化マシーンの識別能は高次元ベクトルが直交しているかどうかに帰着するんじゃないかなぁ.

      愛や情念を理解する日は来るのか?

      削除
    3. 四色問題なつかしいです.15年ぐらい前でしたか、証明されたのは.

      たしか、場合分けがこれで全部だと証明されて、各場合の証明をCPU powerで総当たりしたんですよね.

      削除
    4. >最適化マシーンの識別能は高次元ベクトルが直交しているかどうかに帰着
      あるいは、元データを、
      「何次元まで、分解できるか?」
      でしょうか。
      ※誤解を恐れず平たく言うと、
      元データが「2次元」なら、「2次」以上の係数は、本来は「ゼロ」になる
      ハズなので、データをどんどん分解していって、係数が「ゼロ」の項が「発見」された時点で、
      そのデータの「次元」が決まるような気がします。
      ※正確には、「テンソル」に、分解してるハズなので、「次」ジャナクテ「階」なのでしょうか・・・?
      ※まぁ、実データは「ノイズだらけ」なので、「余剰次元」なんか、いくらでも沸いてきそうですが・・・

      削除
    5. >愛や情念を理解する日は来るのか?
      「愛」は、7次元です(7だったかどうかは、うろ覚え)
      って、言ってた、宗教か何かがあったような・・・

      どこかのコンタクティー(宇宙人と会話ができる人)が、
      ・地球上空の、見えない次元にいる宇宙船に乗ってる宇宙人は、
      「地球人の進化レベル(今、何次元か)」
      を、測れる「機械」を、持っている
      って、言ってましたね。(どういう原理なんだろう?と、いつも思っていた。)

      削除
    6. >元データが「2次元」なら、「2次」以上の係数は、本来は「ゼロ」になる

      スパース処理がそんな感じの次元縮退処理みたいな感じです、よくわからんけどw

      削除
    7. >地球人の進化レベル

      アセンションですねー.5次元へ上昇でしたっけ? ニューエイジ

      削除
  3. >自分が最近すごいと思ったのは、いわゆる「GAN(敵対的生成ネットワーク)」というもので、
    ここまで今はやっているんですか?

    自分は将棋とか、チェスの学習とその結果がすごいと思っていました。
    AI同士を戦わせて学習させる。高速学習で短時間で進化して行く。
    条件範囲を固定化すれば後はAIが学習してくれる・・・と言えませんかね?

    返信削除
    返信
    1. ゲームのNPC同士で競わせてチート戦士AIをつくるとかやってもらいたいです.

      削除
    2. >自分は将棋とか、チェスの学習とその結果がすごい
      その手のゲームは、結局は
      「二人零和有限確定完全情報ゲーム」
      に、過ぎないので、
      >AI同士を戦わせて学習させる。高速学習で短時間で進化して行く。
      と、言っても、その
      「ゲームマップ」
      を、高速で塗りつぶしているだけに過ぎません。
      ※そうは言っても、マップが広大な為に、未だに
      「全マップが探索」
      されている訳ではありません。
      ・これらの簡易版、例えば「動物将棋」などは、既に「全マップが探索」されているので、「必勝法」が、確定しています。

      「GAN」は、誤解を恐れず平たく言うと、
      「禅問答のAI版」
      とでもいうのでしょうか。
      ・実際、モデルは「生徒」役と、「教師」役に分かれてるし

      削除
    3. >「禅問答のAI版」
      暗黒面に落ちるとやばいですね。

      AIの実用化は少しずつ進んでいますが、まだまだ簡単な部分の置き換えですね。
      兵器にAIを搭載するのはやめて欲しいものです。
      ターミネーター怖い。

      削除
    4. >暗黒面に落ちるとやばいですね。
      すでに、Googleの「​DeepDream」は、その域に達してるんじゃないかと

      削除
  4. >AIが自分で法則を見つけ出す
    今思い出したのですが、昔「データマイニング」関連の仕事をしてたことがあって、
    そこで何をやってたかというと、例えば、
    ・大量の「保険会社の契約データ」から、契約者の特徴(傾向)を
    「プログラムが、勝手に」
    検出する、というものです。もっと、具体的な例を出すと、
    ソフトに「データを与える」だけで、例えば、
    ・年収800万円以上の人は、禿が多い
    みたいな結果が「勝手に」出てくるので、それを元に、
    「かつら(アデランスみたいなの)のDMを、発送する」システム
    みたいなのを、やってました。

    ※なぜか、当時はこれは「AI」とは、言われてませんでしたね。
    やってることは、同じはずなんですが。この類のシステムは、結構売れてたはずなので、
    「なんでこんなところから、DM来るの?」
    みたいなところは、導入してたのかもしれません。

    ※まぁでも、内部の仕組みは、今の「ニューラルネットワーク」ではなかったはず
    (どちらかというと、多変量解析に近い)なので、やっぱり「別物」かもしれません

    返信削除
    返信
    1. >なぜか、当時はこれは「AI」とは、言われてませんでした

      AIと統計的手法は計算過程が違うだけで、結果は同じはずですからねー

      その頃に株式売買AIを作ってたらいまごろ大金持ちに.(甘いか)

      削除
    2. とはいえ、統計的手法よりAI的手法が現在好まれている理由は何だろうと思うんです.

      全然推測ですが、ニューラルネットだと、上で書かれた「不要次元縮退」を実装しやすいので計算量が爆発しないとかいう理由があるのかなと思っていたりします.

      削除
    3. >「不要次元縮退」
      ゲーム理論で言うところの、
      「枝刈り(明らかに、この先負けるとわかったときは『それ以上、探索しない』という処理)」
      みたいなものでしょうか?
      ※確かに「統計的手法」では、こういう発想はないので「すべての組み合わせ」を、探索するんじゃないかと思う。
      なので、上の例だと「年収800万円以上の人は、禿が多い」を、得るために、
      「数日間、計算しっぱなし」とか、ありましたね。
      ・今のAIは、もっと短時間でそこまで到達しそうな気がする。

      削除
    4. 統計処理に数日間とは...

      それで得られた結果が「猫を飼っている人は犬を飼っていない」とかだったら落胆激しくて責任取って身投げじゃw

      削除
    5. >それで得られた結果が「猫を飼っている人は犬を飼っていない」とかだったら落胆激しくて
      いや、さすがに、
      「結果がそれだけで、数日」
      は、無いので
      (たいがい、「複数の結果」が、得られるので、それを「取捨選択」して、
      条件を厳しくして(上の例だと「都内では」とかの、条件を付ける)
      「必要なだけ、精度を上げていく」みたいなことやってました。
      なので、以前言った「サーチャー」じゃないけど、やはり、
      「専任のオペレータ」みたいなのが、必要でした。)
      まったくの無駄、ということは、ありませんでしたが。
      ※ただ、データや条件が悪いと、
      「なんだこりゃ?」みたいな結果が、よく出て来てたのも事実。
      (なので、なるべく「そういうのが出ないようにする」のが、各メーカの売りになってた。)
      ※「マイニング」というくらいで、やはり「一発当てる」みたいな要素があったことも事実ですが。

      まぁ、過去にこういうのがあったから、イマドキのAIは、
      ・オペレータ不要
      ・結果がすぐに出る
      みたいなのを、重視してるんだろうな、と思います。

      削除
    6. >さすがに「結果がそれだけで数日」は、無いので

      よかったー.

      >「そういうのが出ないようにする」

      文学AIとか一般常識AIが欲しいですが難しいでしょうなぁ

      削除