
ニューラルネットワークとは
AIネットワークを色々調べてるんですが、AIがあまり理解できてないのでわからないことだらけなんですよね。
All Reduceやら勾配が云々といわれてもイメージが全くわかずうーんとなっちゃうんですよね。
というわけで、そのうち触ることになるであろうAIネットワークについて疑問に思ったところからブログ書いてみようかなと思いました。
ニューラルネットワークが必要な理由
プログラムってよくできてますよね。
基本的に1回作ってしまえば、100%同じ事ができちゃいますよね。
これのロジックってIF文等で条件を明確化させてるからなんですよね。
IFで以下のような100GのIFが来たらXXXX部分の変数に特定の値を入れてというように、場合わけが明確にできていることにより、プログラムで意図したことができますよね。
interface HundredGigE XXXX
でも、前提条件が複数あったり見えなかったりするようなルールが決めれない場合はどうでしょうか?
例えば、英語から日本語への翻訳をプログラムでルール化してみましょう。
I eat an Orange.
私はオレンジを食べる。
これはいけそうですよね。
でも、以下はどうでしょうか?
I run a company.
私は会社を走る。
単語の意味を並べただけのルールベースだとよくわからない翻訳になっちゃいますよね。
私は会社を経営しているにしてほしいんですが・・・こんなのIF文で書けないですよね。
場合わけが多すぎて書ききれないですよねこれ。。。
ということで、単純なルールベースでは対応できない複雑な問題を解決するために考えられたのがニューラルネットワークです。
入力層、隠れ層、出力層?
ニューラルネットワークは人間の脳の仕組みを参考にして作られているのは有名な話ですよね。
神経細胞のニューロンを人工的なニューロンとして見立てて、入力情報を受け取って何か計算して次の層に送ることをしてます。
これを複数つなげることによって、入力でいろんな特徴や曖昧な表現とかも人間と同じように出力、処理できるようになります。
これを入力層、隠れ層、出力層というんですが・・・いつも隠れ層って何よって思っちゃうんですよね。
そもそもどんな時に必要なんだろって感じですよね。
例えば、単純なルールで直線で分類できる場合は隠れ層いらないですよね。
0と1とか、10以上とか、直線を引けば分類できる複雑な要素がない場合は隠れ層とかは不要です。
隠れ層が必要な場合は、データの分類が複雑な場合です。
例えば、画像認識で猫と犬を分けようとすると・・・比較要素が多すぎて単純なルールで分類できません。
いろんな画像を入力される中で・・・
・1層目の隠れ層:毛並みを学習
・2層目の隠れ層:顔のパーツを学習
・3層目の隠れ層:全体の構造・・・
というような形で犬と猫を分類できるような特徴の中で何を重要視するかという重みを調整していって判断していきます。
ここから先は

Segment Routing
このマガジンは主にSegment Routingについて書いています。 Segment Routingがよく分からんけど仕事で使うという…
この記事が気に入ったらチップで応援してみませんか?