AdobeStock_292887454-_更新済み_

機械学習に挑戦してみよう ~自分の口に合うワイン探してみた~【SiEEDのタネ #7】


1.初めに

 はじめまして,SiEED学生スタッフの学部4回生の金岡です.
 皆様,「機械学習」という言葉はご存知でしょうか?
 少し,聞きなじみが無いかもしれませんが先端技術を知るうえでは避けられない言葉です.今回はその”機械学習”に関して紹介します.先端技術と聞くと敬遠する方もいるとは思いますが、できるだけ分かりやすく説明させていただきます.皆様がアイデア1つで機械学習を用いてあらゆる課題を解決することができるようにできればなぁと考えています.実際に機械学習に挑戦してみたいと感じたら,ぜひご一読ください.
 2・3章では機械学習に関しての説明を行っています.機械学習を用いた口に合うワイン選びの事例のみを知りたい場合は4章からお読みください.

2.機械学習とは

 AI(人工知能)やディープラーニング,機械学習の言葉の関係について整理します.3つの言葉は包含関係になっています.

機械学習図1


 AIという単語自体は,「人類を超えたなんでも屋」を示す場合が多いように感じます.例えば,SF映画などで出てくる全身機械で人と話して,自律的に仕事をこなすロボットのようなものです.そのような「AIに仕事を奪われる」話題に出てくるようなロボットは「汎用的AI」と呼ばれます.「汎用的AI」を再現する際に必要となるのが機械学習です.
 機械学習は,「情報の整理をコンピューターで行い,それを元に判断すること」です.人間は聞いたり見たりすることで物事から情報を得ています.また,同時に情報の整理を行うことができます.例えば,1と7という数字は生活する上で様々な場所に存在します.それを見ることで「1はだいたい縦一本線の形」など特徴となる情報の整理を行い,私たちは1と7という数字を識別することができます.一方コンピューターは「1と7を見分ける能力」がないため,判断には機械学習が必要になります.

機械学習図2


 機械学習には様々な方式(アルゴリズム)があり,やりたいことに対して得意不得意があります.その方式の一つとして,ディープラーニングがあります.ディープラーニングは人間の脳を模した方法で情報の整理と判断を行う機械学習の方式の一つです.

3.機械学習でできること

機械学習は以下のことができます.
 ・分類
 ・クラスタリング
 ・回帰
 ・次元圧縮

 分類とは先ほどの「1と7を見分ける」ように,データから導き出した特徴からどの要素に含まれるかを判定します.クラスタリングとはたくさんのデータを比較して似たもの同士でグループを作ることです.回帰とは過去のデータを見て次に何が起きるかを予測することです.具体的な例として,気温の予測,株価変動予測などが挙げられます.次元圧縮とは,データの種類を減らすことです.以下に具体例を示します.

機械学習図3

 味覚を示す単語は数多く存在します(参考:味覚表現一覧).ここでは、味覚を示す単語の数のことを次元数を言います.その単語に点数を付けて”オレンジ”を評価すると左のようなグラフとなります.しかし,酸っぱさと柑橘系のように類似したものが存在すると,かえって分かりづらいグラフとなる可能があります.しかし,単語数を削りすぎると”グレープフルーツ”と”オレンジ”の差を表せなくなり意味のないグラフとなってしまいます.そこで機械学習を用いて次元(味覚を表す単語数)を削ることで最低限の単語数で差を表すグラフを作成することができます.機械学習では意味のない要素を削った後に学習することで精度を高めることができます.


4.実際にやってみたこと

 私は機械学習を用いて「自分の口にあうワイン探し」を行いました.それを作る流れを紹介します.流れは下図の通りです.

機械学習4−2

a背景(ゴール設定)
 私はお酒が好きでワインを良く飲みます.しかし,ワインは多種多様であるため「おいしい!!」とよく呼ばれるワインでも,自分の口に合うかどうかは分かりません.そこで,「私自身がおいしいと言えるワインを学習させれば,売っているワインが自分の口に合うかどうか分かるのではないか」という仮説を立てました.ゴールとして,「自分がおいしいと思うワインを買えるようにする」ことを目標に準備を進めました.

b.機械学習の準備 
 自分がおいしいと思えるワインを学習するためには,「実際に飲んで判断」する必要があります.そのため,多種多様なワインを購入して飲む必要があります.その際に飲んだワインに7段階で評価を付けていきます.機械学習ではこの7段階評価を答えとして学習を行います.
 次に評価の推測を行うために必要な”ワインの要素”を考える必要があります.例えば,”アルコール度数”,”白or赤ワイン”,”値段”などが挙げられます.今回はワインの管理を行うアプリであるvivinoを参考にしました.サイトには味のバランスやユーザ評価などが記載されているため,数値に変換しワインの要素とします.
ワインの要素は以下のように表しました.

図1


cプログラミング
 プログラム言語にはPythonを用いました.また,機械学習のアルゴリズムとして決定木の生成を用いました.決定木を用いた理由は,フローチャートのように選ぶ基準を示せるため,毎回ワインを選ぶ際にプログラムを通す必要がなくなる為です.学習には15本のワインのデータを用いました.以下が今回作成したプログラムです.

図2

図3

自分の味覚をフローチャートにすることでワインを選ぶ規準を可視化することができました.特にワインの色が大まかに分類する上で重要であることが分かります.


d実際に使ってみる
  次にこの規準に沿ってワインを購入します.購入するワインはvivinoに記載されていて他の通販サイトで販売されているワインです.
 購入したのはMontes Limited Selection Sauvignon Blanc というワインで,自分の口には”美味しい”と推定されたワインです.このワインを選んだ理由は,自分が白ワインがあまり好みではないのに対して,この白ワインは”美味しい”と推定されたためです.
 実際に飲んでみると,評価でいうと7段階中の5であったので概ね推定が合っているのではないかと思います.今回のように,機械学習の結果が味覚として帰ってくるのはとても嬉しく感じました.今回飲んだこのワインも学習データとして登録することで次回に生かすことができます.

 
e感想
  実際に課題を設定して,プログラミングをすることはとても楽しく感じました.そのプログラミングの結果が自分の味覚のして結果に残るので,意欲をそがれることなく最後までできました.最もつらかったのは機械学習の準備として評価値やワインの要素を入力する段階でした.データ数が多ければ多いほど大変です.
一番大事だと感じたのは,「最初に目標をちゃんと決めておく」ことです.その目標は「なんとなく」ではなく「どうしてもこれがしたい」でないと意思が続かないと思います.

5.機械学習はどこから始める?

 始めるには「何かしたいこと」を考えることが重要です.プログラミングの勉強も同じくですが,「ゲーム作りたい」や「自分の口に合うワインが飲みたい」などきっかけとして「何かしたいこと」がないと,続かないような気がします.
 4章で紹介したワインの自動評価はこの本を参考にしました.機械学習で何ができるのかなども記載されているため,「何かしたいこと」探しにはとても良いと思います.なので「とりあえず何かやってみたい」と思うならこの本はすごくおすすめです.「具体的にどのように”学習”が行われているのか」が気になる方は他の書籍の方が良いかもしれません. 
 何かやってみたいことがある人はぜひ,とりあえず手を動かして挑戦してみてください.

6.参考文献

クジラ飛行船(2018)『すぐに使える! 業務で実践できる! Pythonによる AI・機械学習・深層学習アプリのつくり方』ソシム株式会社
坂内綾花@フォーチュンファクトリー株式会社 味覚表現一覧(食べ物の味を伝える147の言葉)
URL:https://note.com/fortunefactory/n/nc9cd30d3c862
vivino
URL:https://www.vivino.com/
ENOTECAワインオンライン
URL : https://www.enoteca.co.jp/?gclid=CjwKCAjw9MuCBhBUEiwAbDZ-7l8W1xBcdMxI1kVdyRjLcAqSfl7A6oMbjhDH854UyWT8F9wmppjt9hoCGl8QAvD_BwE



この記事が気に入ったらサポートをしてみませんか?