見るワードをまとめました機械学習を学んでいて「なんだこの言葉...」となったことはありませんか?訳も分からず得体の知れないものを扱うのはよくありませんが、いちいち単語を調べるのはとても手間がかかる...。ディープラーニング(深層学習)」でよく見る単語をいくつかまとめてみました。大枠から解説していき、段々と小さなカテゴリに進むように解説していきます。本記事で紹介する単語は、全体像をなんとなく知ることができる程度の解説しかしていません。そのため、さらに詳しく知りたい方は、本ブログの他の記事を参考にしてみて下さいね。人工知能と機械学習そもそも、人工知能と機械学習の違いは何でしょうか?どちらもよく聞くワードですが、実は、この2つの意味は全くの別物です。Intelligence)」から説明します。人工知能とは、「人間の振る舞い(の一部)を再現したソフトウェア」を指します。人工知能は「モノ」です。工場で製品に欠陥がないかを画像判別するロボットには「人工知能が搭載されている」と言えます。(ML)一方、機械学習は「人工知能を作るための技術」を指します。機械学習は「手段」です。機械学習にも「たくさんの手法」があります。このように、「人工知能」と「機械学習」という2つのワードには明確な違いがある事を覚えておきましょう。機械学習の大まかな種類まずは、機械学習の大まかな分類を解説したいと思います。機械学習といっても、多くの環境に合った学習法が提案されていますが、それらは人工知能分野において共通して覚えておかなければなりません。機械学習は、大きく分けて「教師あり学習」と「教師なし学習」に分類されます。教師なし学習:教師ラベルを使わない学習と覚えておきましょう。Learning教師あり学習は、各学習データと正解ラベル(教師ラベル)がペアになっており、その2つの情報を両方使う学習を指します。「ネコの画像」を与えた場合、「その画像はネコだよ」と一緒に教えてあげるイメージです。教師あり学習にも多くの分類がありますが、それは、また後ほど解説します。Learning教師なし学習という名前からわかるかもしれませんが、学習データのみでの学習を指します。教師ラベルを与えない学習とも言えます。「どうやって学習できるのかイメージできない」という方もいるかと思います。この辺りも、後ほど例を用いて解説していきたいと思います。機械学習のタスクについて機械学習には、多くのタスクがあります。これも、最初に理解しておきましょう。Classificationクラス分類は、みなさんが一番想像しやすい人工知能のタスクです。その名の通り、クラスを分類するタスクで、入力された情報がどのクラスに分類されるかをモデルは出力します。したがって、基本的に教師信号を必要とし、ほとんどが教師あり学習になってしまいます。道路交通標識を分類するモデルならば、入力された標識が「一時停止」なのか「速度制限」なのかを識別する、といった形です。Clusteringクラスタリングは名前からクラス分類と混同しやすいですが、全く違うタスクを意味します。クラスタリングはクラス分類と違い、教師信号は使いません。クラスタリングは与えられたデータ集合から、「似通った部分集合を見つけいくつかのグループに分ける」というものです。この部分集合をクラスター(cluster)と呼びます。Regression回帰とは、端的にいうと与えられたデータから近似関数を求めることを指します。簡単に言えば、特徴空間に線を引くことを言います。Regression)が分かりやすいと思います。以下の図のように、散らばった学習データから近い線形関数を求めます。この線形回帰では、与えられたデータがどのような関数から得られたものなのかを推測することができます。これは、統計学でも、よく使われていますね。人工知能のモデル次に、人工知能のモデルを紹介します。人工知能と一重に言っても、モデルはたくさんありますので、一つずつ大枠を紹介していきたいと思います。(NN)ニューラルネットワークは、おそらく最もメジャーなモデルだと思います。ニューラルネットワークはその名の通り、動物の「神経回路網」を模倣した人工知能です。Learning強化学習とは、あるエージェント(例えばロボット)に対して現在の環境が入力として入り、それに対してどのように行動するかを決定するようなモデルです。学習の仕方としては、「良い環境にたどり着いたら報酬を与え、悪い環境にたどりついたら罰則を与える」ことをします。迷路を解くモデルを作るとします。壁には「罰則」ゴールやその付近には、あらかじめ多くの報酬が用意されていて、逆に壁には罰則を用意しておきます。エージェントは、スタート位置から最初はランダムに行動し、壁にめり込んでしまったら「罰則」、ゴールに偶然たどり着けたら「報酬」が与えられます。すると、エージェントは、今いる環境(座標)ではどのように行動したら報酬がたくさんもらえるかを学習していきます。Tree決定木も、しばしば機械学習では取り上げられるモデルです。最初から例を挙げて説明しますが、入力されるデータは例えば「明日の天気は曇りで気温は20°C、降水確率は20%のとき、明日ゴルフはすべきか?」のようなイメージです。過去のデータから、どの要因が「ゴルフができる」に、より直結的かどうかを考慮して、その要因を優先的に評価するような木を作ります。過去のデータから「降水確率が30%以上のときにゴルフは80%やっていない」という情報と「天気が雨の時100%ゴルフをやっていない」という情報だと、明らかに後者の方が一気にデータを捌くことができそうです。このような評価を、数学的に評価しながら決定木を作っていきます。前章では、ニューラルネットワークを紹介しました。ニューラルネットワークには、たくさんの用語がありますので、ひとつひとつ簡単に紹介していきます。Layer全結合層とは、その名の通り前層と後層のニューロンが全て接続されている層のことを言います。呼び方は、実は、たくさんあります。(kerasなどで使われる)上記のどれも全結合層を指します。Layer畳み込み層は画像処理や、自然言語処理などでよく見られる処理層で、役割は周辺情報を考慮した特徴抽出です。画像処理であれば、注目ピクセルの周囲1ピクセル、計3×3の情報を取り込むことによって位置情報や周囲のピクセルとの関係性を特徴として捉えることができます。自然言語処理であれば注目単語の前後に存在する単語も取り込むことによって、より文解析が高度にできるようになります。map)と呼ばれます。Layerプーリング層は「層」と言っていますが、実際に層数に数えられることはほとんどありません。何をしているかというと、画像サイズや畳み込み層によって出来た特徴マップのサイズを削減する役割を持ちます。削減するだけなので、重みパラメータはありません。プーリング層では、畳み込み層と同じようにフィルタが決められています。Poolingであれば、そのフィルタが当てられている中から大きい値のみを抽出します。3×3のプーリングであれば、サイズは1/9になるわけですね。このプーリングのメリットは、入力画像のズレに強くなることもあります。大きい値が多少ズレても、抽出される値はその大きい値なので結果に変わりはない、ということです。Dropoutドロップアウトも最近ではよく使われるようになってきました。ドロップアウトの最大の目的は、過学習を抑制することです。ニューラルネットワークは複雑になればなるほど、訓練データに対して過剰に適合する高等関数になってしまいます。そこで学習時にネットワーク中間層のニューロンをランダムに非活性化させることで、わざと訓練データに対して学習を難しくさせ、汎化性能をあげようとしたものがドロップアウトなのです。やりすぎると訓練精度も落ちてしまうので、不活性率をいろいろと試す必要があります。DNNディープニューラルネットワークとは、その名の通り、深い層を持ったニューラルネットワークのことを指します。どの程度深ければ良いのか、というのは定まっておらず、一般的に畳み込み層を複数含んだネットワークを「ディープ」と呼ぶことが多いです。Learning)と呼ばれます。(DQN)などの強化学習分野においても深層学習という言葉は使われるようです。有名なディープニューラルネットワークは、ResNetやAlexNet、VGG16などです。少なくとも10層、多くて50層や100層にもなるニューラルネットワークが提案されていますが、特に対策せずに層を深くしすぎると勾配消失問題に陥り、逆に精度が悪くなってしまうことがあります。その点、ResNetは、それを克服しており、実験では1000層まで学習が可能という結果があります。(BP)誤差逆伝播学手法(通称BPまたはバックプロパゲーション)は、1986年に提案された古い手法にも関わらず今もなお、多くの人工知能技術を支えている超強力な学習法です。その名の通り、ネットワークの出力情報と教師情報との誤差を計算し、その誤差を小さくするようにその誤差情報を逆伝播させていきます。基本的に、ニューラルネットワークベースのモデルで使われます。(SVM)サポートベクタマシンも、しばしば強力な分類学習手法として用いられます。これも特徴空間に決定境界を引く手法なのですが、たとえ線形分離不可能な問題でも、線形分離可能な次元へ写像してしまうことで決定境界を計算することができます。境界面の引き方は単純で、違うラベルで一番近いデータに対し、マージンを最大化するように、ちょうど真ん中に決定境界を引くというもの。SVMは、未知のデータに強いと一般的に言われています。さいごに今回は、人工知能や機械学習分野でよく聞くワードについて、簡単ではありますが解説をしてみました。社長と一杯飲みながらお話してみたい方はこちらミツオカフリーランスエンジニア様の募集はこちらにゃんこ師匠その他、お問い合わせはこちらミツオカお気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!一緒に働いてくれる仲間を募集しております!ライトコードでは、仲間を募集しております!当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。rightcodeエンジニア大募集中!私たちライトコードでは、エンジニアを募集しております。私服大歓迎のカジュアルな職場なので、お気軽にご応募ください!また、フリーエンジニアの方も募集しております。