ディープラーニングについてわかりやすく解説

はじめに

AIとはArtificial Intelligent の略で、日本語では人工知能と呼ばれています。1950年代頃に提唱され始め、これまで何回かブームを経て、現在第3次AIブームを迎えており、いよいよ社会実装の期待が高まっています。 特に最近「ディープラーニング(深層学習)」という言葉を耳にすることが多いかと思います。この技術は画像認識の分野で近年非常に発達しており、一部では人間の画像認識能力を上回るソフトウェアが開発されています。

また、この画像認識技術を導入し、世界中で最も激しい競争が繰り広がられているのが「車の自動運転」です。この技術を開発する企業は世界中で数知れません、グーグルやトヨタ自動車といったメジャー企業が莫大な資金を投入して開発を進めています。ただ、車の自動運転については、社会実装に際して技術以外の課題が多くあります。例えば法規制の問題、事故が起こった場合の責任の所在などなど。この技術は段階を踏みながら徐々に社会に浸透していくものと考えられます。

そうはいっても、「ディープラーニングとは何か?」と聞かれても、まだ漠然としたイメージしか浮かばない方が多いのではないでしょうか? 今回は、第5次AIブームをけん引する「ディープラーニング技術」について、できるだけわかりやすく解説します。

ディープラーニングってなに?

ディープラーニングとはコンピュータが人間の認知能力に頼らずに多くのデータら特徴を抽出する技術のことです。また、AI、機械学習というものとの関係性は下の図の通りです。ディープラーニング(深層学習)はマシンラーニング(機械学習)のなかの一つのカテゴリです。そしてそのマシンラーニングはAI(人工知能)のなかの一つのカテゴリとなっています。

ディープラーニングについての説明 ここからディープラーニングについてできるだけわかりやすく説明します。ディープラーニングはニューラルネットワーク(Neural Network=NN)という機械学習の手法をベースにして構築されています。

このニューラルネットワークは人間の脳のニューロン(神経細胞)の構造を参考にして考えられました。

ニューロンは情報を電気信号としてほかのニューロンに伝達します。ニューロンとニューロンはシナプスと呼ばれる突起を経由して、情報を伝達します。この時、シナプス同士のつながりの強さによって、情報の伝わりやすさが変わるという性質を持っており、この性質をプログラムで具現化したものがニューラルネットワークというものです。

ニューラルネットワークではこの情報伝達プロセスを”重み”や“バイアス”などの数学的な考えを導入してニューロンの仕組みを模倣しています。 ニューラルネットワークは「入力層」→「中間層」→「出力層」で情報の伝達を行います。要素ごとの計算は単純な情報処理です。

実際に処理したい情報の処理に対応するために中間層の層数や各層の要素数を増やして、複雑な情報に対応した表現力を得られるようにしたのがディープニューラルネットワーク(Deep Neural Network: DNN)です。ディープラーニングはこのDNNを使うことで飛躍的な分析精度の向上を実現しました。

ディープラーニング(深層学習)は層を増やし、複雑さに対応したおかげで分析精度が飛躍を遂げているのが特徴なのです。 ディープラーニングのバリエーション

以上がDNNを使ったディープラーニングの基本的ご説明でした。数学的。プログラミングの知識がなくても理解していただけけるようにご説明しました。

 

ディープラーニングといっても、用途に応じていくつか異なる学習方法が開発されていますので、次はそのバリエーションについてご紹介します。 ディープニューラルネットワークをベースに大きく発展した技術は以下の4つです。

リカレントニューラルネットワーク(RNN)、畳み込みニューラルネットワーク(CNN)、生成的敵対ネットワーク(GAN)そしてエンコーダです。これらの四つの技術がおのおの異なった分野にマッチしています。

さらに、これらを組み合わせることでも大きな成果が得られています。まるで人間の神経細胞が具現化して、適した分野に生き残っているようです。

次にこれらの四つの技術について、できるだけわかりやすくご説明します。

畳み込みネットワーク (CNN)

畳み込みネットワーク (Convolutional Neural Network)は画像認識に特化した技術です。ディープラーニングの中で最も研究開発が進んでおり、画像認識、物体検出や領域推定といった画像を扱う分野でとても活発に利用されています。

この技術で特徴的なことは、処理したい画像の特徴をどうやってデータとして取り込むかということです。従来のニューラルネットワークでは、画像は処理の際に画像特徴情報の大部分を失ってしまいました。しかし、CNNでは画像情報をそのまま二次元の情報として処理できるようになりました。 畳み込みとは、二項演算という計算の一方法のことです。CNNでは画像情報から “特徴”を抽出する操作のことを畳み込みと呼びます。言います。CNNは画像処理で不可欠なものです。

リカレントニューラルネットワーク(RNN)

リカレントニューラルネットワーク(Recurrent Neural Network)は、時系列データの処理に最も適した技術です。この時系列データは、例えば株価の過去一年間のデータ、東京の過去10年間の温度といったようなデータで、非常の多くのデータがぞんざいしています。こういったデータを処理するニーズは非常に多く、そのためにRNNの開発が進んだという背景があります。 例えば東京の過去10年間の夏場の温度変化をみると、年々温度が高くなってきていることがわかります。また、ある企業の株価も一定の法則に従って変動している、というようなことがわかります。 RNNも以前はCNNと同じように、計算の途中で情報を失ってしまうというということがありましたが、開発が進みRNNでも時系列データをそのまま入力できるように改良が進みました。 一般的にデータであれば新しく入力されたデータの方が基本的には重要度が高いですが、時系列データの場合は、「今の時点では関係ないけれど、将来の時点では関係ある」という可能性もあるため、一概に古いデータを軽視できません。

オートエンコーダ

オートエンコーダは自己符号化器を意味します。ネットワークを利用してデータを抽象化する手法の一つです。データを抽象化する、ということはデータの次元を削減するという手法によって行うことができます。 なぜ、次元を削減する必要があるのかというと、ディープラーニングで処理するデータは、非常に複雑な要素が絡み合っています。この複雑な要素を含んだまま情報を処理する場合、膨大なりリソースが必要になります。近年のハードウェアはとても速いスピードで改良が進んでいますが、性能には限界があります。そういった背景化から、複雑な要素を含んだ情報をそのまま処理するのではなく、データを抽象化することで次元を削減し、それによってデータ量が減ることから、規模の大きい処理が可能になるわけです。これによってニューラルネットワークを応用できる領域が広がっていきました。

生成的敵対ネットワーク(GAN)

最後に紹介するのは、生成的敵対ネットワーク(GAN)です。GANとGenerative Adversarial Networkの略で、画像分野で評価の高い技術です。GANには生成器(ジェネレータ)と識別器(ディスクリミネータ)という二つのネットワークで構成されています。生成器はある値を入力値として受け取ったものを画像データとして出力します。一方識別器は生成器が出力した画像を受け取って、そのデータが正か偽かを予測して値を出力します。 二つのネットワークはお互いに競い合うようにプログラミングされており、生成器は識別器が間違えてしまうような画像を作るよう学習します。一方、識別器は生成器が出した偽のデータを、偽であると見抜けるように学習します。こういった対立関係を織り込んでいくことで、生成器、識別器の精度を高めていきます。このようにシステムに精度を向上させるような仕組みを織り込むことでGANは従来ではなかなかできなかった精度の高い学習ができるようになり注目を浴びています。

 

ディープラーニング関連の資格&検定

ディープラーニングについて勉強したいけれど、何から取り組んでいいのか分からない、という声をよくうかがいます。日本ディープラーニング協会の資格取得をお勧めします。 日本ディープラーニング協会(JDLA)はディープラーニングの産業利用を推進し、日本の産業競争力を高めることを目的として設立された団体です。 JDLAはディープラーニングの資格検定試験「G検定」や「E資格」を設けて人材育成に取り組むほか、ディープラーニングを活用したコンテストなども開催し、ディープラーニングの普及に努めています。 この「G検定」・「E資格」を取得することが、ディープラーニング学習の目標となることが合理的と言えます。 ディープラーニングについて学ぼう 2019年2月にcホームページ上にで「日本ディープラーニング協会 G検定合格者が選ぶディープラーニング関連おすすめ書籍ランキング」を公開しました。

 

第1位:ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

第2位:人工知能プログラミングのための数学がわかる本

第3位[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践

第3位ゼロから作るDeep Learning  ―自然言語処理編

第5位: やさしく学ぶ 機械学習を理解するための数学のきほん

第5位: はじめてのディープラーニング Pythonで学ぶニューラルネットワークとバックプロパゲーション

第7位: 仕事ではじめる機械学習

第7位: 機械学習入門 ボルツマン機械学習から深層学習まで

第7位: Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

第7位: 深層学習

第11位: PythonとKerasによるディープラーニング

第12位: ディープラーニングがわかる数学入門

第13位: scikit-learnとTensorFlowによる実践機械学習

第13位: AIをビジネスに実装する方法

第13位: 機械学習スタートアップシリーズ これならわかる深層学習入門

第16位:イラストで学ぶ ディープラーニング 改訂第2版

第16位: Excelでわかるディープラーニング超入門

第16位: 絵でわかる人工知能-明日使いたくなるキーワード68

第16位: 詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

第20位: ディープラーニング やさしく知りたい先端科学シリーズ2

第20位: パターン認識と機械学習

いずれも良い本なのですが、すべての本に共通する思想があるわけではないので、すべての本を読めばよいというわけではなさそうです。

 

ディープラーニングを学ぶために必要な基礎知識

その前にいくつか、基礎的な知識を理解しておくことが大切です。

数学

ディープラーニングの考えは基本的に全部数学で記述されています。でないとモデル化・コード化ができませんよね。といっても高度な知識が必要かというと、最低限理解できれば、ディープラーニングの学習を進めることができます。行列、微分、積分、関数、統計といったことろでしょうか。

プログラミング

ディープラーニングのプログラムは現在Pythonがスタンダードです。Pythonのプログラミングスキルが必須です。特に、関数の実行に当たっては「オブジェクト指向」を理解しておいていただきたいので、中級クラスの知識が必要です。

データ処理

ディープラーニングは基本、データを入力して演算子、結果をデータとして出力するので、データの取り扱いが必須です。あるていどの規模のデータを自由に扱えることが必要です。

 

そんなあなたに

「えー、数学、プログラミング、データ処理?簡単に勉強できないよー」と私の甥が言っていました。そういった声にお応えして、いくつかできるだけ理解しやすいプログラムを用意しましたので、興味がございましたれ見ていただければと思います。

 

まとめ

今最も注目を集めているディープラーニングについての概要と学び方をご紹介しました。ご参考になれば幸いです。