はじめに
ユーザのためのAI入門の第3回講義を受講した。本日のゲスト講師は山肩洋子准教授だった。優しい語り口だけど、明瞭な説明でした。突っ込まれても受け止めるしなやかさがある。特に、新鮮だったのは最後の演習だった。自分自身はRは習ってしばらく使っていたけどPythonはこれまで無縁だったけど、簡単に使えるのに驚いた。なお、これは講義メモではない。講義の内容で気になったことをネットや図書で確認しながら理解した範疇でまとめたものなので、内容に問題があればその文責は自分にあり、内容が良ければそれは講義のおかげだ。
ゲスト講師は山肩洋子准教授
京都大学を2000年3月に卒業し、情報学研究科で博士課程を2005年3月に終了後、研究員、特定講師、准教授を経て、英国サセックス大学に赴任される。帰国後は、日本学術振興会の特別研究員や京都大学大学院の特定准教授を歴任後、2019年2月より東京大学大学院情報数理工学系研究科で准教授を務められている。研究テーマはメディア情報処理や食のITだ。
(出典:東京大学)
デジタル画像を知る
解像度xビット深度
スマホの進化の一つがカメラの性能だ。2009年に発売されたiPhone3Gsは3メガピクセルのカメラを内蔵していた。つまり、解像度は300万画素だ。昨年発売されたiPhone13Proでは1200万画素を実現している。しかも、単に解像度が高いだけではなく、暗闇でも明るく撮影できる。もう一つの尺度は深度だ。1bitだと黒か白かの2階調だ。3bitでは8階調、8bitでは256階調となる。カラーの場合には、3原色となるので、24bitフルカラーというのは、それぞれの色の深度が8bitで3つ色の組み合わせになるので約1678万色が再現できる。深度が16ビットなら、3つの色を組み合わせて281兆色となる。
(出典:Qiita)
座標と濃淡値
座標の軸は左上が原点となり、水平方向にX、垂直方向にYと定義される。また、値は真っ白が最も大きく、真っ黒が最も小さい(=0)となる。8bitなら256階調だし、16bitなら65,536階調となる。
(出典:VIOCO)
L錐体、M錐体、S錐体
人は水晶体を経由して網膜に映った光を、暗いところで機能する桿体(かんたい)と、明るいところで機能する錐体(すいたい)の2種類の視細胞で感知する。そして、桿体は明暗を感じて、錐体は色を感じる。桿体は1種類だが、錐体には黄周辺の570nmを感じるL錐体、緑周辺の535nmを感じるM錐体と青周辺の445nmを感じるS錐体の3種類で構成している。錐体の個数や機能特性は、動物の種類によって異なり、それぞれが生き抜いてきた生活環境に適応して発達した側面もあるようだ。
(出典:Color Universal Design)
二次元デジタルフィルターによる画像処理
奈良高専の5年生の時には、情報処理系の研究室を選択して、印鑑の自動照合をテーマにした。つまり、パターン認識だ。色はひとつ、深度も1bitであり、解像度が多分128×128程度だったと思う。画像データから特徴点を抽出して、それが指定の印鑑と同じかどうかを認証する。その処理の過程の中で、印鑑の文字の太さを細くしたり、太くしたり、枠のみにしたりといった処理を独自に工夫して対応した。あまりの面白さに夢中になって対応した。当時は、フィルターの名前もなく、単にマトリックス計算処理のパターンをいくつも作って楽しんでいた。
(出典:htsuda.net)
HoG特徴量
深層学習によるパターン認識処理ができるまでは、HOG特徴点抽出の技術が重要だった。HOGとは、Histgrams of Oriented Gradientsの略だ。局所領域における画素の輝度となる色や明るさなどの強度の差により出来る勾配の方向をヒストグラム化した特徴量の意味であり、この特徴点を抽出して、照合する仕組みだ。ただ、その前処理として、正規化処理が必要である。この正規化処理と、特徴点抽出と、最終的なパターン認識の結果が密に関係するところが悩ましい点だ。
(出典:Slide Share)
深層学習による基礎的なモデル
深層学習への発展
前回の講義の中で原田教授率いるチームが2012年のILSVRC(Large Scale Visual Recognition Challenge)にて優秀な成績を収めたことを投稿したが、その時に注目されたのがジェフリー・ヒントン教授率いるトロント大学のSuperVisionが提唱したDeep CNNだった。人間による認証の誤り率は5%程度とされており、当時のSuperVisionの誤り率は15.3%だったが、2017年には2.3%まで改善し、さらに精度を高めている。
畳み込みニューラルネットワーク(CNN)
畳み込みニューラルネットワーク(Convolutional Neural Networkでは、畳み込み層とプーリング層で構成する。畳み込みとは画像全体からさまざまな画像の特徴を抽出する。小さなフィルターを画像全体にスライドさせながら部分部分で分析する。プーリング層では、畳み込み層で抽出した特徴マップを小さなウィンドウに区切り、区切ったウィンドウ内の最大値をとっていく。このようなプーリングを行うことによって、画像内の特徴点を検出する。特徴の位置の変化による影響を受けないため、移動普遍性がある。印鑑の自動照合の時にも、位置の補正や正規化の処理が必要だったけど、CNNであれば、そのような処理が不要だ。これは大きな進歩だ。素晴らしい。
(出典:AUC+X)
プーリング
畳み込み処理はデータ量が増大する方向に処理されるが、逆にプーリングではデータ量を圧縮する方向で処理される。つまり、下の図にあるようにmaxプーリングでは対象の4つのセルの最大値である7を値として保存する。avgプーリングでは4つのセルの平均値を値として保存する。データの次元削減を行うことで、処理コストを下げることができる。回転や位置ずれに対して優勢な特徴を抽出しているので移動不変性を実現できる。
(出典:DashLane)
多クラス分類、2クラス分類
法政大学の経営大学院で学んだ時には、Rを用いて階層型クラスター分析や非階層型クラスター分析などを習った。個人的にはデータを内容に基づいて自動的にトリー構造に分岐するデンドログラム分析が大好きだった。日本分類学会があることもその時に知った。今日の講義でも多値に分ける多クラス分類や、2つに分ける2クラス分類などについて説明があった。なんだか懐かしい。
(出典:Qiita)
最適化手法
最適化手法には、確率的勾配降下法(SGD:stochastic gradient descent)がある。これは、連続最適化問題に対する勾配法の乱択アルゴリズムであり、目的関数を微分することで求められる。これ以外にも、SGDを改善したMomentumSGDやAdaGrad, RMSprp, Adamなど多様な最適化手法が実用化されているが、どれが良いかは一概にはなんとも言えない。下の図は一例だけど、途中で緩やかな区間があるかどうかや、局所最適解が複数存在するかどうかなどの前提条件によって大きく左右する。学生からどの手法が最適かといった質問があったけど、これは前提条件によるだろう。(出典:Qiita)
演習:Google Colaboratory
詳しい内容は割愛するけど画像をぼやかしたり、シャープにしたりといった画像処理をあらかじめPythonで動くようにテンプレートを山肩教授が用意して頂いていた。指示に沿って処理を進めると、Colaboratoryが走った。何かと思ったらブラウザ上でPythonを使える環境にするアプリだった。あまりに簡単に実現するので驚いた。Rもすごいけど、Pythonも理解するに越したことはない。是非トライしたいと思った。
(出典:note)
レシピのAI活用
創作手順文書のフローグラフ化
山肩准教授の研究テーマなどを予め調べていたけど、講義のテキストには含まれていなかったのと、予定よりも進行が早くて少し時間が取れそうだったので、少し紹介してほしいとチャットした。いくつかかいつまんで説明いただけた。レシピの文書を構造化して処理するアルゴリズムの研究には思い入れがあるようだ。面白いアプローチだと思う。
(出典:東京大学)
オリンピック選手のための食事管理
アスリートにとっては食事のコントロールは競技の成績に直結する。FoodLog Athleteは管理栄養士のウェブアプリとスマホアプリ、さらにアスリートに向けのスマホアプリがある。自分は、栄養士でもアスリートでもないけど、アスリート向けのアプリをiPhoneにダウンロードして愛用することにした。このアプリでは、食事の写真を記録したり、食事の写真を管理栄養士と共有したり、摂取したエネルギー・栄養素を計算・表示できる。さらに、管理栄養士からのコメントを表示したり、管理栄養士にコメントできるという優れものだ。オリンピックに出場するようなアスリートには栄養士のスタッフが指導したりするが、スマホでやり取りできるし、体重の推移の確認や栄養士とのメッセージのやり取りもできる優れものだ。東京オリンピック2020ではアスリートの指導に役立ったようだ。
(出典:FoodLog Athlete)
まとめ
今日は、深層学習を用いてAI実践というテーマで山肩准教授に講義をいただいた。画像処理の基本的な手法などを丁寧に教わった。自分が学生の時には、フィルターの名前もなく、独自に勝手に工夫しながら処理したことを懐かしく思い出した。当時の奈良高専が使用していた三菱電機のコンピュータでは夜から朝までかかっていたものが、京大のコンピュータセンターに持ち込んだら数分で処理が終わっていて愕然としたことをよく覚えている。当時はカードにプログラムをパンチして、落としても並び直せるようにマジックで斜めに線を引いて持ち歩いたものだ。今ではパソコンでもスマホでも簡単に処理できる。良い時代になったものだ。
以上
最後まで読んでいただきありがとうございました。
拝