知っていますか?AIや機械学習とは何かを
猫も杓子もAIな最近の世の中。AIとか人口知能って流行っていますよね。長年、業務システムでWebアプリを作ってきたけど、これからの世の中、今後が不安。機械学習とかやってみたいけど、難しすぎてワケが分からん。そんな風に思ったこと、ありませんか?
当ブログでは、長年Javaエンジニアとしてやってきたわたくしが、今更ながらに機械学習に挑戦してみて、学んだことなどをアップしていきたい思います。「AIや機械学習やってみたいけど難しすぎてなんだか分からん」なんて同じような方の、何かしらの参考にでもなりましたら、幸いです。
第一回目の今回は、そもそもAIとか機械学習って何なのかについて、自分なりに学んだことを、アップしてみたいと思います。
機械学習とは何なのか
まずは、機械学習からいってみたいと思います。機械学習というからには、そのものずばり、「機械」が「学習」するのです。ここでいう機械とは、いわゆる計算機というかコンピュータというか、WindowsとかMacとかLinuxとかの、あれです。以降、コンピュータで、表記を統一しようと思います(多分)。では、「学習」とは、一体何を学習するのでしょう?
比較として、まずは機械学習ではない、従来のシステムについて、簡単に図示してみたいと思います。
従来のシステム
従来のシステムは、上記の通り、事前に人間がJavaなりなんなりのプログラミング言語で関数(プログラム)を作成しておき、そのプログラムに対して、何かしらの入力データを与えます。コンピュータは、与えられた関数と入力データに従い、計算して、計算結果を出力します。
別の言い方をすれば、人間が事前に設定した計算式に従って、答えを出すのが、従来のシステムと、言えるかと思います。
簡単な例で例えると・・・
- 人間が「3」という入力値を用意する
- 人間が、「入力値を3倍する」という関数を、プログラミングする
- 数式で書くと、「y = 3x」という、1次関数ですね。
- コンピュータが、「9」という計算結果を、出す。
一度プログラムを組んでしまえば、高速で、飽きたり疲れたり文句言ったりせず、ミスせず、処理し続けてくれるのが、コンピュータのいいところです。
でも、全て人間が事前に設定した計算式に従って計算しているので、あまり知能チックなところは、ありません。まさに、「機械的に」、計算しているだけですね。
機械学習なシステム
これが機械学習だと、こういうイメージになります*1。
結論から言うと、機械(コンピュータ)が学習するのは、関数です。より正確に、先ほどの例でいうと、「y = 3x」の、「3」の部分です。人間が事前に用意する部分は、以下です。
- 求めるべき関数の形を、決める。
- 先ほどの例の場合、「y = ?x」という、1次関数だと、決めることになります。
- ?の計算方法
このあたり、個人的に、用語の理解がふにゃっとしているのですが・・・関数の形(y = ?x)がモデル、学習すべき「?」がパラメータ、?が求まった形(y = 3x)が学習済みモデル、? の計算方法がアルゴリズムと思っておけば、あたらずとも遠からずな、気がしています*2。
ちょっぴり現実の例でいうと・・・例えば、自動的にエアコンをつけるシステムが、あったとします。従来のシステムだと、「25度以上になったら冷房をつける」「15度以下になったら暖房をつける」とか、事前に人間が設定する必要があります。
対して、機械学習なシステムだと、日々人間が何度以上になったら冷房をつけ、何度以下になったら暖房をつけるのかを、センサーなどを通して記録して・・・コンピュータが、何度になったら冷房をつける/暖房をつけるべきかを、学習していきます。
・・・なんだか、知能が備わったような、気がしてきませんか?
AIとは何なのか
機械学習が分かったところで(?)、AIにいってみたいと思います。AI = Artificial Intelligenceの略、日本語では一般的に人工知能と訳されます。「知能の明確な定義がないので、人工知能の定義なんてムリ」とか、身も蓋もないことをおっしゃる、えらい学者さんもいるらしいですが・・・
先ほども触れました通り、従来のシステムに比べると、機械学習なシステムは、なんだかちょっぴり知能が備わったような気がしてくる、代物では、あります。
しかし、「AI」と聞いて一般にイメージされる、いわゆるドラえもんとか、映画ターミネーターに出てくるスカイネットとかと比べると、程遠い代物でも、あります。
ここから考えるに、以下が言えると思います。
- 機械学習を使って、知能っぽいものを実現することは、できる
- 知能っぽいもの=AI/人工知能
- 現在の機械学習で実現できる知能っぽいものは、SFの世界に出てくるAIに比べると、程遠い
3番目のものを「強いAI」、1番目のものを「弱いAI」とか言うそうです。つまり、機械学習とAIの関係は、以下になるかと思います。
- 現在の機械学習技術を使って、弱いAIを作ることならば、できる
- つまり、機械学習は、AIを作るための技術(の、一つ)
- ただし、機械学習は、AIを作るためだけの技術では、ない(?)
・・・ような気が、するのですが・・・分かりやすさからかインパクトからかセールス上の理由からか、機械学習≒AI=とりあえずAIと言っとけ的な、雰囲気も、感じたりしたりしなかったり。
個人的には、AIというと誤解を招きそうなので、「機械学習」と言う方が、好きです。
まとめ
ということで、まとめると、以下になるかと、思います。
- 機械学習とは、コンピュータが、関数を学習する、ものである。
- これにより、「ちょっとした知能があるっぽい」と人間が感じなくもない程度のものは、作れる。
- つまり、機械学習により、AIっぽいものは、作れる。
機械学習でやりたいこと
というわけで、機械学習を勉強して、個人的にやりたいことですが・・・結論から言うと、データサイエンスっぽいことに、挑戦できれば、なんて思っています。
機械学習で流行っていることというと、画像認識だったり、Siriみたいな音声認識・文字認識だったり、AlphaGoみたいな、ボードゲームで人間のプロに勝ったりだったりしますが・・・
私みたいな今まで業務システムをやってきた日本のSIerさんからすると、相対しているお客さん含め、活用方法にピンとこない方も、多いような気がします。
それよりは、データ分析系とでも申しましょうか。融資審査の合否の判断を学習させたりとか、需要予測をしたりとか、そういうのから始めた方が、ピンとくるような、気がしています。
そんなわけで、これから、データ分析っぽいものを中心に、機械学習を勉強していきたいと思います。
参考資料
プログラマのための ディープラーニングのしくみがわかる数学入門
- 作者: 増井敏克
- 出版社/メーカー: ソシム
- 発売日: 2018/10/26
- メディア: 単行本
- この商品を含むブログを見る