Deep Learningとは、十分なデータ量があれば、人間の力なしに機械が自動的にデータから特徴を抽出してくれるディープニューラルネットワーク(DNN)を用いた学習のことです。
ディープラーニング(深層学習)に近い用語として、「機械学習」なども聞かれますが、「機械学習」と「深層学習」は異なるものです。
より正確に言いますと、「機械学習」の中に、「ニューラルネット」という分析手法があり、「ニューラルネット」の中に、「深層学習」という手法があります。
「機械学習」の中にもかなり多様な分析手法があり、そちらは調べていただくとかなり色んな手法が出てくるのですが、「深層学習」は基本的に「ニューラルネット」の形で構成されます。
AIアプリは以下の流れで開発は行われます。
データを集めて、AIのタスクを実施する深層学習モデルを決めて、学習を繰り返すのは普通のデータ分析タスクと大きくは変わりません。
実は、AIアプリの開発そのものは難しくありません。難しくはありませんが、実は非常に泥臭いめんどくさい作業のオンパレードです。
AIの開発が難しくない、というのは、AIで使う深層学習モデルのほとんどは、既存のものを転用することが多いからです。論文や誰かが構築したモデルを転用して、自分でモデルを構築することはほとんどありません。
逆に、自分でモデル構築ができるのであれば、それは論文を書けるレベルの開発ということになります。
AIアプリの開発を行うとしたら、データの収集やデータの前処理の部分が多くあるので、そこの部分を単純作業労働として請け負うことはできるでしょう。企業の中でも結構そのような形で仕事を投げているところも多くあります。しかし、それは皆様が思い描いている「AIの仕事」とは程遠いかもしれません。
もちろん、一般的にイメージするAIアプリ開発の仕事を請け負うことは可能です。その開発をする場合はどのようなことをするのでしょうか?
それは、たくさんのAI・深層学習の論文を読んで、自分の実現したいことを実装できるAIを見つけ出すことから始まります。その後、その論文に書かれている機械学習モデルを実装します。自分の実装したい機械学習モデルが、既に実装されているのであれば、それを使うことができます。
有名ドコロですと、LSTMなどは、Kerasでほぼ一行で実装できますね。
要約すると、以下の流れです。
AIアプリを開発するために、TensorflowやKerasで簡単にできるからと言って、自分でモデルを構築しようとする人がいますが、それをするとほとんどいい結果は得られないと思います。宝くじにでも当たるくらいの確率でしか、いい結果は生まれません。また、それができたら論文を書けてしまいます(笑)
結局AIアプリの開発をするために必要な知識やスキルは何でしょうか?
それは、以下の3つになります。
まず、基本的な数学知識ですが、論文を読むためにもこの知識は必要になってきます。結構仕事でAIアプリを作ったことがあります、という人でも数学知識がないまま、どのような計算がされているのかイマイチ理解していないままの人も多いです。既に性能が実証済みのモデルを使うのであればそれでいいのかもしれませんが、自分独自のアプリで応用してモデルを組み込んでいくということになれば、数学知識がないとキツイことが多いです。
しかし、高度な数学知識が必要かというと、全然そんなことはありません。線形代数という分野で、中学校の連立方程式が理解できていれば問題ない数学です。ぶっちゃけ数学というより算数です。
また、論文を読むための知識としましては、数をこなしていくことが大事ですが、何をINとして何をOUTとしているのかということと、どのようなモデル構造になっているのかを理解できれば大丈夫です。論文の多くは中身の詳細の理論的な部分になりますが、アプリ開発者としては、キチンと成果を出してくれるものであれば、中身について詳しく理解していなくても問題ないはずです。
そして、それらを実装できるようにTensorflowやKerasなどのツールの知識が必要になります。ツールはなんでもいいですが、Googleがバックに居るという安心感があるこれらのツールをオススメしています。まあ、何でもいいですけどね。
関連記事はありません。
まだコメントはありません。