たくさんのものから何かを見つける~なんでもは出来ない機械学習~
どうも、totokoです。
さてはて昨今、機械学習やらAIやらが持て囃されておりますが、当然ですがなんでもできるわけではないんですよね。 書籍とかで「AIに仕事を奪われる!」などと右斜め15度くらいの帯コメントが記載されていますが、これも当然ながら全てのお仕事じゃないですね。 そこらへんの話は今回の話題ではないのであしからず。
今回はその「機械学習でできることやできないこと」をちゃんと考えておこうというわけです。 要するに流行りに乗って「機械学習が得意なエンジニア」を集めても「さて、何をするべ?」となってしまっては本末転倒です。 仮に「これやりたい!」となっても「いや~これは……ちょっと……あはははは」とエンジニアが苦笑いと共にフェードアウトしてしまうかもしれません。 そんな不幸を減らすために、さっくりと「機械学習でできること」を理解しておきましょう。
あ、毎度ですが、僕はウルトラスーパーファンタスティックエンジニアではないので、というかそもそもエンジニアではないので、技術的な沼なことはわからないので悪しからず。
機械学習は「パターン分け」が得意
大前提として機械学習はたくさんのデータを元に「パターン分け」することが得意な技術です。 そしてその分けたパターンを、ユーザー(問題を抱えている人)に適切な情報を与えることに提供することで、ようやく機械学習としての演算結果が世のため人のためになります。
いくつか例を交えながらお話しましょう。
1:たくさんの情報から必要なものを見せる
今の時代情報だらけです。 僕らは情報の海に常に潜っており、海中を漂うWiFiの電気クラゲを避けながら生きています。クラゲの件は嘘です。 そんな中で自分の欲しい情報なんて簡単には手に入りません。 自分の欲しい情報が目の前に浮かんで入ればいいのですが、大概は遥か彼方の海に浮かんでいることでしょう。
その情報への航海のコンパスの役割を「機械学習」が果たしてくれるでしょう。 例えばニュースアプリでは、はじめにユーザーの趣味嗜好、欲しいニュースを元にざっくりとトップニュースをくれます。 その後使っていくうちに、「お、この人はゲームでもスマホよりも、PCをの方がお好きなのね」となってPCゲームや、PCに関する情報を多くくれることでしょう。 そんな賢いことも、裏で機械学習が頑張っているわけです。
2:おかしなものを見つける
これは単純に「パターン分け」からくるものですね。 たくさんの情報から多くのパターン分けをしていると、たまーに「なんじゃこりゃ?」なものが出てくる場合があるんですよね。 スポーツ漫画のデータ野郎が「これは……データにないぞ!」という奴と同じです。 漫画だとここで負けてしまうのですが、機械学習だと「この異常値……妙だな」となって、すぐに僕たち人間に知らせてくれます。 それを元に「これは○○だ」とか判断して対応するのです。 一般的な例だと、クレジットカードの不正利用が分かりやすいかもしれないですね。 同じ日に同じような買い物を何回も繰り返していると「おや? この使用は変だぞ。不正利用として、とりあえずカードストップしよ」と判断するわけですね。 これがたまに「なぜかクレカが止められた」という現象の正体です。(まあ、最近はコンピュータの処理も賢くなってよっぽどのパターンじゃないかぎりそういうことは発生しないと思いますが……)
3:Siriなどの音声アシスタント
え? AIじゃないの? と思われますが、これは機械学習ですね。(AIと機械学習の違いが知りたい方は以前に書いた僕の記事を参照してください) 僕らの言葉の意味を読み取る(専門的な言葉だと「自然言語処理」)ことに機械学習が用いられます。 たくさんの言葉を学習することで、例えば「LINEを返して」とかにも「なるほど、LINEの返信をしたいのね。ならLINEを起動して……」と実行してくれます。 たまにネットで見る「Siriと会話してみた」も、その一つですね。 僕らの何気ない会話を読み取り、適切な返答をしてあたかもコミュニケーションを取っているように見せているのです。
だから偏ったデータの相手は苦手です
では一見すると、賢い機械学習ですが、苦手なものはなんでしょう。 それは一言で「偏ったデータのやりくり」です。
例えばあなたの将棋のレベルを判断するサービスがあったとしましょう。これはあなたの棋譜を読み込むことで、あなたの実力を数値化して教えてくれるコーチみたいなものです。 その判断に機械学習を用いていると考えてください。 さて、この判断のためにはたくさんのデータが必要になります。なぜなら、データがないと判断基準となる「パターン分け」が出来ませんからね(もちろん、予めある程度の計算式とかアルゴリズムとかあればなんとかなるのかもしれませんが……)。 そのデータとして超一流のプロ棋士達の棋譜をデータとしましょう。 それを元にアマチュアのあなたの棋譜を読み込み比較すると……。 当然スコアは悪いものになるでしょう。なんたって、ウルトラ級のプロと、ネット将棋レベルの素人では棋譜も全然違うはずですから。
それがこの偏ったデータのやりくりですね。 これの比較データが「運営しているネット将棋のプレイヤーの棋譜(及びランク)」による機械学習ならば、あなたが必要としている情報が得られるはずでしょう。 しかし、目的にそぐわないデータを集め、目的にそぐわない機械学習を行わせると、どんなに大量のデータを集めても意味がなくなります。 つまり、幅広いデータが必要であるにも関わらず一部のデータに偏ってしまうと、正確な予測(パターン分け)をしてくれないわけです。
機械だから融通は効かないんです
例えばあなたがニュースサイトで「野球」の記事を中心に見ていくとしましょう。 そうすると当然機械学習により、あなたのもとには野球のニュースが大量に届くことでしょう。 ですが、あなたは野球以外にも「ゲーム」が好きです「漫画」が好きです「グルメ」が好きです。 でもでも、そのニュースサイトではずーーっと野球ばっかりです。 だって、最初の判断でそうなっちゃったから。
要するにフィルターにかけたもの以外の情報をなかなかくれないというやつです。 自分の好きなモノ以外は全くわからない状態になるのです。 情報の海を泳いでいたと思ったら実は大きなイケスのなかだったという落ちです。
それを防ぐ一つの例にAmazonとかでは「○○を買った人は他にもこういうものを買っています」という奴です。 つまり、他の似たようなユーザーのデータを参照に「もしかしたらお客さん、こういうのもお好きでしょ?」と勧めてくれるんです。 飲み屋のマスターのおすすめですね。
あなたは何をやらせたいの?
機械学習はたくさんのデータをいい感じに捌くことができる技術です。 しかし、これを実際のビジネスなど「実用」に向かわせるには、「これで何をさせられるのか」を考える必要があるのです。 ユーザーに対して適切な情報を返してあげられるように仕組みや作りを考える。
これもまた機械学習における大切な要素の一つです。