最近、インターネット、本でよく目にする ”機械学習” 、”深層学習”。一体何者なんだろうと思いググるもいまいちピンとこない。
面白そうだとは思ったものの、やはり ”機械学習” 、”深層学習” が具体的に何をどうするものなのか、何がうれしいのかイメージができないので、村人(オウル)は本(電子書籍)を買うことにしました。
村人、本を買う
機械学習入門
さすが流行りだけあって、たくさんの本が出版されていて、どれにすればいいか分からない・・・と思いながら調べていると「ITエンジニアに読んでほしい!技術書・ビジネス書 大賞」なるものを見つけました。しかも、2018年の大賞に選ばれたのが『機械学習入門 ボルツマン機械学習から深層学習まで』という、まさに求めていた本です。1位だし、入門だし、これにしよう。
機械学習入門の感想
タイトル通り、本当に入門です。しかも、難しい数式などは出てこなくて ”機械学習” ってこういうイメージで、こんなことができるよ、というのを分かりやすく説明してくれています。 具体的には、お妃様が鏡に「この世界で一番美しいのは誰」と問うと、鏡が「そもそも美しさって何ですか」(美しいを数値化するための要素)と答えるところから始まります。”機械学習” の用語でいうと ”特徴量” です。この本は、”機械学習” のイメージを掴むことに注力した本だと思います。
結果、村人は、この本を読むことで ”機械学習” のイメージを掴むことができました。
村人が憧れの冒険者になる決意をする
ある程度、”機械学習” という相手がぼんやりと見えてきたので、冒険者になって ”機械学習” に挑む決意をします。ちょうど、その時に「冒険者になるには」という実際の”機械学習”・”深層学習” のプロが教えてくれるセミナーがあったので、村人は参加することにしました。
村人という事実、そして相手は魔王
「冒険者になるには」(”機械学習”・”深層学習” )のセミナー内容はこんな感じ。
- Neural network 画像の多クラス分類
- Convolutionnal Neural network 画像の多クラス分類
- Fully convolutional network 画像セグメンテーション
- 超解像処理
- 画像のノイズ処理
セミナー用のコード(Python)と画像が用意されており、実行すると、こんな結果になりますという内容でした。セミナーの内容は、本当に初心者向けでしたが、『機械学習入門 ボルツマン機械学習から深層学習まで』を途中まで読んでいたお陰様で、より ”機械学習”・”深層学習” をイメージすることができました。
今回のセミナーに参加して良かったな思えることのは、自分の理解を答え合わせする絶好の機会であることです(もちろん講師が熟練のプロであることが前提です)
しかし、出力(アウトプット)が画像であることが多かったため分かり易かったのですが、気になるのは、じゃどうやればいいのという方法の方です。そして出てくる、わけわからん用語達。1次元ベクトル、活性化関数、行列、正規化などなど。
これ・・・アカンやつや。”機械学習”・”深層学習” って魔王だ。そして僕は村人だ。
冒険者になるための最低限の条件
村人が冒険者になるための必要最低限の条件を知ります。
装備
一般的なRPGと同様、最低限の装備は必要となります。
”機械学習”、”深層学習” を扱うプログラミング言語はいくつかありますが、その中でも圧倒的なライブラリの充実度とコードの短さ(短いことにより、人によるコードの特徴が出にくい)から Python が他の言語より頭一つ抜けている感じです。また、Python をサンプルコードとして採用している本・インターネットの記事が多いです。今回のセミナーも Python でした。
Python でプログラミングすることを前提とすると、Python でのプログラミング経験があれば申し分ないですが、他のプログラミング言語の経験があれば、さほど問題ないと思います。まぁ個人的には Java から C# に主要言語が変わったときみたいな感じでプログラミング経験があればなんとかなると高を括っています。むしろ Python のライブラリの知識の方が重要な気がします。
魔力(呪文)
一般的なRPGでは、パーティーの中に ”戦士系” と ”魔法使い系” をバランスよく組み合わせますが、今回は自己学習ということもあり、一人パーティです。 ”魔法戦士” のような能力が必要となります。
- ホイミ(微分)
- メラ(ベクトル)
- ギラ(行列)
- ヒャド(線形代数)
- バギ(確率・統計)
直近の目標を決める
村人が学ぶべき直近の内容は・・・やはり魔力かな。正直、中学の数学すら怪しい・・・。”機械学習”、”深層学習” 以外にも、例えば Unity で 3Dアプリ(ゲーム)を作ろうと思うとベクトルと行列の知識があると助かるんですよね(もちろん便利なクラスが用意されていてインターネットで見つけたコードを貼り付けると何となく動作はしますが、後々、理解していないとつまづく)ということで、まずは、プログラミングに必要な ”微分” → ”ベクトル・行列・線形代数” あたりを勉強していこうかと思います。ただ、あくまでも ”機械学習・深層学習のプログラミングに必要な基礎” ということに注意して、後は手を動かしながらですね。
いざ、試しにと意気込むも・・・
\(f(x)=x^{2}+x+1\) の導関数は?
・・・Σ( ̄▽ ̄ノ)ノえっ! 先が思いやられるぜ、こりゃ・・・
まぁ、いつかイオ(娘)が数学教えて!っていう日もくるかもしれないし、頑張ろうかな。
次回は、セミナーの内容をもう少し具体的にお話したいと思います。