概要
G検定の試験時間は120分で全て選択式の知識問題で自宅にてオンライン受験になります。受験費用は一般は12000円で学生は5000円になります。G検定はキーワードを覚えておくだけでは解けない問題も多く出題され、理解が重要視される検定です。すなわち、問われていることは何か?を理解し、どう調べれば答えが見つかるかが分かるレベルに達すると、解ける問題が増えます。
ディープラーニング→数理統計や機械学習→人工知能
ディープラーニングの箇所が最も頻出で、人工知能になると頻度は少なくなります。
問題数は約220問で120分で解くので1問あたり約30秒の計算です。調べてもわからなさそう、どう調べるか分からない問題は、後回しにしましょう。
僕は『最短突破 ディープラーニングG検定(ジェネラリスト) 問題集 第2版』の1冊で合格を目指します。本書を選んだ理由は、教科書と問題集が一体になっていて、特に問題の解説が教科書のように詳しいという評判を知ったからです。本記事は本書を勉強した際の学習記憶としての役割もあります。
人工知能とは
人工知能の定義
人工知能小野分類や代表名
人工知能やAIとは汎用型(人間のような)人工知能をイメージする人が多いが、近年では特化型人工知能の活躍が目立ちます。例えば囲碁に特化した人工知能AlphaGo(2016)などです。ある特定のタスクについて人間より秀でているものを作るのは可能だが、善悪の判断などの哲学的問題や、多角的に判断するタスクはまだ実現できていません。汎用型人工知能を強いAI、特化型人工知能を弱いAIとも言います。
Ponanzaは将棋AIで、StockfishはチェスAIです。ただし2017年以降にはelmo、Stockfishにも少しの学習で勝てるAlphaZeroというAIが開発されています。AIの強さや弱さはジョン・サールによって論文で提示されました。
人工知能の始まり
1956年のアメリカのダートマス大学にてダートマス会議という研究発表が行われた際のジョン・マッカーシーが、会議の提案書において初めて人工知能という言葉を使いました。ジョン・マッカーシーは研究分野の区分に対しても人工知能という研究分野にしようと同会議で命名しました。
ジョン・マッカーシーはダートマス会議の発起人です。アラン・チューリングは人工知能の概念の提唱者と言われています。
人工知能のレベル別の分類
人工知能の分類方法において、『エージェント アプローチ人工知能』にて示されている分類を学びます。レベル1はシンプルな制御工学で、一般的な電化製品に搭載される全ての振る舞いがあらかじめ決められているものです。レベル2は古典的な人工知能で、掃除ロボットなどの探索・推論、知識データを利用し、状況に応じて複雑な振る舞いを行います。レベル3は機械学習を取り入れた人工知能で、非常に多くのデータをもとに入力と出力の関係を学習したものです。検索エンジンや交通渋滞の予測などで用いられます。レベル4はディープラーニングを取り入れた人工知能です。レベル3で行っているものの中でもディープラーニングを用いているものです。画像認識、音声認識、機械翻訳などの従来コンピュータでは難しい分野での応用が盛んになっています。
特徴量とはデータの特徴を表す量で説明変数とも呼ばれます。プログラミングはレベル1から使われています。VBAはマイクロソフトオフィスにおけるプログラミング言語のことです。人間工学はプロダクトのUI/UX(ユーザーのサービスによる体験など)を主に考える学問です。ベイズ統計モデリングは計算量の多さから実務に応用されているとは言い難いですが、実務に応用できれば、予測の不確実性まで定量的に扱えるので盛んに研究が行われています。
AI効果
人工知能分野において、新しい技術が開発されてもその仕組みが浸透し原理がわかってしまうと、人工知能を単なる自動化であって人工知能ではないと考えてしまうことをAI効果といいます。
ELIZA効果とは、意識的にはわかっていても無意識的にコンピュータが人間と似た動機があると感じてしまう現象です。エライザはチャットボットの元祖「ELIZA」からきています。単におうむ返しの返答をしたり、関連することを投げかけたりするプログラムですが、エライザ自身が興味を持っていると感じてしまうところから命名されています。
人工知能の歴史
初期のコンピュータ
1946年ペンシルベニア大学で開発された汎用電子式コンピュータをエニアック(ENIAC)と言います。
electoronic numerical integrator and computerで電子計算機と命名されています。第二次世界大戦での暗号解読に軍資金がつぎ込まれ研究が行われました。チューリングマシンは、1930年代にアラン・チューリングが考えた自動計算機の理論のことです。自動計算機とは、機械に自動的に計算を行わせる理論です。エニグマ(ENIGMA)はナチス・ドイツが用いていた暗号機の名前です。エドサック(EDSAC)とは1949年に開発されたイギリスのコンピュータです。これは現代のコンピュータと相違ないものです。
初めての人工知能プログラム「ロジック・セオリスト」
ロジック・セオリストは初めての人工知能プログラムで、1956年のダートマス会議で、アレン・ニューウェルとハーバート・サイモンによってでマンストレーションされました。ロジック・セオリストは記号論理学において定理を証明するコンピュータプログラムです。プリンキピア・マテマティカという数学書に含まれる定理のうち73%を証明しました。ジョン・マッカーシーはダートマス会議の提案(1955年)において人工知能という言葉を生み出しました。論理表現では→やvは論理結合子と呼びます。ロジック・セオリストではこのように記号によって知識を階層的に表現します。ロジック・セオリすとは証明すべき定理から逆算的に有効な推論をしていき、それを公理に到達するまで続けます。ロジック・セオリストにおいて、問題をヒューリスティックに解決します。
ヒューリスティックは、ある程度正解に近い解を見つけ出すための経験則や発見方法のことで、発見法とも呼ばれます。いつも正解するとは限らないが、概ね正解するだろいう直感的思考です。これと対極の考えがアルゴリズムです。
AIの歴史
AIブームは何度も流行しては冬の時代を迎えてきました。第1次AIブームは推論と探索の時代です。1950年代末〜1960年ごろに流行し、トイプロブレムと呼ばれるような簡単な迷路の問題を解けるAIが開発され、話題になり流行しました。しかし複雑な問題には対応できず、1970年代後半から冬の時代に入りました。第2次AIブームは知識の時代で、1980年代頃から再度注目されました。当時専門家の知識を用いて質問に答えたり問題を解いたりするプログラムエキスパートシステムが話題になりましたが、データベースの管理の大変さや用途が限定的すぎることにより、また冬の時代に入りました。第3次AIブームは機械学習・特徴表現学習の時代、もしくはディープラーニングの時代と呼ばれ、再ブームになりました。2012年に物体の認識率を競うILSVRCという大会でディープラーニングを用いた技術が圧倒的な精度を出したことや、2016年に囲碁大戦用AI「AlphaGo」が人間のプロ囲碁士に勝利して注目を浴びてブームになりました。
シークレタリープロブレムは秘書問題で最適化の問題です。エキスパートシステムは2020年代の現代でもレコメンドシステムとして活用されています。
セマンティックネットワークは意味ネットワークともいい、知識をネットワーク構造で表したものです。ナレッジグラフは意味ネットワークの穴ときのでも半自動的に構成しているものです。少ないコストでできるメリットはあります。現在はGoogleが使用しているナレッジグラフのことを指します。エキスパートアドバイザーは自動売買取引ツールです。
Kaggleはデータサイエンティストをサポートする目的で設立した世界的なウェブプラットフォームです。SIGNATEは日本企業などが多く採用しています。AtCoderは競技プログラミングでどれだけ素早く問題をプログラミングで解けるかを競うコンテストです。
ディープラーニングを利用した成果
2012年にディープラーニングを利用したAlexNetというモデルが画像認識の大会で優勝し注目されました。以降はディープラーニングを用いた手法は様々な分野で成果を上げています。例えば次のような事例です。囲碁においてAlphaGoというモデルが人間のプロ棋士に勝利しました。1000クラスの画像分類においてPReLU-netというモデルが人間の分類精度を超えました。GPT-3という言語モデルが大学のレポート課題に合格しました。
ディープブルーはIBMが開発したチェス専用のスーパーコンピュータで1997年に人間のグランドマスターに勝利しました。ディープブルーはディープラーニングを使用してはいません。
人工知能をめぐる動向と問題
探索・推論
探索木
1960年代頃の第1次AIブームの研究の1つで探索木の考えは現在も汎用的に使われています。1ステップずつ全ての場合分けを同時にメモリに保存しながら深くしていく探索方法を幅優先探索と言います。他にも行き止まりかゴールに着くまで一度探索し、行き止まりの場合は他の場合分けをまた最後まで探索する方法を深さ優先探索と言います。
幅優先探索=縦型探索、深さ優先探索=横型探索とも言います。
ハノイの塔
ハノイの糖を考えます。構造自体単純ですが、円板の枚数が増えるたびに、指数関数的に手間が増えます。これを組合せ爆発と呼びます。
バックギャモンとは世界最古のボードゲームと言われます。スライディングブロックパズルとは、ケースの中に収められたコマを動かして目的の配置にするパズルゲームです。
探索手法
ボードゲームの問題ではコストを考えます。コストはある局面の状態が自分にとってどの程度有利かを表すスコアと言い換えられます。自分のターンがスコアが最大になり、相手のターンでは自分のスコアが最小になるてを選ぶだろうと仮定し、探索する手法があります。これをMini-Max法と言います。
通常は相手は自分に意地悪な手を打ってくると考えます。Negaとつくと相手が相手自身のスコアが高くなるような手を取ると仮定します。あくまでも通常のMini-Max法では深さ優先探索で、スコアは自分のスコアという点に注意しましょう。
αβ法
3手先読みのαβ法について深さ優先探索のMini-Max法で進めます。まず左の選択肢から探索します。DとEを探索しスコアが分かりました。この時は自分のターンなのでDを取ります。するとBは暫定2を取れるスコアだと判断します。次にFを探索し5とわかった時点で自分が5以上取れるとわかりました。それを相手も把握しているとすると、相手はスコアを低くする手を取りたいので、明らかにBとCではBを取るはずです。すると、Gは探索しても意味がないので、探索せずにすみます。このβカットにおいてβは現状2であり それにより大きい値が出ました。ここまでで、Aの手のスコアは2だとわかります。今度はH側の手を探索します。最初にKとLを探索すると、Kを選択するはずなので、Iの手は1だと判明しました。その時点で、仮に自分がHの手を選択すると、相手は相手は1以下の手を取れてしまうので、自分は確実にHでなくAの選択肢を取るべきです。よってJ以降のて探索する必要がなくなります。これをαカットと言います。αは2であり、それにより小さい値が出ました。
αβ法は条件が最も良い場合は、Mini-Max法の約2倍の速度で計算が終わるとされ、最も悪い場合でもMini-Max法と変わらないので、現在の探索アルゴリズムの中でも現役で使われているものです。
モンテカルロ法
ボードゲームにおいてスコア評価では小さな囲碁でもアマチュア初段に勝てなかったので、スコア自体の評価がそもそもあまり正しくないと分かってきたので、 モンテカルロ法を導入しました。結果の正誤を許容しつつ、数多くのシミュレーションをして最良な手(最適スコア)を探索(評価)していくという手法です。それぞれの手を差した後でランダムに1000回プレイし、買った数をそのままスコアに換算する考えです。
αβ法などはゲームの終盤で用います。モンテカルロ法では序盤中盤のスコアを暫定的に決めるようにしたら、小さい囲碁では人間のプロとほぼ同じレベルに達しました。ラスベガス法はモンテカルロ法の一種ですが結果が必ず1つに定まります。正しい結果を返せない場合は失敗を意味します。メトロポリス法はある状態から新しい状態をランダムに作った際に、それを棄却するか採択するかを考える方法です。
ロボットの自動計画
第1次AIブームの時に機会は四則演算や簡単な動作しかできなかったので、命令を簡単な処理に切り替える自動計画に焦点が置かれました。1971年にリチャード・ファイクスとニルス・ニクソンにより開発された前提条件。行動。結果の組み合わせで自動計画を記述できる言語をSTRIPSと言います。このような自動計画を端末の画面の中の小さな積み木の世界に存在する様々な物体を動かすことで完全に実現しようとする研究も行われました。実際にAIはこれらを実行して画面に反映できました。1970年にスタンフォード大学のテリー・ウィノグラードによって行われたこのプロジェクトをSHRDLUと言います。
自動計画は戦略や行動順序の具体化を言います。自動計画を行うものをプランナ(自動計画機)と呼びますが、初期状態、ゴール、アクションの集合の3つを入力して取ります。アクションの集合には、前提条件、行動、結果を与えます。
PDDL(planning domain definition language)はSTRIPSに触発されて開発された自動計画を記述する言語です。ASIMOはホンダが開発し、2000年に発表された世界初の二足歩行ロボットです。GPS(general problem solver)はハーバート・サイモンとアレン・ニューウェルが開発した汎用の問題解決のためのプログラムです。
SHRDLUは指示を実際に動作として端末の中で実行してくれるものです。第5世代コンピュータプロジェクトは経済産業省が1982年〜1992年まで行った国家プロジェクトです。シェーキーは移動能力のある世界初の汎用ロボットです。内部ではSTRIPSが使われています。Cycプロジェクトは一般常識をコンピュータに取り組もうというプロジェクトです。
知識表現
エキスパートシステム
第2次AIブームは知識表現の時代です。AIブームの火付けになった1つに1964年〜1966年にジョセフ・ワイゼンバウムによって開発されたELIZAがあります。対話ロボットの中でも決められたルールに従い会話するものを人工無脳と呼びます。ELIZAはオウム返しのような返答をしていましたが、これでも人間と対話していると感じる人は多かったです。
A.L.I.C.E.はELIZAに触発されて開発されました。その年に最も人間に近いと判定された会話ボットに授与されるローブナー賞の同省を過去三回受賞しています。AlexaはAmazonが開発したAI足ステントの名前です。自由度が高く、新たなスキルセットを開発し公開することができるので、簡単に実務に導入できるツールとして有用です。SiriはApple社製品向けのAIアシスタントです。
昔の日本語のチャットボットは人工無脳と語られるシーンがありました。
チューリングテスト
ある対話式の機械に対して人間的か判定するテストをイギリスの数学者の名前からチューリングテストと言います。何かしらのデバイスを通してAIか人間化を判定者がどれだけ見分けられたかで定量化するテストです。合格基準の1つは判定者の30%以上が対話相手が人間かコンピュータ化判断できないと判定することです。2014年にロシアのチャットボット「ユージーン・グーツマン」が13歳の少年という設定で初めて合格しました。
ローブナー賞とは毎年のチューリングテストで聴覚、視覚ともに人間と区別が付かない割合が30%以上ならば金賞で、聴覚のみ同様の評価ならば銀賞としています。2019年までに一度も金賞と銀賞を受賞したAIはおらず、最も人間らしい会話上の振る舞いを見せているコンピュータに送られる銅賞のみが毎年表彰され、賞金を出しています。
エキスパートシステム「Mycin」
1980年代にエキスパートシステムの世界的企業への導入によりAI研究が再度ブームになりました。このエキスパートプログラムの初期の例としてのプログラムはMycin(1970年代)です。これは伝染性の血液疾患を診断し、抗生物質を推奨するようにデザインされているプログラムです。
精度は65%と言われていおり、専門家の精度の80%より低いですが、専門家出ない人の診断よりは使えるといったものでした。Dendralは未知の有機化合物を質ろう分析法で分析したデータと、有機化学の知識を用いて適合する化学構造を割り出すプログラムです。アルゴリズム取引とは価格の変動パターンなど大量の市場データの分析による短期間の市場予測に基づき、取引の執行まで自動的に行うプログラムです。2020年でもMeta Traderというソフトウェアがあり、アルゴリズム群に対してエキスパートアドバイザー(EA)という名前がついています。Macsymaは世界初の数式処理を行うプログラムです。これはMITのProjectの一環で行われたものです。
近年の対話システム
2009年4月にIBMが開発したワトソンはアメリカのクイズ番組「ジェパディ!」にチャレンジました。ワトソンは問題で問われた質問を理解し、文脈も含めて質問の趣旨を理解し、大量の情報の中から適切な解答を選択し回答します。IBMはこの技術を医療やコールセンターの顧客サービスなどに活用できるとして開発を進めています。IBMはこれを人工知能ではなく拡張機能(Augmented intelligence)という形でAIと名付けていて、人間の補佐をする形で機能するものとしています。現在は実用例がありますが、チャットボットによろうフルオートな顧客サービスではなく、顧客サービスを行う人の手助けとして機能するものとして提供されています。
日本でも質問応答するAIとして東大合格を目指す東ロボくんというプロジェクトもありました。2011年頃から開発され最終的には進研模試で偏差値57.8をマークしマーチ合格レベルに達したと言われています。2016年に計画断念の報道がありましたが、2019年に研究者本人のツイートから研究は続けられ、2021年までの計画であると発言されました。
進化知能(AAdvanced intelligence)はAbeam Consultingが提供しているDX経営におけるデータ分析サービスです。絶対知能(Absolute intelligence)はDCコミックスのキャラクターです。抽象知能(Abstract intelligence)はアメリカの進学での言葉です。質問に回答するタスクをQuestion Answering(質疑応答、Q A)と呼びます。open-domain question anseringは膨大な都@smugの多数の文書を用いて、解答を推定します。QAタスクでは質問に関連する適切な知識に基づいて解答を推定することは求められますが、open-domain question anseringは問題を解くために必要な知識源を規定しません。kaggleでもコンペが開催されています。
東ロボくんは単語の羅列などから確率の高いものを選んでいるだけで、質問の意図や意味は理解していませんでした。しかしマーチレベルに達したことで現代の高校生の読解力に危機感が生まれ新井先生の書籍『AI vs. 教科書が読めない子どもたち』が出版されました。
りんなは2015年に日本マイクロソフト社が開発した会話ボットです。ディープブルーはIBMが開発したチェスAI専用のスーパーコンピュータの名前です。Tayはマイクロソフトが開発した会話ボットです。2016年にツイッターbotとして公開されましたが、調整と称してTayアカウントが停止されました。理由は、複数のユーザーによってTayの会話能力が不適切に訓練され、間違った方向のコメントをするようになったからです。
機械学習
機械学習
レコメンドシステムとは、利用者にとって有用と思われる情報または商品などを選び、それらを利用者の目的に合わせた形で提示するシステムです。
スパムフィルタとは受信したメールが正規のメールかスパムメール(迷惑メール)か判断するシステムです。特定物体認識とは画像中にヨーロッパホラアナライオンのオスといった特定の物体が存在するかしないかを判断します。OCRとは活字や手書き文字の画像データから文字列に変換する文字認識機能のことですが、古典籍のくずし字は認識が難解であるため機械学習を使用した手法は研究が進みつつあります。
一般物体認識は実世界の画像に対して、計算機がその中に含まれる物体を山、ライオン、ラーメンなどの一般的な名称で認識することです。
人工知能における問題
フレーム問題
1969年にジョン・マッカーシーとペトリック・ヘイズによって提唱され、哲学者ダニエル・でネットによりその具体的な思考実験が提案された問題で、ロボットは課題解決の枠にとらわれて、その枠の外を想像するのが難しいという問題をフレーム問題と言います。
The whole puddingという問題をダニエル・デネットは思考実験で考えました。シンボルグラウンディング問題は言葉と、それが示す映像や姿、質感などを機械は結びつけて捉えることができないのではないかという問題です。
中国語の部屋
チューリングテストは機械が人間かどうかを判定するテストとして1950年にアラン・チューリングによって提案されました。1980年に哲学者ジョン・サールによって発表された論文内で、チューリングテストの結果は何の指標にもならないという批判がされました。その論文内で発表された思考実験の名を中国語の部屋と言います。
テセウスの船はパラドックスの1つです。ある物体の構成要素が全て書き換えられた時、それは同一であるといえるかという問題です。哲学的ゾンビとは物理的には人間と同じ国造だが、意識がないものを指します。メアリーの部屋は全てが白黒の部屋で過ごしてきたメアリーは知識として色のついた世界を知っているが、突如色が見える世界に行った場合、新しく学ぶことがあるかという思考実験です。
シンボルフラウンディング問題
認知科学社スティーブン・ハルナッドにより議論されたもので、記号とその対象がいかにして結びつくかの問題をシンボルグラウンディング問題と言います。
身体性の問題とは、1980年代にロボット研究せやのロドニー・ブルックスが提唱したコンピュータには身体がないので、物体の概念までは捉えられないのではないかという問題です。彼はその後ルンバで有名にあるiRobot社の創業者です。ハルナッドはシンボルグラウンディング問題の提唱者の名前です。
自然言語処理の歴史
機械が自動的に言語を翻訳できないかという研究は第1次AIブームの時からすでに始まっていました。そういった翻訳を機械翻訳と言います。機械翻訳の手法は歴史に即して大きく3分割できます。
1つは1954年にジョージタウン大学でIBMが主体で研究を始めてから1970年ごろまで行っていたルールベース機械翻訳(PBMT)です。これは各言語の文法を人手で入力していき、変換していったが、限界があることと、言語自体が非常に柔軟であったので使いにくく上手くいきませんでした。
2つは1990年代にIBMが提唱したIBMモデルから取り入れ始めた統計的機械翻訳(SMT)です。この手法は現在の機械学習と類似しており、ある言語とその対訳を学習させてモデルとします。これにより以前の問題である人手でのルール追加による莫大なコストはかからなくなったが、それでも精度には問題がありました。
3つは2014年に発表されたニューラルネットワークを用いたニューラル機械翻訳(NMt)です。これにより精度が向上しました。データが溜まるほど精度が向上するので、現在はこの方法が主流です。しかし上の2つの手法にも利点があるので、一部の機能(構文解析など)は今も使われています。
統計的機械翻訳とニューラル機械翻訳は、コーパスベース方式などとまとめられます。形態素とは文をルールに基づいて区切った際の最小単位です。その形態素の品詞や活用形などを判別していく作業を形態素解析と言います。Mecabは形態素解析用パッケージです。構文解析やエンティティ分析という文章に既知のエンティティがあるかどうかを調べ、その単語に関する情報を分析するものなどがあります。現在は自動的に行ってくれるAPI(ある機能の転用を簡単に行えるようにしたもの)も豊富なので、APIを活用したプロダクトも続々と出てきています。
特徴量エンジニアリング
機械学習では、学習器(機械学習モデル)に与えるデータを説明変数(特徴量)と言います。特徴量について工夫する手法である特徴量エンジニアリングについて具体例をいくつか述べです。取引のログから一人当たりの平均取引時間を算出し、新たな特徴量としました。物体の画像データから輪郭情報を取り出し、新たな特徴量としました。文章データから単語の出現頻度を計算し、新たな特徴量としました。
特徴量エンジニアリングとは、取得済みデータから、データを加工し抽出することです。そのため、カメラの画質が悪いのでカメラを変えて取得したデータを特徴量としました。という主張は、データの取得前の話であり、既存のデータを加工することではないので、不適切です。
特徴表現学習
予測したい数値に関わるデータを集めることや、データから特徴量を人手で加工・抽出することは機械学習で重要です。しかしディープラーニングを活用すると、後者の過程で特徴量を自動的に得る学習が可能です。こういった特徴量の加工・抽出も学習器にさせることを特徴表現学習と呼びます。
特徴量の加工・抽出まで学習器が行うことを特徴表現学習または表現学習と言います。自然言語学習において機械は単語をそのまま扱うのは難しく、単語をベクトルに変換する必要があります。このようにしてできた表現を分散表現と言います。適切な分散表現が得られれば、機械は文章の意図をつかみやすくなります。適切な分散表現とは、各単語に対して適切な意味を表現するベクトルが得られていることを意味します。この分散学習の仕方と、文章読解を同時に学習することで、適切な表現を得られます。これを表現学習と言いいます。単語の分散表現は他のタスクにも転用でき有用です。
半教師あり学習は、学習の途中までは答え付きのデータで学習させ、そこからは答えのないデータ学習を行います。強化学習は報酬を得るために最適な行動が何かを行動しながら探索する学習のことです。教師なし学習は答えのないデータに対して、データのグループ分けをする学習です。
シンギュラリティ
2005年レイ・カーツワイルが出版した書籍で2045年には人間が自分自身よりも賢い人工知能を作ることにより、技術的特異点シンギュラリティが起きると予言しました。1.0の知能が1.1の知能を生み出すことができるならば、1.1も同様のことができうるはずで、そうなると技術的な進化が爆発的に起きるということを予見したものでした。
エキスパートシステムとは、専門家の知識を入れ込み、その意思決定能力を誰もが使える形にするものです。知識ベースと推論エンジンにより構成されます。
意味ネットワークとは知識をせんで結び、その関係性を表したもの。現在でもAIプロダクトの解釈性を高めるために使われます。
オントロジーとは意味ネットワークなどで用いられる知識の結びつけ方の規則です。
数理統計・機械学習の具体的手法
代表的な手法
学習の種類
教師あり学習の手法の例は、正解データが未知であるサンプルに対して、その値を予測するモデルを得るであり教師なし学習の例は、データに共通する特徴的な構造や法則を見つけることを目的とするで強化学習の手法の例はエージェントが自身の報酬を最大化するような行動指針を獲得するです。
教師あり学習について、正解データは目的変数、その他の変数は説明変数もしくは特徴量と言います。教師なし学習はクラスタリングなどで用います。強化学習は、正解を与える代わりに将来の報酬や利益を最大化するように特定の状況下における行動を学習する仕組みです。ボードゲームなどで目覚ましい活躍をしています。これらはアルゴリズムや手法ではなく、機械学習のタスクの種別の枠組みです。
教師あり学習
教師あり学習は大きく分類問題と回帰問題に分けられます。分類問題では正解データが質的変数(カテゴリ)であり、回帰問題では量的変数(連続値)となります。
分類問題は疾患の有無や性別などのカテゴリーで、回帰問題では年収や気温などの連続値です。分類問題は2値問題と、ラベルが3種類以上である多値分類に区分けできます。多値問題は、個々の観測がただ1つのクラスに属するマルチクラス分類と、同時に複数のクラスに属しうるマルチラベル分類に分けられます。画像の中で特定の物体の領域を予測するタスクや、レコメンデーションにおいて順位をつけた出力を行うタスクも、教師あり学習のアプローチになります。
教師なし学習
教師なし学習は、正解ラベルがないデータを学習し、データに共通する構造や法則を見つけ出すことを目的とします。その例はクラスタリングや次元削減(または次元圧縮)、活率変数の密度推定などが知られます。データを複数のグループにまとめるクラスタリングでは、グループ数の決定や、観測同士の似ている程度(類似度)の設計などが問題となる時があります。データをより少ない変数で要約しようとする次元削減では、いくつかの変数を用いれば十分か、より解釈しやすい変数の設計などが問題となる場合があります。
クラスタリングにおいて、数百のばらつき(標準偏差など)がある年収と数十程度のばらつきがある年齢が元の変数にある場合、それらをあらかじめ揃えるような前処理、または類似度の設計が重要です。
次元削減の時も、クラスタリングのときと同様に前処理が重要となる他に、重要な情報まで削ぎ落としてはいけないので、圧縮後の次元をいくつにするかが問題となります。例えば主成分分析では、スクリー基準やカイザー基準などが知られています。
異常な観測と正常な観測を分類する異常検知も教師なし学習として解かれることがあります。生存時間解析は、個体が死亡・故障するまでの時間を目的変数とした教師あり学習です。
強化学習
機械学習は、教師あり学習、教師なし学習、強化学習があります。教師あり学習は分類問題と回帰問題に分けられ、入力と出力の対応を学習するものです。教師なし学習は、入力のみのデータから、その背後にある構造を明らかにすることが目的です。代表的な教師なし学習のアルゴリズムには、k-means法や主成分分析があります。
過学習はモデルが特定のデータセットに過剰に適合してしまう状態です。深層学習は、ディープラーニングのことです。オンライン学習は新しくデータが追加されるたびに、そのデータのみを用いてモデルを逐次的に更新する仕組みです。
k-menas法はクラスタリングの代表的な手法の1つです。クラスタリングは正解がない状況下で分類問題を解くことに相当します。
機械学習の代表的な手法は教師あり学習、教師なし学習、強化学習です。しかし半教師あり学習、自己教師あり学習、距離学習などもあります。自己教師あり学習は、ラベルのないデータから機械的にラベルを作って学習する手法です。距離学習は、同じクラスのサンプル間の距離を小さくしながら、異なるクラスのサンプル間の距離を大きくするように学習する手法です。これらのような手法がどれが最適化?について研究することもディープラーニングの1つのテーマです。
教師あり学習の代表的な手法
線形回帰
線形回帰は、説明変数と目的変数の関係に直線や超平面を当てはめ、予測・説明する教師あり学習の手法です。実施は推定された回帰係数が意味のある数字かどうか、偏回帰係数が0を帰無仮説とした統計的仮説検定で判断されます。統計的仮説検定とは、観測された標本を用いて、その母集団の性質を判断する手続きです。多くの場合、ある特定の確率分布を帰無仮説として仮定し、その分布にデータが従っていないかどうか判断します。
正則化
正則化とは、学習の際にペナルティとなる項を追加することで過学習を防ぐことです。
サポートベクターマシンにおけるカーネルトリックの一部は、データを高次元に写像することで線形分離を可能にします。正規化とは平均と標準偏差をそれぞれ0と1にすることです。対数化、Box-Cox化、Yeo-Johnson変換などは、特徴量を標準正規分布に従うように変換しデータの分布を調整することです。
正則化は(最小化したい新たな目的関数)=(通常の目的関数)+(正則化項)で導入されます。Ridge回帰やLasso回帰が有名ですが、ロジスティック回帰やサポートベクターマシン、勾配ブースティング、ニューラルネットワークなど、多様なモデルに適用されることがあります。
正則化を線形回帰モデルに適用した例(L1とL2正則化)
過学習を防ぐためのテクニックに正規化がありますが、線形回帰に対してL1正則化を適用した方法をLasso回帰、L2正則化を適用した方法をRidge回帰と言います。どちらも正規化パラメータを大きくするに従い、Lasso回帰では回帰係数をスパースに(ちょうど0となるものが多くなるように)推定する効果が、Ridge回帰では回帰係数を0に近づける効果が強くなります。解は解析的に書けます。
ロジスティック回帰
ロジスティック回帰は、分類問題を解くための手法で、一般化線形モデルの一種です。マーケティングにおける適用としては、見込み顧客が購買行動に至る確率を予測できます。一般化線形モデルの1つであり、分類問題へ適用できるのは、ある事象が起きる確率pと起きない確率1ーpの比の対数、つまり対数オッズを線形回帰するためです。数式で表すと対数オッズは、log(p/(1-p))です。
回帰と名前がありますが、分類問題に適用されるモデルです。オッズという言葉は賭け事などでの賭け金がp/(1-p)倍になるような数値というオッズと同じものです。ただし手数料などが取られない場合です。ロジスティックジグモイド関数では、閾値を定め、回帰後の予測値がその値を上回ると1に、下回ると0と予測します。
サポートベクターマシン
サポートベクターマシン(SVM)という学習アルゴリズムは、識別境界近傍に位置する学習データサポートベクトルと識別境界との距離であるマージンを最大化するように線形の識別境界を構築し、2クラス分類を行います。データが直線や平面に分類できない時は、データを高次元特徴空間へ写像し、線形分離可能にした状態で判別を行います。写像に伴う計算量の増加を低く抑えるテクニックはカーネルトリックと言われます。
サポートベクターマシン(SVM)は明らかに所属クラスが分かる観測ではなく、判別境界の付近にある判断の難しい観測に着目する分類モデルです。このとき、判別境界に最も近い観測はサポートベクトルと呼ばれます。SVMでは高次元空間に写像することで線形判別を可能にする工夫が行われます。
線形分離可能にする高次元への写像を探すことは難しいですが、カーネル関数という関数を使うことで写像を具体的に探すことなく、高次元空間で学習を行うことができます。その際に計算量の少ない都合の良いカーネル関数を用いることをカーネルトリックと言います。SVMやガウス過程などで用いるカーネル関数には様々なものが存在します。線形カーネル、RBFカーネル、多項式カーネル、周期的カーネルなどです。多層のニューラルネットワークに体操するカーネル関数も存在します。サポートベクトルを用いる回帰モデルに、サポートベクトル回帰(SVR)があります。
カーネルトリックとは、カーネル関数を使うことで、高次元の特徴空間における内積を行わず、入力空間でのカーネルの計算に落とし込むアプローチです。行っていることに対して計算量が大幅に少なくて済みます。
決定木
決定木は、木構造を用いて分類や回帰を行う学習アルゴリズムです。木構造の2つに枝分かれする節では、条件分岐が行われ、先端の葉にたどり着くと、その葉に対応する値が出力・予測値となります。木を成長させていくと最終的には1つの葉に1つのデータが対応してしまうので、過学習がおきます。過学習を避けるために木の深さなどに注意する必要があります。
根ノードから葉ノードへ辿り着くと、数値やクラスなどの値が出力されます。それぞれの分岐は1つの特徴量に関するif文で表されるため、得られたモデルが解釈しやすいのがポイントです。木の幅や深さを増やすと(条件分岐を多くすれば)学習データに対して過剰に学習してしまうので、それらを制御する工夫が必要です。
時系列モデル
時系列モデルとは、時刻が進むにつれ、値が刻々と変化していくデータです。時系列データおよび時系列モデルに関しては、次の内容が大事です。時系列分析で重要な概念は、定常性という概念です。定常性とは、確率的な変動があるものの、時点に依存せず平均と自己共分散が一定である性質で、時系列分析する上で扱いやすいです。時系列データは、トレンド、季節成分(周期性)、ホワイトノイズという基本構造からなるものが多いです。ホワイトノイズとは、平均0、分散一定、かつ自己相関が0であって、何の情報も含まないノイズのことです。ARモデルとは、自己回帰モデルです。ある時刻データが1つ前の値を用いて予測式を作る場合、y_t=ay_(t-1)+e_tなどとできます。自己回帰という名の通り、自分自身の過去の値を用いて予測します。VARモデル(多変量自己回帰モデル)とは、ARモデルを多変量に拡張したモデルです。VARモデルの係数推定には何期分までのラグを取るのかを決定する必要があります。
定常性が満たされている時系列モデルでは分散も一定となります。分散は自己共分散のラグを0としたものであり、自己共分散一定の条件に含まれます。定常性を満たす代表例がホワイトノイズで期待値と分散がそれぞれ、0とσの2乗で、任意のj次の自己共分散が0となります。定常ではない時系列データのうち代表的なものにランダムウォークがあります。分散が時間と共に拡大していくという特徴を持ちます。
VARモデルを構成する各方程式は、自分自身のラグとモデルに含まれる全ての方程式のラグを説明変数とします。定数項を除く場合、4変数でラグが2であれば8個の変数でラグが4であれば32の説明変数が必要となり、自由度が著しく低下します。長いラグを取ると説明変数が増えるので、予測の信頼度が低下します。
擬似相関
仮に相関係数の値が高く出た場合、相関関係が実際にある可能性が高いものは、降水量と傘の売上です。
アイスの消費量と熱中症患者の数は、気温という第3の要素により変化します。年収と血圧、および算数の成績と身長は、年齢という第3の要素によって擬似相関の関係があります。
ランダムフォレスト
ランダムフォレストは、複数の決定木による出力の多数決・平均を行うことで分離・回帰を行います。弱学習器を複数合わせて汎化性能を高めることをアンサンブル学習と言います。ランダムフォレストには、木の数を多くしても過学習しにくいメリットがあります。
バギングと呼ばれるアンサンブルの方法が使われ、並列にそれぞれの決定木が学習されます。そのため計算機の環境によっては簡単に高速化できるメリットがあります。決定木をそれぞれ並列に学習することにより、決定木の数が増えても精度が悪くなることはありません。そのため木の本数ではなく、それぞれの決定木のパパラメータ(木の深さや葉に入る最小のサンプル数など)を制御することで汎化性能を高めます。このメリットはランダムフォレストの大きな特徴で、ビジネスにおいてもベンチマークとなるモデルとして利用されます。
アンサンブル学習は、バギング、ブースティング、スタッキングの3種類があります。
勾配ブースティング
勾配ブースティングとは、特にテーブルデータの教師あり学習において、幅広いデータセットで高い精度を出すモデルです。アンサンブル学習であるブースティングの1つであり、弱い学習器を次々と逐次的に学習するモデルです。2つ目以降の弱学習器は、それまでに学習したモデルによる予測とデータセットの違いを考慮して学習が行われます。弱学習器としては、さまざまなモデルを使用できます。
ランダムフォレストが、弱学習器に決定木を使用する具体的なモデルであることに対し、勾配ブースティングはあくまでもブースティングを実行するための1つの手法です。そのため、弱学習器には具体的なモデルを仮定せず、決定木の他に、線形回帰モデルなどが利用されることもあります。勾配ブースティングの弱学習器に決定木を使用したものは勾配ブースティング木と呼ばれ、特にテーブルデータの教師あり学習で人気のあるモデルです。
GBDTライブラリ
勾配ブースティングの弱学習器に決定木を利用した勾配ブースティング木(GBDT)は、その高い精度と使いやすさから、さまざまなライブラリが開発されてきました。代表的なGBDTのライブラリとして、catboost、lightgbm、xgboostがあります。
adaboostは勾配ブースティングと同様のブースティングの1主砲で、GBDTを実装したライブラリではありません。xgboostはDMLC社により開発されたオープンソースのGBDTライブラリです。既存のPythonライブラリに比べて計算が速く、コンペティションで高い精度を誇ったことにより人気が出ています。lightbmはマイクロソフトにより開発されたライブラリで、xgboostよりさらに速い計算速度と、モデルの軽さから人気があります。catboostはロシアの検索エンジンを運営するYandex社により開発されたライブラリで、カテゴリ(質的変数)の扱いなどに工夫があります。適切に学習されたパラメータが設置されていれば、これらのライブラリで精度に大きく差が出ることは稀です。
バギング
アンサンブル学習の1手法であるバギング(bagging)はboostrap aggregatingの訳語です。バギングでは、データセットに多様性を持たせ、それぞれの学習した弱学習器をまとめることで汎化性能を高めます。個々のデータセットは、もとの学習データから同じ大きさのデータを重複ありサンプリングすることにより作られます。この作業はbootstrapやbootstrap samplingと呼ばれ、バギングの名称の由来となっています。
重複ありで同じ大きさのサンプルを得る作業はブートストラップやブートストラップサンプリングと呼ばれ、サンプルを擬似的な母集団とみなす統計的手法です。
ブースティング
アンサンブル学習の1手法であるブースティングは、同じ種類の弱学習器を逐次的に(直列的に)作成する方法です。それまでの学習によるモデルを修正する形で、1つずつモデルを学習させます。そのため弱学習器の数が増えすぎると過学習してしまうという特徴があります。ブースティングを使用したモデルとしては、adaboostや勾配ブースティング木があります。
モデルをよくモニタリングし、適切な弱学習器の数を決定しないといけないことに注意が必要です。
スタッキング
アンサンブル学習の1手法であるスタッキングは、あるモデルによる予測値を新たなモデルの特徴量(メタ特徴量)とする手法です。このとき、もとの特徴量で学習したモデルを1層目のモデル、メタ特徴量で学習したモデルを2層目のモデル、とすると、その階層は3階層になることがあります。foldに分割せずに学習データ全体を用いて学習したモデルで、そのデータに対して予測してしまうと、あらかじめ正解を知ってしまうため過学習が起きてしまいます。よって実際にはデータを分割して使うことが多いです。
データセット1で学習したモデルで、データセット2を予測し、新たなメタ特徴量としますが、学習に使用したデータに対してそのままメタ特徴量を使ってはいけないことに注意が必要です。勾配ブースティング木や線形回帰などを始めとし、多様性の観点から各層でさまざまなモデルが使用されることが普通なので、最終的な解釈性が非常に低くなるという特徴があります。
ベイズの定理
ベイズの定理であるP(A|B)={P(B|A)P(A)}/P(B)において事象A、Bをそれぞれ原因、結果とします。左辺は結果が分かっているもとでの原因の確率なので事後確率で、右辺のP(A)は結果が分かる前のAの確率なので事前確率で、P(B|A)は結果に対する原因のもっともらしさを表すので尤度と呼ばれます。
尤度について、これは原因やパラメータを仮定した(具体的なパラメータで条件付けした)ときのもっともらしさとして解釈できます。
尤度
確率モデルにおいて、想定するパラメータが具体的な値をとる場合に、観測されたデータが起こり得る確率のことを尤度と言います。例えばコインを3回投げて3回とも表のとき、表が出る確率をp=0.4とすると、尤度は0.064となります。
尤度をもとにすることで、パラメータのもっともらしさをモデルで比較することができます。尤度が最も大きくなるようにパラメータを推定する方法を最尤推定と言います。問題文の事象を最尤推定するとp=1と推定されることからも分かるように、データが少ない場合やモデルが複雑な場合の最尤推定では過学習に注意する必要があります。
最尤推定値
最尤推定もしくは最尤法とは、データからモデルのパラメータを推定する方法の1つです。表の出る確率がpのコインがあり、コインを4回投げたところ、出た面は順に、(表、表、裏、表)であったとき、pの最尤推定値は0.75です。
本問では尤度はp^3-p^4になります。これを最大にするpを求めると答えが求まります。
教師なし学習の代表的な手法
k-means法
クラスタリングの1手法としてk-means法が知られています。これは非階層的なクラスタリングであり、あらかじめクラスタ数kを指定する必要があります。各観測が所属するクラスタは1つであり、複数のクラスタを跨ぐことのないハードなクラスタリングです。
次の問題のようなものを階層的クラスタリングと言います。観測が各クラスタに属する割合や確率を出力し、どのクラスタに属するかを決めてしまわない方法をソフトクラスタリングと言います。所属クラスタが複数考えられる状況など、曖昧さを維持したい場合に有用です。
階層的クラスタリング
縦軸はクラスタがまとめられる距離、横軸は各観測のラベルとします。縦軸に対し閾値を定めることで、実際に複数のクラスタに分けられます。閾値を2.5とすると、クラスタ数は2となり、閾値を1.5とすると、クラスタ数は3となります。
レコメンデーションアルゴリズム
ウェブサイト上のコンテンツレコメンデーションの手法には、新着順や人気順にランキングを表示するものをはじめとし、様々なものがあります。これらに付随するコールドスタート問題に対する説明は次が大事です。
コールドスタート問題とは、レコメンデーションに必要なデータが十分に集まっていない段階では、望まれる成果が上がらないような問題のことです。コールドスタート問題の解決策として、売れ筋の商品を提示するなどの、個別のユーザーやアイテムに依存しない方法でレコメンドするといった対策や、ユーザーの行動をできるだけ早くレコメンドに反映できるシステムを強化することなどが考えられます。ビッグデータの活用による解決も考えられます。たとえばあるユーザーが「九州 お寺」「九州 天気 週末」と検索をしているデータから、ユーザーが週末に九州の寺へ参拝に行こうとしているかもしれないという仮説が立てられます。一方で、過去に同じような検索をしたユーザーの予約情報や検索履歴等のビッグデータから作成したレコメンドモデルを用いることで、「九州の寺院巡りツアー」のように、ニーズにある程度合致したプランを提供できると考えられます。
レコメンデーションとして何を推薦するかを決定する仕組みをフィルタリングと言います。
コンテンツベースフィルタリングでは対象アイテムの特徴から、ユーザーの嗜好の傾向にあった特徴を持つアイテムをレコメンドします。この方法では、推薦対象の属性が分かれば推薦が可能という点で、コールドスタート問題には対応しやすいです。協調ベースフィルタリングではユーザーの過去の行動履歴(購入・チェック履歴)からアイテムや利用者間の類似度を計算し、類似したアイテムをレコメンドする方法です。この方法では、レコメンドにおいて他顧客のデータを利用することから、コンテンツベースフィルタリングよりも、意外性のある推薦が行われるのがメリットの1つです。課題としては、新規のアイテムに対してレコメンドができないことです。サービスの利用がほとんどない利用者に対して、嗜好にあったレコメンドを出すことが難しいことが挙げられます。
コールドスタートの具体的な解決策の1つとしてハイブリッドモデル(協調ベースとコンテンツベースのフィルタリングを組み合わせたモデル)を利用します。例えばイギリスのLyst社が開発したLight FMがあります。ユーザーとアイテムのメタ情報(ユーザーの属性、取り扱う商品のジャンル、キーワードなど)を活用し、コールドスタート問題を解決することができます。高精度で動作が軽くPythonのコードセットが準備されていることなどが評価されています。
主成分分析
主成分分析とは、相関を持つたくさんの変数から、全体のばらつき(分散)を最も良く表す変数を合成する手法です。主成分は元の変数の数だけ合成されますが、 上位の主成分のみ取り出すことで時限削減を行うことができます。また、主成分同士の相関は0となります。
第2主成分は第1主成分の方向と直交するように与えられます。以降も同様です。
主成分の概念
この図のデータに対して主成分分析を行った結果、第1主成分と第2主成分の軸を描いた図として適切な選択肢を選ぶと、以下になります。
寄与率(主成分がばらつきを説明する大きさ、主成分に対応する固有値の大きさ)の大きい順に第1主成分、第2主成分・・・とします。
特異値分解
特異値分解(singular value decomposition)SVDは行列を分解する方法の1つで、ある行列を特異ベクトルと特異値に分解します。特異値分解ではある行列AをA=UDVT(Tは転置)と表します。これについて以下の内容が大事です。
行列を分解することで、成分の配列という表現からは明らかではない行列の機能的性質について情報を得ることができます。実行列はすべて特異値分解可能です。また特異値分解の方が、固有値分解よりも多くの行列に対して適用できます。
行列Dは正方行列でなくても特異値分解を適用できます。Dが正方行列である必要があるのは、固有値分解です。特異値分解を用いることで、Dが正方行列出ない場合にも、固有値分解と同じようなメリットを享受できます。Dの対角成分は行列Aの特異値と呼ばれ、Uの列は左特異ベクトル、Vの列は右特異ベクトルと呼ばれます。
データの視覚化
多次元尺度構成法(multi-dimentional svaling)MDSについて述べると、多次元尺度構成法は、計量的多次元尺度構成法と非計量的多次元尺度構成法に大別でき、前者は量的データを、後者は質的データを扱います。
多次元尺度構成法は、対象間の類似度をできるだけ保つように低次元空間で表す手法です。主に心理学の分野で発展してきた手法です。心理学では、さまざまな要因が絡み合った現象を取り扱うことが多いので、錯綜したデータの処理に利用されてきました。
手法の評価
データの扱い
学習データだけでなく、未知のデータに対しても正しく予測できる能力のことを汎化性能と言います。モデルの汎化性能を測るために、交差検証法が利用されることがあります。
再代入では精度が高く出ても過学習している恐れがあります。モデルの汎化性能を測るための解決策としては、学習データとは別の評価用データを用いることがあります。評価用データの用意の仕方としては、ホールドアウト法や、交差検証法があります。
ホールドアウト法
モデルの性能を測る検証用データの用意の仕方として、ホールドアウト法が知られています。これは学習データを2分割し、一方を学習に、もう片方を評価に用いる手法で、次の内容が欠点となります。学習用データが減ります。パラメータの変更などを何度も行うことにより、評価用データに過学習する恐れがあります。データの分割の仕方によって結果が変わります。
交差検証法
モデルの未知のデータに対する当てはまりを測る方法に、交差検証法(cross validation)があります。これは手元のデータを複数のブロック(fold)に分割し、そのうちの1つをテスト用に使い、残りを学習データとすることを、テスト用データを入れ替えて全てに対して行う方法です。ブロックの数をサンプルの大きさとしたものは1つ抜き(Leave one out)法と呼ばれます。
交差検証法でもホールドアウト法と同様に、分割の仕方で結果が変わるなど、何度もパラメータチューニングや特徴量の推敲を行うと過学習してしまう恐れがあります。
評価指標
回帰
モデルの精度を測る評価指標はさまざまなものが存在します。回帰問題で代表的な評価指標としてRMSEが知られています。これはMSEの平方根を取ったものです。
分類
2クラスの分類問題として、モデルによる予測クラスと真のクラスを分割表としてまとめられます。
この表は混同行列と呼ばれ、( )内を埋めると次のようになります。
真陽性(TP) 偽陽性(FP)=α過誤(第一種過誤)
偽陰性(FN)=β過誤(第二種過誤) 真陰性(TN)
真偽については、予想が当たっていれば真、外れていれば偽
陽陰については、予測が正であれば陽性、負であれば陰性です。
データリンケージとはデータ漏洩と言われます。予測の時点では利用することができない情報を含むデータを用いて、モデルを構築した際に発生する問題です。例えば2000~2019年のデータがあり2018年の売上を予想したいとき、2018年以外のデータを用いることができますが、未来を予想したいとき、そのさらに先の未来のデータを活用することは不可能のため、利用できないモデルが出来上がってしまいます。
二値分類の評価指標
二値分類を行ったところ、混同行列が得られました。このモデルを評価するために、ある指標を用いて精度を測りました。結果(30+45)/100=0.75が評価値として得られました。この評価指標は正確率(accuracy)です。
正例。負例の数によらず正しく当てられた割合を正確率と言います。大半を占めるクラスに対する予測精度の影響を受けるため、少数クラスを正しく予測する場合や、一部のクラスにサンプルの大半が集中ている場合には注意が必要です。
二値分類の評価指標(適合率と再現率)
二値分類における混同行列において、評価指標として適合率や再現率などが知られています。適合率はTP/(TP+FP)、再現率はTP/(TP+FN)です。ある疾患(正例)を検出する問題を考えたとき、適合率は陽性判定のうち実際に疾患を有する人の割合で、再現率は疾患を有する人のうち正しく陽性判定できた割合を示す指標です。
正例(疾患を有する)と予測することを陽性判定と言います。適合率と再現率の間には、一方を高めればもう一方が下がってしまうトレードオフの関係があります。その中庸を取るために、両者の調和平均F値が評価指標として用いられることがあります。
F値
2クラスの分離問題における、モデルの予測精度を測る指標にはさまざまなものが存在します。代表的なものには正解率や適合率、再現率、F値などがあります。正解率は実際に予測が当たっているデータの割合で、適合率は、真と予測したデータのうち実際に真であるものの割合です。F値は、トレードオフの関係にある適合率と再現率の調和平均として定義されます。
陽性を多く出す検査では、FNが減るため再現率が高くなります。しかしFPが増えるため適合率が低くなります。
ROC曲線とAUC
二値分類において、モデルの性能を評価するためにROC(receiver operating characteristic)曲線を描くことがあります。この曲線は判別の閾値を動かした時の真陽性率と偽陽性率の関係をプロットしたものです。ここでは横軸に偽陽性率、縦軸に真陽性率をとるものとします。ROC曲線を書いたあとは、曲線の下側の面積であるAUC(area under the curve)でモデルの評価を行うことができます。モデルがランダムな予測をする場合、ROC曲線は直線になり、AUCは0.5となります。モデルの性能が上がるほど曲線は左上に張り出し、AUCは1に近づきます。
各クラスに属する予測確率が与えられたとき、予測確率が1なら正例と判断すれば良いですが。0.9、0.8、0.7となっていったときに、どこからを正例として分類するかは問題によって異なります。予測確率のどこからを正例に分類するか、の閾値をさまざまに変化させたとき、偽陽性率と真陽性率の推移をプロットしたものをROC曲線と言います。
解釈性をもたらす研究
ブラックボックスな(解釈性の低い)モデルを解釈する手法の1つとして、2016年にLundberc ahd Leeにより発表された、強力ゲーム理論を応用しているSHAPが近年注目されています。SHAPは1つのデータにおける予測値の解釈について使えるだけでなく、予測値と変数の関係を見ることができるなど、ミクロな解釈からマクロな解釈まで網羅的に行える有用な解釈手法です。この方法はすでにPythonによるパッケージが開発されており、実務でも多く活用されています。
SHAPは決定木系のアルゴリズムや、ニューラルネットワークの派生アルゴリズムでも多様に活用できます。LIMEは同様の技術でSHAPの前によく使われていました。Anchors、influenceも解釈に関する1つのアプローチです。LIME(local interpretable model-agnostic explanations)はニューラルネットワークやランダムフォレストなどの複雑なモデルを、より平易で解釈しやすい線形モデルやルールモデルに近似し、居所的説明を生成する方法です。ただし、モbitch流全体を線形回帰モデルで近似することはできないので、居所的なサンプリングにより線形回帰モデルを生成します。
青で塗られる部分は、分類モデルが正(+)と分類する範囲で、白い部分はモデルが負(○)と分類する範囲です。記号の大きさはサンプリングされたインスタンスと興味のあるインスタンス間の近接度による重みづけの効果です。太い線だけでは完全に分類できないことがわかります。LIMEでは太字の+の周辺のデータに対してサンプリングを行い、解釈可能なモデルを学習させ、元の分類モデルを近似します。
モデル自体の評価
一般に、AIモデルの変数・パラメータが増え、複雑になるにつれて、与えられたデータをうまく説明できるようになる(ある入力データから、予測対象である値やクラスを高精度に推定できることです)しかし、そのようなモデルは不必要に複雑である場合があり、その結果過学習に陥ることもあります。モデルの汎化誤差の構成要素は、バイアスとバリアンス、データに含まれる本質的なノイズです。機械学習モデルの学習の目標は、バイアスの2乗、バリアンス、データに含まれる本質的なノイズの3種類の誤差の和である汎化誤差を最小化することです。オッカムの剃刀とは、ある事柄を説明するには、必要以上に多くを仮定すべきではないという考えです。統計学や機械学習の分野では、モデルの複雑さ、変数の多さとデータへの適合度とのバランスを取るために、オッカムの剃刀的な発想を利用します。AIC(akaike information criterion)赤池情報量基準は、AIC=ー2×(最大対数尤度)+2×(パラメータ数)です。パラメータが増えること自体がペナルティとなります。
バイアスとは予測値の平均と正解値とのずれで、学習データとモデルとの予測の誤差を表現します。バリアンスは、予測値相対のばらつき具合です。モデルを複雑にするとバイアスは減少しますが、バリアンスは増加します。これを過学習と言います。AICを用いることは、誤差が同じ程度ならパラメータ数の少ないモデルを選ぶべきというオッカムの剃刀の考えが強調されます。
この説明はとてもわかりやすいですね!
そうですね。本書『最短突破 ディープラーニングG検定(ジェネラリスト) 問題集 第2版』はこのような気付きが多く、素晴らしい1冊です。
ディープラーニングの概要
G検定では、ニューラルネットワークが長年解決できずにいた問題の説明や、改善した手法についても理解しておく必要があります。
ニューラルネットワークとディープラーニング
問1
ニューラルネットワークにおける順伝播について重みはwです。
xは入力、bはバイアス、ψは活性化関数、y’は出力です。xを各ノードに私、y’を求めます。重みwとバイアスbを合わせてパラメータと呼びます。例えばアイスの売上を推定したいときに、x1が気温とすると、気温が最も売上に影響を与えるため、それに対する重みw1が大きくなるように学習します
ニューラルネットワークモデルの構造
ニューラルネットワークは複数のニューロンが集まった層構造を内部に持ちますが、隠れ層に関して、中間層とも呼ばれます。入力と出力を対応づける関数に相当します。複数の層を持つことができます。
隠れ層のデザインの自由度は高く、その自由度の高さがニューラルネットワークの優れた表現能力の要因となっています。回帰問題では恒等関数が、分類問題ではソフトマックス関数が使われます。隠れ層の活性化関数は、ジグモイド関数やReLU関数が使われます。
単純パーセプトロンと多層パーセプトロン
ニューラルネットワークの原点として単純パーセプトロンの特徴として適切なものは、隠れ層を持たないことです。
単純パーセプトロンは線形分類しか行えません。多層パーセプトロン(MLP)は1層以上の隠れ層が存在し、入力層と出力層を合わせて3つ以上の層が存在します。これにより非線形分類も可能です。
ニューラルネットワークの層の数と表現力
一般に隠れ層を増やしたニューロンネットワークをディープニューラルネットワークと呼びますが、隠れ層を増やす目的は、モデルの表現力を高めるためです。
層の数に対して表現力は指数関数的に上がっていきます。しかし層を増やせば学習時間も増えるので、他の事前学習済みモデルを目的のモデルの初期値に利用する、転移学習などの効率的な学習のための工夫が求められます。また、モデルの表現力が上がるほど、過学習の可能性が上がります。モデルの表現力が高いと、さまざまな関数を表現することがあるので、複雑な関数であっても過剰適合できてしまうためです。また、層を増やすことで重みが大きくならないようにできる効果はありません。
ニューラルネットワークの原点
ニューラルネットワークはもともと人間の脳の構造を真似しようと考えらえれた手法ですが、そこから解きたい課題の主題に応じて工学的にさまざまなアプローチが考えられ、さまざまなモデルが考案されました。
この原点である形式ニューロンは神経科学社・外科医のマカロックと、論理学者・数学者のピッツにより1943年に発表され、人工知能分野の研究に大きな影響を与えました。心理学者・計算機科学社のローゼンブラットは1958年に形式ニューロンを基にしてパーセプトロンを開発しました。1969年にミンスキーがニューラルネットワークの限界を指摘し、しばらくは人気の手法ではありませんでしたが、バックプロパゲーションの出現や活性化関数の工夫などを経て、今ではニューラルネットワークの層を深くしたディープニューラルネットワークを始めとし、さまざまなディープラーニングのモデルが登場して使わています。
ディープラーニングはニューラルネットワークを応用した手法
ディープラーニング(深層学習)では、大規模なラベル付けされたデータとニューラルネットワークの構造を利用して学習を行います。
ディープラーニングのモデルはディープニューラルネットワークとも呼ばれます。データから直接特徴量を学習できるので、これまでのような手作業の特徴抽出は必要がなくなりました。GAN(敵対的生成ネットワーク)はGenerator(生成者)とDiscriminator(判定者)の2つのネットワークが競合することで学習されます。Gneratorが入力データににたデータを生成し、Discriminatorがそれが学習データ化Generatorが生成したデータ化を判定します。それらのネットワークを互いに競わせて入力データの学習を進めることで、徐々に生成データが本物に近づき、クオリティの高いデータを生成できます。強化学習では、将棋や囲碁などのゲームAIが打ち手を学習する際や、自動運転における状況判断の学習に活用されます。
信用割り当て問題と誤差逆伝搬法
信用割当問題とは、一連の行動によってある結果が得られたとき、その結果に対して各行動の貢献度がどれくらいであるのかを求める問題です。この問題はニューラルネットワークにおいて、モデル出力に貢献しているパラメータが一体どれなのかを見つける問題として知られています。もし、この問題が解決できないと、どのパラメータを最適化すれば良いかわからないので、モデルの最適化が困難になります。ここで、ニューラルネットワークにおいて、この問題を解決した手法は誤差逆伝搬法です。
勾配降下法は、あるパラメータの誤差に対する勾配が分かったときに、その勾配を用いて最適化するものです。グリッドサーチとはニューラルネットワークにおいて学習率などのハイパーパラメータの最適な組み合わせせを探索するものです。主成分分析とは。多くの特徴量を少ない特徴量に縮約するために用いられる手法です。
勾配消失問題
ニューラルネットワークを多層化することで生じる問題は勾配が消失し、学習が進みづらくなることです。
ニューラルネットワークを多層化すると、誤差逆伝搬法においてそれぞれの層で活性化関数の微分がかかるので、勾配が消失しやすくなり、学習が進まなくなることを勾配消失問題と言います。活性化関数をジグモイド関数からReLU関数に変更したり、事前学習を行なったりすることでこの問題を回避しましたが、複雑なモデルでは勾配消失問題は依然として課題となっています。
次元の呪いとは、扱いデータの次元が高くなるほど、計算量が指数関数的に増える現象です。トロッコ問題は、倫理学における思考実験の1つで、ある人を助けるために別の人を犠牲にして良いのか?を問うものです。状態行動空間の爆発は、強化学習における課題で、状態と行動の組みに対して定義される値を保存するための領域が極端に必要になってしまうものです。
ブラックボックス問題とは、AIの自ら膨大なデータを学習し、自律的に答えを導き出す特性上、その思考のプロセスが人間にはわからないということです。
ジグモイド関数の微分と誤差逆伝搬法の勾配消失
ニューラルネットワークにおいて、隠れ層を増やすと誤差のフィードバックがうまくいかなくなることがあります。大きな原因の1つにジグモイド関数の特性があります。これは微分すると値が小さくなることです。
以前にニューラルネットワークの活性化関数として用いられたジグモイド関数についてのグラフは以下です。
ジグモイド関数の微分の最大値は0.25です。これは1よりだいぶ小さいので、隠れ層を遡る(活性化関数の微分が掛け合わされる)度に伝播する誤差がどんどん小さくなります。その結果、入力層付近の隠れ層付近に到達するまでに誤差がなくなってしまうという問題です。これを勾配消失問題と言い、ニューラルネットワークを深くする大きな妨げになりました。現在では代わりにReLU関数を用いることで勾配消失が起こりにくくなりました。勾配が消失しやすいと、学習が進まなくなります。
制限付きボルツマンマシン(RBM:resgtriceted boltzmann machine)
ディープラーニングにおける事前学習(pre-training)は次元削減に役立つと言われます。その中でも制限付きボルツマンマシン(RBM)とは 2層のニューラルネットワークであり、深層信念ネットワーク(deep belief networks)の構成要素です。
ヒントンにより開発されたRBMは次元削減、分類、回帰などが可能です。
オートエンコーダは出力ユニットが直接入力ユニットに接続される単純な3層ニューラルネットワークです。情報量を小さくした特徴表現を獲得するので、出力を入力に近づけるように学習するニューラルネットワークです。ディープラーニング用に改良したものを積層オートエンコーダ(stacked autoencoder)です。
オートエンコーダも事前学習の1種であり、入力データの最も効率的でコンパクトな表現(エンコード)を見つけます。
事前学習によるアプローチ
オートエンコーダの構造
積層オートエンコーダー(stacked autoencoder)について、これは複数のオートエンコーダの隠れ層(中間層)を積み重ねたもので、次の構造をしています。
ここで積層オートエンコーダでは、勾配消失の問題を回避してニューラルネットワークの積み重ねを学習するために入力層に近い層から順に逐次的に学習を行うという方法で学習を行いました。
これによりそれぞれの層で重ねが調整済みとなっています。このようにオートエンコーダを順番に学習させていく手法を事前学習と言います。
積層オートエンコーダにラベルにラベルを出力
積層オートエンコーダにおける事前学習は、入力と出力を同じものになるように学習を進めていきますが、これは教師なし学習です。事前学習によってデータに含まれる重要な特徴を取り出すことができます。一方で、分類問題や回帰問題といった教師あり学習を行うには、事前学習済みの積層オートエンコーダに出力層を追加し、調整を行うといった工夫が必要です。ここで、積層オートエンコーダで分類問題を解く際に追加する出力層が持つ活性化関数はsigmoide関数またはsoftmax関数です。
最後に追加する層は出力層です。二項分類の場合はsigmoid関数、多項分類の場合はsoftmax関数を出力層に考えます。回帰問題の場合は、出力層に線形回帰層を用います。このように新たな出力層を追加した場合は、出力層の重みを調整するためにネットワーク税帯を学習して調整するファインチューニングが必要となります。積層オートエンコーダを用いるモデルでは、初めに事前学習によってデータの特徴量を学習し、その後出力層を追加してファインチューニングを行う2つの工程で構成されます。
オートエンコーダの入力データの特徴
オートエンコーダ(自己符号化器)について考えます。基本的にオートエンコーダとは、入力と出力の形が同じになるようにした中間層を1つ持つニューラルネットワークです。ここで、オートエンコーダでは、入力と出力が同じものになるように学習を行います。このときオートエンコーダでは、中間層の次元数を入力層の次元より小さくするような構造にすることで、入力データに含まれる重要な特徴を抽出できます。
一般的にオートエンコーダは入力層の次元数と比べて中間層の次元数が小さくなるような構造をしています。このような構造により、オートエンコーダでは入力されるデータの情報を圧縮している(エンコード)と共に、圧縮されたデータから元のデータを復元している(デコード)と考えることができます。
ハードウェア
ディープラーニングとGPUの相性の良さ
ディープラーニングの根幹のパーセプトロンのアルゴリズム自体は1950年代に提案されましたが、莫大な計算量が必要なものや、SVMなどが人気であったので、長き日に渡り日の目を見ませんでした。近年では、その学習が並列計算と相性が良いことから、GPUを利用して短時間での学習が行われています。
ディープラーニングのアイデアや技術自体は多層パーセプトロンの形で昔からありましたが、層を深くした時の計算量が非現実的でした。計算は行列の積和演算で、これは画像やCGの分野でポリゴンの処理が得意なGPUに向いている計算です。近年はこの相性の良さが注目され、畳み込みニューラルネットワーク(CNN)などのアイデアが次々と実現可能となりました。
CPU
CPUの主な役割はコンピュータ全体の計算であり、複雑な命令の逐次計算な計算を得意とします。CPUのコア数は通常数個であるのに対し、GPUのコア数は数千個です。
CPU(central processing unit)はコンピュータ全体の処理を担います。メモリやハードティスクなどの周辺機器とデータをやり取り・制御しています。そのコアは少数で高性能で、多様なタスクを順番に処理していくことに特化しています。
GPGPU
GPUは画像処理に特化したプロセッサで、GPUを用いて汎用的な演算を行わせるための技術であるGPGPUを適用することで、ディープラーニングに応用できます。NVIDIA社が提供する汎用並列コンピューティングプラットフォームにCUDAがあります。
GPGPU(general-purpose computing on GPU)の主要メーカーのNVIDIA社が開発したCUDAはGPU向けの汎用並列コンピューティングプラットフォームです。深層学習のフレームワークは、Keras、PyTorch、Tensorflowなどです。
TPU
Googleが開発する、ディープラーニングの学習・推論に最適化された計算ユニットにTPUがあります。ディープラーニングでは演算の精度(倍精度演算など)がそこまで求められれないので、精度を犠牲にすることで高速化を行なっています。GPUなどは演算中の途中結果をメモリに読み書きしますが、TPUでは回路内で結果を渡すことでメモリへの読み書きを減らし、高速化を図っています。
TPU(tensor processing unit)はディープラーニングの学習・推論に最適化されており、タスクによってGPUの数十倍のパフォーマスを発揮します。Googleの提供するクラウドサービスGCP(google cloud platform)上で使用でき、誰でも簡単に試せます。
ディープラーニングの手法(1)
理論的な側面に加えて、多くの用語の違いまで出題されます。それぞれの内容の流れと用語を理解して、区別できるようにしておきましょう。
活性化関数
シグモイド関数
シグモイド関数y=1/(1+e^(-x))は入力x(全ての実数)に対して、出力yの範囲は0≦y≦1となります。近年では、この関数はニューラルネットワークの隠れ層の活性化に用いられることは減っていますが、その理由は勾配消失が起きやすい特徴からです。
ニューラルネットワークでは最適なパラメータを見つけるため誤差を逆向きに掛け合わせて伝播させていく誤差逆伝播法が用いられます。この伝播中に活性化関数の微分を掛け合わせる項がありますが、シグモイド関数では最大で0.25であり、この項を掛けるごとに誤差の値は小さくなり、入力付近に近い層ほど伝播すべき誤差がなくなってしまう勾配消失問題が起きやすくなります。
出力層での活性化関数の特徴
出力層で用いられる活性化関数は出力を確率で表現するため、特定の活性化関数が使われます。二値分類ではシグモイド関数が、多値分類ではソフトマックス関数が用いられます。
ソフトマックス関数はシグモイド関数の一般形で、複数の入力を受け取り、受け取った数と同じ個数の出力を総和が1となるように変換して出力します。
ReLU関数は出力の値が[0,1]に限らないので、出力を確率として表現することは難しいです。
tanh関数とシグモイド関数との関係性
ニューラルネットワークの隠れ層で用いる活性化関数であるtanh関数について、シグモイド関数では、任意の実数で微分したときの最大値が0.25であることに対して、tanh関数は微分したときの最大値がより大きくなるようになっています。このためシグモイド関数と比べて、活性化関数にtanh関数を用いた場合、誤差逆伝搬法を用いて重みなどのパラメータを計算した際に勾配消失問題が緩和されています。またtanh関数はシグモイド関数を式変形(線形変換)することで求めることができます。
微分のおける最大値が大きいから言って、根本的な勾配消失問題の解決には至りません。
またtanh関数(=(e^x-e^(-x))/(e^x+e^(-x)))はシグモイド関数(sigmoide(x)=1/(1+e^(-x)))を用いてtanh(x)=2×sigmoid(2x)-1とかけます。
tanh関数は活性化関数に用いられる関数の1つで、入力xの値を−1≦x≦1の範囲の値に変換します。主に隠れ層(中間層)で用います。
ReLU関数
ディープラーニングで使われる活性化関数の1つであるReLU関数(rectified liner unit)は、多くの種類のモデルでよく使われている活性化関数です。ReLU関数はシグモイド関数やtanh関数と比べて大きく異なった形をしていますが、数式ではy=max(0,x)と簡単に表せます。グラフは下図になります。
これまでの活性化関数より勾配消失問題が起きにくいですが、どんなタスクにおいてもReLU関数を使うことがベストではありません。この関数は非線形の関数であり、x≦0の時は微分係数は常に0、x>0の時の微分係数は常に1となります。
学習の最適化
誤差関数
ニューラルネットワークの目標はモデルの予測値を実際の値に近づけることであり、この目標を達成するために誤差関数を最小化するアプローチが取られています。朝の気温から正午の気温を予測するモデルを考えます。朝の気温と正午の気温のセットのデータを所持している状態で、朝の気温の平均が16℃で正午の気温の平均が18℃という統計量が求まりました。このデータから朝の気温から正午の気温を予測するモデル(ニューラルネットワーク)を作るとき、次のイメージになります。
このときの誤差関数は朝の気温に対するモデルの予測値と対応する正午の気温の気温との誤差のように定義されます。
誤差関数とは、モデルの予測値と実際の値(正解データ)との誤差を表した関数です。
傾きの概念
関数の傾きの定義はΔy/Δxです。
微分係数と関数の最小値
上の関数において、x=1のときにyは最小値を取りますが、このxが未知の場合を考えます。初期値としてx=0.5と設定します。この値の微分係数を求めると符号はマイナスです。これを踏まえて初期ちから未知の最小値x=1に近づく方向に進ためには、xの値をxから微分係数を引くように更新すれば良いです。その後に、更新したxの値で再び同じ作業を繰り返せばx=1の値にどんどん近づきます。また、この際にその時の微分係数は0に非常に近くなるので、それ以降の更新によりxの値は変化しにくくなることがわかります。
実際には学習率という数値を導入してxを更新する際の変化量を調整します。
学習率
勾配降下法における学習率について考えます。関数の勾配にあたる微分係数に沿って降りていくことで、最小値を求める手法を勾配降下法と言います。学習率とは勾配に沿って一度にどれだけ降りていくかを設定するものという役割を持ちます。学習率とは、勾配降下法においてパラメータxを更新する前に微分係数に掛かる0より大きい実数です。学習率は勾配降下法において重要な要素の1つで、設定によっては最適解が得られない場合があります。
勾配降下法によりパラメータが最適解にどれだけ近づくかは、同じ学習率でも関数の形や勾配を求めるパラメータの位置で変化します。また現在の値から更新後の値までの距離は、現在の値における勾配の大きさと学習率で決まります。
勾配降下法は大域最適化に必ず収束しない
勾配降下法の収束値について考えます。
この関数において、勾配降下法を用いて最小値を探します。xの初期値と学習率をあらゆる値で試したとき、xが収束する可能性がある値は-3、0、6です。ただし学習率の範囲は(0、1] とします。このため勾配降下法は確実に最小値を見つけることができるわけではありません。この関数において真の最小値はx=6のときの値ですが、この真の解を大域最適解といい、x=ー3のような局所的な解を局所最適解と言います。
パラメータが大域最適化に収束しやすい学習率
この関数について初期値をx=ー6に設定して勾配降下法を用いたら、局所最適化のx=−3に収束しました。そのため初期値はそのままにして、学習率を調整するアプローチで大域最適化に収束しやすくすることを考えます。このときインテレーションが少ない段階において学習率は大きくなるように設定すると良いです。インテレーションとは勾配降下法においてパラメータの更新回数のことです。そうすることで、局所最適解と大域最適解の間にある一時的にyの値が大きくなる領域を超えて大域最適解に近づくことが可能です。一方で学習率が大きいのままだと大域最適解付近においても最適解を飛び越えてパラメータの更新を続けてしまうという問題が起きやすくなります。そのため学習率を適切なタイミングで調整し直すことが大事です。
学習率が大きいままであることが原因で、計算誤差が蓄積することはありません。また学習率が大きいままであることが原因で、収束する値が初期値に依存することはありません。しかし、学習初期から学習率が小さい場合においては、初期値に近い局所最適解や大域最適解に収束しやすくなるとは考えられます。エポックとは1つの訓練データを何回学習させるかのハイパーパラメータです。
鞍点
鞍点について考えます。3次元以上の関数に対して勾配降下法を用いる際は、鞍点が学習のうまくいかない原因となることがあります。鞍点は一般的に平坦な領域に囲まれている場合が多く、一度鞍点に陥ると再び鞍点から抜け出すことは困難になります。このような停滞状態にあることをプラトーと言います。
鞍点とはある次元から見ると極大点で、ある次元から見ると極小点となる点です。
確率的勾配降下法(SDG)
ニューラルネットワークの学習では、パラメータに対して最適な値に近づく勾配を求めることが大事です。訓練データをネットワークに入力し、結果(出力)を求めて、その結果と正解の誤差を計測します。このように求めた誤差を減らすことを考えてパラメータを最適化する勾配を求めることができます。最急降下法(Gradient Discent)ではデータセットを全てネットワークに入力して誤差を求め、パラメータを更新することを繰り返します。SDG(Stochastic Gradient Discent)確率的勾配降下法はパラメータxを更新する際に、データは全データの中からデータをランダムに抜き出して利用します。このようにしたときSDGのパラメータを更新する式はx_new=(x_old)×学習率×(抜き出したデータを使って求めた勾配)です。
データセット内のデータを全て用いる手法はバッチ学習と呼ばれ、最急降下法はこのバッチ学習の一種です。対して、データを1つずつ逐次的に学習する手法をオンライン学習、いくつかのデータのまとまりを逐次的に用いて学習する手法をミニバッチ学習と言います。SDGは最急降下法をオンライン学習またはみにバッチ学習に適応したものです。
SDGにおいては求めた勾配を用いてパラメータを更新するとき単純に学習率をかけてパラメータから引くことで更新します。この時の勾配は、ランダムに抜き出されたデータを用いて求めた勾配です。SDGに工夫を加えて改良した手法は、モーメンタム、RMSPropがあります。これらの手法は勾配を求めるところまではSDGとナジですが、SDGでは単純に勾配に学習率をかけて引いていた部分に改良を加えることで、良い手法になっています。
モーメンタム
分配下降法の手法について考えます。ニューラルネットワークの学習において基本的な手法であるSGD (Stochastic Gradient Descent: 確率的勾配下降法) は、最急降下法を改良したものの1つです。しかしSGDには局所解に陥ってしまう問題や非効率な経路で学習してしまうといった問題があるので、SGDに改良を加えたモーメンタムと呼ばれる手法が考えられました。この手法自体はディープラーニングブーム以前の1990年代から考えられています。このモーメンタムと呼ばれる手法は、力学の考え方を用いてパラメータの更新に慣性的な性質を持たせ、勾配の方向に減速・加速したり、摩擦抵抗によって減衰したりしていくようにパラメータを更新していくという工夫を加えることでSGDを改善し、学習をより効率的に行えるようにしたものです。
モーメンタムを用いることで最小値まで辿り着く経路がSDGと比べて無駄の少ない動きとなっているとともに、停滞しやすい領域においても学習がうまく行きやすくなるメリットがあります。
勾配降下法の最適化手法
勾配降下法の手法について考えます。ニューラルネットワークの学習において鞍点などに陥る問題に対処するため、ディープラーニングブーム以前からもーメンタムと呼ばれる慣性の考えを用いる手法はありました。その後ディープラーニングのブームを受けてもーメンタムより効率的なさまざまな手法が考えられました。これらはもーメンタム同様に求めた勾配を用いてどのようにパラメータを更新するのかという部分に工夫を加えたものです。古いものからAdaGrad→RMSProp→Adamという手法が考案されています。あ は求めた勾配によりパラメータごとの学習率を自動で調整するものです。RMSPropはAdaGradの学習のステップが進むと、すでに学習率が小さくなり更新されなくなってしまう問題を改良したもので、AdamはRMSPropのいくつかの問題点をさらに改良したものです。
SDGでは手動で学習率を決めてすべてのパラメータに対して同じ値を用いていましたが、AdaGradでは勾配の情報を用いてパラメータごとの学習率を自動で調整していくアルゴリズムです。AdamはRMSPropを改良したもので、2014年に発表されました。
最新のディープラーニングの最適化手法
ディープラーニングを最適化する手法はたくさん提案されています。その1つであるSGD(Stochastic Gradient Descent:確率的勾配下降法)は、学習率を固定してパラメータを更新していきます。これに対しAdamは学習率を動的に求めることで学習速度をSGDに比べて速めることに成功しましたが、Adamの学習率は重要でない勾配に対して大きすぎたり、重要な勾配に対して小さすぎたりすることがあり、学習がうまくいかない場合がありました。そこで重要でない勾配に対して2乗勾配を利用して学習率が大きくなりすぎることを改善するAMSGradという手法が提案されました。しかし、これは学習率が小さくなりすぎることを考慮していないため、学習率の上限と下限を設定し、少しずつ狭めて最終的に1つの値となるようにする手法が生まれました。その手法は2つあり、Adamに対して適応した手法がAdaBound、AMSGradに対して適応した手法がAMSBoundです。これらは学習前半でAdamのように高速に学習し、学習後半でSGDのような学習をします。
AMSGradは、「Adamの学習率が大きくなりすぎることがある」という問題を解決した手法となっています。Adamでは学習率の変化を過去からの勾配情報を用いて行っていましたが、昔の勾配情報を長期的に残すことが困難だったため、重要な勾配情報を忘れてしまうことがありました。AMSGradは現在の勾配情報と過去の勾配情報を比較して重要な方を選択し、保存しておくことで不必要な勾配に関して学習率が大きくなりすぎることを防いでいます。
AdaBoundは「Adamの学習率が大きくなりすぎることや、小さくなりすぎる」という問題を解決した手法となっています。AdaBoundはAdamの学習率の変化に対して、学習率に上限と下限を用意し、その範囲を超えないように学習率を設定します。さらに学習率の上限と下限の幅を次第に狭めていき、最終的に一定値とすることでSGDのような効果を学習後半で期待します。これにより学習前半はAdamのような高効率な学習を行い、学習後半ではSGDのような正確な学習を行うことができます。AMSBoundはAMSGradに対してAdaBoundと同じ手法を適応させたものです。
かなりややこしい部分なので時系列的にまとめます。
最小値を求めたい→学習率→SGD→モーメンタム→AdaGrad→RMSProp→Adm→AMSGrad→(Admに対して)AdaBound、(AMSGradに対して)AMSBound
ハイパーパラメータ
ハイパーパラメータとは、ニューラルネットワークの学習率や、決定木の深さなど、人が設定するパラメータのことです。機械学習モデルでは、ハイパーパラメータを適切に設定することで学習速度が上がったり、汎化性能が向上したりすることが期待できます。そのハイパーパラメータを探索することをハイパーパラメータチューニングと言います。
ハイパーパラメータチューニングをする方法の1つとして、kー分割交差法を用いた検証を行い評価します。ハイパーパラメータチューニングは、考え得るハイパーパラメータの組み合わせから1つの組を選び、それの学習結果を見て、学習時のハイパーパラメータの良し悪しを決めます。そのハイパーパラメータの選び方として、グリッドサーチとランダムサーチがあります。それぞれの手法特徴はグリッドサーチは考え得るハイパーパラメータの組み合わせを全通り選択し、ランダムサーチはランダムに組み合わせを選択します。
グリッドサーチは、考え得るハイパーパラメータの組み合わせを全通り選択する探索方法です。グリッドサーチは最も良い組み合わせを見つけることができますが、ハイパーパラメータが多いと探索コストが非常に大きくなります(例えば、3つハイパーパラメータがあり、それぞれが5つの値を持っている場合、その組み合わせは5の3乗の125回検証が必要です)。ランダムサーチは、ハイパーパラメータの組み合わせをランダムに選択する探索方法です。グリッドサーチより少ない回数で探索できますが、最適解を見つけられるかはわかりません。そのほかにもベイズ最適化というのもあり、これは結果が良かったハイパーパラメータの組み合わせに似た組み合わせをランダムに探索していきます。
さらなるテクニック
過学習
過学習(オーバーフィッティング)とは、機械学習においてモデルが訓練データに過剰適合することです。過学習が進んでしまっているとき、モデルの予測値と訓練データの間の誤差は十分小さな値に収束する傾向があります。一方でモデルの予測値とテストデータ(学習に用いていないデータ)との間の誤差はだんだん増加していく傾向があります。すなわち、過学習が進んでしまうとモデルの実用性が落ちてしまいます。
二重降下現象
二重降下現象は、モデルのパラメータ数やエポック数を増やすと学習結果のエラーは下降していくが、さらに増やすと上昇して、さらに増やすと下降していく現象です。
二重降下現象とは、モデルのパラメータ数や学習のエポック数(エポックは学習データセット全体を使った一回の学習プロセスを指します)が増えるたびに、学習結果のエラーが二度降下する現象です。上の図においてエポック数は固定します。ことのき機械学習による予測も、統計学による予測もそれぞれ裏切られることになります。二重降下現象の起きる原因は解明されておりません。
ドロップアウト
ドロップアウトについて考えます。過学習が進んでしまうとモデルの汎化性能が落ちてしまいます。この問題に対して、ニューラルネットワークの学習においては過学習を防ぐ手法の1つにドロップアウトがあります。ドロップアウトとは、学習の際、一部のノードを無視して学習を行う手法です。すなわち、ドロップアウトによってノードを無視するのは学習時のみで、推論時は除外しません。ドロップアウトにより、学習中のニューラルネットワークの形は更新のたびに異なる形となると考えられます。つまり、ドロップアウトを行った場合、複数のネットワークが同時に学習されることになります。このようにすることで、複数のネットワークのうち、いくつかが過学習してしまったとしても、全体として過学習の影響を抑えることができます。すなわち、ドロップアウトはアンサンブル学習を行っていると考えることができます。
ドロップアウトは学習中ランダムにノードを除外して学習を行う手法です。学習はエポックごとに形の変化したネットワークを学習します。
ドロップアウトを行うと、複数のネットワークで推論を行う手法に近くなるので、アンサンブル学習(複数のモデルを学習し結果を統合する手法)をおこなっていると考えられます。
early stopping
early stoppingについて考えます。過学習を防ぐ手法の1つにearly stoppingがあります。 early stoppingとは学習の際、学習を早めに切り上げて終了することです。 このとき学習を打ち切るタイミングをテストデータに対する誤差関数の値が上昇傾向に転じたときとすると、そこが過学習の起きる前の最適な解であると考えることができます。 この手法をニューラルネットワークに適応する際の良い点としてどんな形状のネットワークの学習においても容易に適応できるということも大きなメリットです。
early stoppingにはテストデータに対する誤差の値を利用しますが、この誤差を早く現象させるような効果はありません。基本的に適応するモデルにパラメータ数がいくつあっても適応しますが、そのモデルのパラメータを削減する効果はありません。学習の終盤で作用することで過学習を防ぐ効果がありますが、モデルのパラメータの初期値に対する依存度を下げる効果はありません。
ノーフリーランチ定理とは、あらゆる問題に対して性能の良い汎用最適化戦略は理論上不可能であるという定理です。
データの正規化
この例での正規化とは身長と体重を同じm単位に揃えることによりデータ全体を調整することです。このデータを[0,1]に収まるようにするためには、変換として、各特徴量の最大値で対応するデータの特徴量を割る作業を行うと良いです。
データの標準化
機械学習のいてデータの前処理について、各特徴量を平均0で分散1となるように変換する処理を標準化と言います。例えば任意の実数量をとるデータを10000個集めたとき、次の分布が得られました。
このデータを標準化した後の分布は下図になります。
データの白色化
機械学習におけるデータの前処理について、各特徴量を無相関化した上で標準化する処理を白色化と言います。例えば元データが次の散布図があります。
このとき2つの特徴量に対して無相関化を行った後の散布図は下図になります。
問題文のデータは正の相関があります。そのため無相関化を行うと、相関が0のデータ(上図)が得られます。このデータに対して、標準化を行うことで白色化されたデータが得られます。
ニューラルネットワークの重みの初期値
ニューラルネットワークのパラメータの初期値について考えます。ディープラーニングにおいて、入力前にデータの標準化を行うことでデータの分布を揃えることができました。 しかし、深いニューラルネットワークの学習においては、活性化関数を何度も通るためにその分布がだんだんと崩れていってしまいます。このように分布が崩れて偏りが発生すると、勾配消失問題が起きたりネットワークの表現力が落ちてしまう可能性が高いです。
このような問題に対して、ネットワークの重みの初期値を工夫するというアプローチがあります。 これはネットワーク内のある層に対して、ネットワークの大きさと活性化関数の種類に対応する適切な乱数を設定するというものです。 たとえば、ReLU関数は入力が負の値の場合出力が0になることから、各層の出力に適度な広がりを持たせるには、sigmoid関数と比較して初期値がより広い分布を持ったものであると良いと考えられます。 このアプローチについて、ネットワーク内のある層に用いられている活性化関数とその適切な初期値について適切な組み合わせはシグモイド関数:Xavierの初期値、ReLU関数:Heの初期値です。 ここでXavierの初期値とHeの初期値とは、それぞれ次のようなものです。
ニューラルネットワークで用いられる重みの初期値について、各層に用いられている活性化関数によって、どのような初期値を設定するのが良いかを問う問題において、初期値を特定の分布に従った乱数で設定するのは、ニューラルネットワークの各層において、活性化関数を通した後の値に適度なばらつきを持たせたい、ということが目的になります。例えば、このような分布に偏りが生じている場合、ある層での出力が1または0の2種類に偏ってしまうと勾配消失問題が発生し、0.5などの1つの数値に偏ってしまうとネットワークの表現力に制限がかかってしまうと考えられます。
この問題に対し、ノードの初期値を適切な分布から生成される乱数で設定するというアプローチが考えられており、各層で使用している活性化関数がシグモイド関数(sigmoid関数)やtanh関数の場合は、ノードの初期値としてXavierの初期値を用いると良いと提案されています。これは各層の出力を同じくばらつかせることを目的として求められた値であり、上の表で与えられる標準偏差を持つガウス分布より生成される乱数です。ただし、Xavierの論文では、次層のノード数も考慮したより複雑な設定値が提案されており、ここではそれを単純化したものを用いています。
一方、ReLU関数を活性化関数として用いた場合、Heの初期値を用いるのが良いと提案されています。Heの初期値は、Xavierの初期値と比較して、より大きな広がりを持った分布によって生成される乱数です。ReLU関数は入力が負の値の場合出力が0になります。そこで、各層の出力に広がりを持たせるには、初期値により広がりを持たせなければいけないと考えられ、このような設定値となっています。
バッチ正規化
ディープラーニングにおいて、活性化関数を通ることでデータの分布が崩れていく問題に対するアプローチには、ネットワークの重みの初期値を工夫するというものの他に、直接的なアプローチとしてバッチ正規化というものがあります。これはネットワークにおいて、各層で伝わってきたデータに対し、正規化を行うというものです。これは無理やりデータを変形しているということであり、どのように調整するかはネットワークが学習します。バッチ正規化の処理を行うことによって、データの分布が強制的に調整され、勾配消失問題などが改善することにより学習がうまくいきやすくなると考えられます。さらにバッチ正規化のメリットには、過学習しにくくなるという効果があることも知られています。
バッチ正規化は、ニューラルネットワークの各層で前の層から伝わってきたデータに対して、もう一度正規化を行うものです。
学習において、重みの初期値に対する依存度を下げる効果が期待できます。他にも学習率を大きな値に設定しも、学習がうまく行きやすくなったりするなど、さまざまなメリットがあり、実際にバッチ正規化は多くのモデルで用いられています。
バッチ正規化には、その他の派生としてLayer Normalization、Instance Normalization、Group Normalizationがあります(図参照)。Cが特徴マップのチャネル、Nがミニバッチ数、H、Wが特徴マップのサイズです。グレーの部分が正規化を行う領域を示しており、バッチ正規化がバッチ方向に正規化しているのに対し、Layer Norm.は1サンプルに対しての全特徴マップでの正規化、Instance Norm.は1特徴マップに対しての正規化、Group Norm.はグループ分けした数チャネルに対しての正規化です。
バッチ正規化は、バッチ数が少ない場合での学習では荒い統計量(平均と分散)を使うためメタバイス弱く、また時系列を扱うRNNにおいては各時間に対して統計量が異なるにも関わらず、バッチで扱うのは好ましくないとされています。Layer Norm.は1サンプルにのみ集中することでRNNのような時系列を考慮するモデルに使われます。Instance Norm.は特徴マップレベルへ細分化が必要なStyle Transferのような生成系のモデルで使われます。Group Norm.はグループに分けるバランス調整をする必要がありますが、LayerとInstanceを合わせて使うことで、バッチ正規化よりも精度向上を狙うことができます。
CNN:畳み込みニューラルネットワーク
畳み込みニューラルネットワーク(CNN)
畳み込みニューラルネトワークについて考えます。画像データと数値データの大きな違いの1つに、次元の違いがあります。画像データは縦横の2次元のデータであると考えられ、さらに色情報(RGBなど)が追加されると数値情報としては3次元のデータとなります。通常のネットワーク(多層パーセプトロン)では、この画像データを入力する際に縦横に並んでいる画像を分解して、1次元に並び変えるように変形することでネットワークに入力できる形にする必要があります。したがって、この変形の段階で画像データから画像に映っている物体の位置情報が失われてしまいます。そこで、これらの情報を維持できるように考えられたのが、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)です。CNNでは、画像を崩すことなく、2次元のまま入力に用いることができます。したがって、画像に映っている物体の位置情報の情報が維持されるため、通常のニューラルネットワークに比べて精度の向上が期待できます。
画像データには他の種類のデータと比べて特徴的な部分があります。画像データからその画像に映っているものの特徴量を学習するには、一つ一つのマスを個別に扱うのではなく、複数のマスの領域から得られる情報を学習することが大事です。問題文でもあった位置情報が失われてしまう問題を解決するには、CNNでは畳み込み演算処理を用います。これを用いると画像を2次元データのままネットワークに入力して学習・推論を行うことができます。
畳み込み演算のイメージ
畳み込みニューラルネットワークでは、畳み込みと呼ばれる処理を利用して画像内の一定の領域から情報を得て学習を行うことができます。 畳み込みではカーネルやフィルタと呼ばれるものを用いて計算を行います。具体的にはカーネルを画像の左上から順番に画像上をスライドさせながら移動していき、各領域における画像の値とカーネルの値との積の総和を取っていくという処理になります。 次の画像とフィルタにおいて、畳み込み処理を行っていく場合、(A)の値はカーネルと画像が重なる4ピクセルの領域から計算される値2であることがわかります。 このように畳み込みでは一定の領域を考慮して計算を行うことができます。 畳み込みニューラルネットワークではこの図におけるカーネル内の値をネットワークの重みとすることで、よりうまく画像の特徴が抽出できるように学習が進んでいきます。
この問題については、求める箇所が、元画像の右上の4つのマスに、カーネルを重ねることにより、(2,3,5,6)と(0,-1,1,0)の内積を考えて2となります。
CNNがどのような値をニューラルネットワークの重みとして学習するか
CNNでは畳み込み演算を用いて画像を2次元のままニューラルネットワークに通して学習を行えます。畳み込み演算は、2次元の入力から新たな2次元の出力を得るものと考えられ、このように得られた新たな2次元の出力を特徴マップと言います。
畳み込み演算において、同じ画像が出力された場合でも、カーネルの中の数値が異なると、特徴マップは異なるものが得られます。そのためCNNでは、畳み込み演算によって得られる特徴マップの中に、入力画像に映っている物体の特徴がうまく抽出されるように、カーネルの中の数値を学習によって最適化します。
カーネルサイズやストライド、パティングは学習前に人の手で決定されるパラメータ(ハイパーパラメータ)となります。実際のCNNでは、畳み込み層でこの畳み込み演算が行われますが、1層の中に複数のカーネルが含まれ、カーネルの枚数と同じ枚数の特徴マップが生成されて次の層に伝播します。
ストライドとは畳み込み処理においてカーネルを移動させる幅のことです。パディングとは畳み込み処理前に画像に余白となるような部分を追加し、畳み込み処理後の特徴マップのサイズを調整するものです。
プーリング処理
CNNでは畳み込み演算と組み合わせてプーリング処理も行われます。プーリングは画像や特徴マップなどの入力を小さく圧縮する処理で、圧縮する方法には特定サイズの領域ごとに最大値を抜き出す方法や、平均値をとる方法などがあります。
プーリング処理を行うと次の2つの特徴マップは同じマップに変換されます。
ここでは2×2の領域ごとにmaxプーリングを行うとします。プーリイング処理によりニューラルネットワークが画像に映っている物体に僅かに物体の位置が変化するといった違いが生じても、同じ特徴量を見つけ出すことができるようになると期待できます。このような物体の位置が変化するといった違いに対する不変性は、CNNにおいて畳み込み層でも獲得することができますが、プーリング処理を行うプーリング層には学習によって最適化されるパラメータが存在しないという特徴があります。
プーリング処理は、特徴マップをより小さな特徴マップへと圧縮します。その中でわずかな位置の違いを含む特徴マップは、先ほどの例のようにプーリング処理によって位置の違いが吸収されてしまうことになります。このため、モデルが画像に映っている物体のわずかな位置の違いを過学習してしまう問題を防ぐことになり、これらの違いを含むデータセットに対して精度が上がることが期待できます。また、プーリング処理は、あらかじめハイパーパラメータとしてどのようなサイズでプーリングを行うかを手動で決定しますが、その後のプーリング処理は「最大値を取る」「平均値を取る」などの決まった計算で実現できます。このためプーリング層は学習によって最適化されるパラメータ(重み)を持っていません。
全結合層
CNNに用いられる全結合層について考えます。CNNでは、入力画像が複数の特徴マップとなり、畳み込み層やプーリング層を伝播していく構造をしています。この構造を局所結合構造といいます。 ここで入力が画像であった場合、特徴マップは入力画像と同じような2次元の形をしていますが、次の犬と猫を分類するモデルの例のように、入力画像に対応付けられている正解ラベルは、1次元の形をしています。 そのため出力層において正解ラベルと特徴マップを比較することができず、パラメータを最適化するために必要な誤差が計算できません。 このような問題を解決するために、基本的なCNNでは特徴マップを1次元の数値に変換したのち、全結合層に接続するといった構造を持っています。 したがって、CNN全結合層の説明として正しいものは多層パーセプトロンに用いられている層と同じ構造をしているです。
全結合層は、CNNではない通常のニューラルネットワーク(多層パーセプトロンなど)に用いられている層と同じ構造をしています。データの全領域を使う全結合層において、畳み込みがデータの局所領域を用いて特徴抽出を行う構造であるため、CNNの畳み込みのような構造を局所結合構造と言います。
Global Average Pooling
畳み込みニューラルネットワーク(CNN)において、Global Average Poolingという手法が使われることがあります。Global Average Poolingとは、分類したいクラスと特徴マップを1対1対応させ、各特徴マップに含まれる値の平均を取ることで誤差を計算できるようにする手法です。この手法を使うことで、全結合層のみを使う場合と比べてモデルの持つパラメーター(重み)が少なくなるということに繋がるため、過学習が起きにくくなる等のメリットが得られます。
このGAPという手法は、特徴マップと分類したいクラスを1対1対応させる手法です。ここで補足として、Global Average Poolingを行う前に、特徴マップの数と分類したいクラス数を特に合わせたりせずに、GAPを行った後に全結合層を付けることで、分類したいクラス数と出力の数を合わせる方法もあります。特徴マップを1次元に並べるように展開し、全結合層に接続した場合、全結合層では、特徴マップが持っていた値に比例する数のパラメータを持つことになります。多くの場合には非常に多いパラメータ数となり、過学習などの原因となってしまいます。一方、Global Average Poolingを用いた場合には、このような特徴マップの値をすべて使用して全結合をすることがなくなるので、パラメータ数を削減できます。このようにパラメータ数が削減されることで過学習の軽減などに繋がります。
Dilated Convolution
Dilated Convolutionについて、通常のConvolutionのカーネルに隙間のような間隔をあけて畳み込みを行うことにより、広範囲の情報を取得できます。Atrous Convolutionと呼ばれることもあります。カーネルの隙間の間隔はハイパーパラメーターで設定されます。
Direted Convolutionはカーネルのパラメータ数は変わらず、カーネルの間隔を広げることで広範囲の情報を畳み込みます。以下の図では、色が塗られている部分が畳み込みの見る部分で、中心が青色です。この畳み込みの見る範囲はrateの数だけ間隔が開きます。このrateという感覚はハイパーパラメータにより決められます。この方法はAtrus Convolutionとも呼ばれます。
Depthwise Separable Convolution
Depthwise Separable Convolutionについて、通常の畳み込み層を空間方向とチャネル方向の2つの畳み込みに分解することでパラメータ数を減らしました。
Depthwise Separable Convolutionは通常の畳み込み層を2つの畳み込み層に分解します。以下の図での通常の畳み込みはMチャネルの入力に対して、M枚のカーネルを出力チャネルN個ぶん用意します。
今回の例ではカーネルサイズが3×3なので、この畳み込みは3×3のカーネルがM×N個存在します。青いカーネルに着目して、畳み込み層はM個のカーネルを通して各チャネルの特徴を抽出し、それらを集約させることで1つの出力特徴マップが得られます。
それに対して Depthwise Separable Convolution は、通常の畳み込み層を Depthwise Convolution と Pointwise Convolution の 2 つに分解したものです。Depthwise Convolution は空間方向の畳み込みと解釈でき、M チャネルの入力から各チャネルの特徴を取り出します。通常の畳み込み層と異なる点は、入力のチャネル数と同じ数のカーネルを用意して、抽出した特徴を集約しない点です。これにより空間方向の特徴を得ることができます。もう一方の Pointwise Convolution は、チャネル方向の畳み込みと解釈でき、1×1 Convolution を使います。例のように M チャネルの入力に対して 1×1 の Convolution をして得た特徴マップを集約して 1 つの出力とします。これによりチャネル方向の特徴量の集約ができます。
Depthwise Separable Convolution は、Depthwise Convolution の後に Pointwise Convolution を行う構造になっています。通常の畳み込み層のパラメータ数は 3×3×N×M ですが、Depthwise Separable Convolution は 3×3×M + 1×1×N×M = (9 + N) × M となり、パラメータ数を削減することができます。これを使ったモデルとして MobileNet というものが提案されました。
Dilated (Atorus) Convolution は通常の畳み込み層のカーネルの間隔を広げて活用することで、より広い範囲を見るように工夫することです。VGG という CNN モデルでは、通常の畳み込み層のカーネルサイズを3×3または1×1の小さなもののみにして層数を増やすことで性能向上をします。バディングとは、畳み込み層の後の特徴マップが小さくなるのを防ぐため、入力のマップの周りを0や1などの値で埋めることです。
データ拡張
画像データを用いてニューラルネットワークを学習する際に、画像に人工的な加工を行うことでデータの種類を増やせます。具体的な処理は次の通りです。
ここで手書き数字0〜9が映っているデータセットに対してデータ拡張を考えます。ただし画像1枚に対して1文字のみ映っています。このようなデータセットに対して、正解ラベルが6や9のデータに画像を180°回転のような変換を行うことは不適切です。
このような問題の時は、意味のない画像や別の数字として見た方が正確な画像に変換されてしまう場合があります。下記の図では上下斑点の例ですが、「3」は問題ありません。しかし「3」は左右反転は不適切です。このようなデータ拡張を行う際は、データ特徴を意識して、どのような変換を行うか選択する必要があります。
データ拡張の手法
画像に関してのデータ拡張(Data Augmentation)はさまざまな手法が提案されています。たとえば、画像の左右または上下を反転させるフリップや、画像を拡大または縮小するなどがあります。その他にも、手法の1つに画像中のランダムな場所を値の0の正方形領域で削除するcutoutがあります。この手法により一部を失った画像で学習できるため、よりロバスト(頑健)なモデル作成が可能となる。また、ランダムな場所を固定値、もしくはランダムノイズの長方形領域で置き換えるRandom Erasingがあります。こちらもロバストな学習を可能にします。特に最近では2枚の画像をそれぞれランダムな比率で混ぜ合わせるMixupという手法があります。この手法は教師ラベルも同じ比率で混ぜて複数クラスの画像認識と度の学習を行います。さらに、この手法の派生として、画像のランダムな位置を別の画像で置き換えるCutMixという手法も提案されました。こちらも教師ラベルを置き換えた画像の比率で混ぜ合わせます。どちらの手法も深層学習においてパフォーマンスの向上に成功しました。これらの画像に対するランダムなデータ拡張は学習に対して過学習の抑制が期待できます。
速い収束性については、データ拡張により必ずしも期待できません。メモリの削減については、関係がありません。モデルのスパース化とはモデルのパラメータが0に近い値が多くなることを指しますが、データ拡張でスパース化が起きるとは限りません。
Neural Architecture Search(NAS)
ディープラーニングの発展に伴ってさまざまなモデルが提案されてきました。VGGやResNetはその中でもより深い多層なモデルとなっており、多層にすることで高精度を得られることが実験により示されてきました。しかし、多層にすることでパラメータが増え、モデルの自由度が上がることで汎化性能が下がってしまう問題も同時に存在しました。これまでは正則化項を追加したりすることで汎化性能を上げたり、ハイパーパラメータチューニングをして精度を向上させてきました。それに対してニューラルネットワークの層の数や層の幅といった、アーキテクチャ自体を最適化することを目的とした研究が、昨今盛んに行われています。これをNeural Architecture Search (NAS)といいます。
NASは最適なモデルのアーキテクチャを自動で探索するタスクです。探索方法は様々で、CNNに限定した探索手法ではNASnetやMnasNetなどがあります。
グリッドサーチはハイパーパラメータの探索手法です。ファインチューニングは事前学習したモデルを別のタスクで再学習することです。スクラッチ開発はプログラムを1から書いて開発を行うことです。
NASによるモデル
NASは、モデルの構造自体を自動で探索する研究です。2017年にNASNetと呼ばれるCNNのみに焦点を当てたNASが提案されました。これは畳み込み層のみに注力して最適な構造を探索しました。また、最近ではMnasNetと呼ばれる強化学習の概念を使って、モバイル用の高効率で高精度なモデルも提案されました。これは強化学習の際に実際にモバイル端末を使って評価することで、モバイル用の最適なモデルを探索したものです。その他にも、モデルの深さ、広さ、解像度(入力画像または特徴マップのサイズ)のスケールアップのバランスを重視して探索されたモデルが提案されました。これはNASによりbe0ストなるモデルを蹴ってし、ベースモデルのスケ0ルアップによる性能の変化を研究することで、各スケールの最適な広げ方を求めました。このモデルをEfficientNetと言います。従来のモデルと比べてとても少ないパラメータ数で、かつシンプルな構造で高精度を出しました。
NASNetは、CNNのみに焦点を置いて探索されたモデルです。従来では探索する範囲が広すぎて最適モデルを見つけることが困難でしたが、畳み込み層に注力して最適な構造を探索することにより、少ないパラメータ数で高精度なモデルを見つけることに成功しました。
MnasNetは、強化学習の考え方を取り入れ、モデルの精度とモバイル端末上での実際の実行速度を見ながら、より良いモデルを探索したモデルです。次の図に探索のフロー例を示します。
最初にControllerがモデルを生成し(①)、モデルの学習をします(②)。その学習したモデルをモバイル端末上で実行したときの時間とモデルの精度を、Multi-objective rewardに渡します(③④)。それぞれの結果を見て報酬をControllerに渡し(⑤)、次に生成するモデルを決めます。この手順を繰り返すことで高速で高精度なモデルを生成するControllerができます。
EfficientNetは、深さ、広さ、解像度のスケールアップのバランスを重視して探索したモデルです。構造自体もシンプルでかつ従来の高精度モデルよりもパラメータを少なくして、性能向上することに成功しました。現在ではEfficientNetをベースとした新たなモデルでEfficientNet v2なども提案されています。
転移学習とファインチューニング
転移学習について考えます。ニューラルネットワークを学習する目的は、予測を行いたい問題に対して最適なパラメータの値を計算することです。したがって、目的の問題に対して理想的なパラメータが分かっていれば、ネットワークの学習を行う必要がなく、モデル作成の時間短縮に繋がります。ここで画像認識などの分野では、さまざまな問題に対して共通する特徴が存在する場合が多いです。そのため学習済みモデルを利用し、これらのモデルに新しく何層か付け足したものを調整するということが行われています。このように学習済みのネットワークを利用して、新しい問題に対するネットワークの作成に利用することを転移学習、またはファインチューニングといいます。特に付け足した(または置き換えた)層のみを学習するときは転移学習といい、利用した学習済みモデルに含まれるパラメータも同時に調整するときはファインチューニングといいます。基本的にニューラルネットワークでは、次のように入力層付近においては画像に含まれる抽象的な特徴量を学習し、出力層付近においては具体的な特徴量を学習することで知られています。
このため、画像データを用いるモデルで転移学習やファインチューニングを行う際は、学習済みモデルにおいて出力層の後に新たな層を追加したり、この層を置き換えて調整を行うと効果的であると考えられます。一方で利用元のモデルと転移先のモデルでデータの種類(ドメイン)の関連性が低い場合では、転移学習やファインチューニングを行うのは不適切であり、精度が逆に悪くなってしまうというような問題が発生する可能性があります。
学習済みネットワークにおける入力層に近い層のパラメータはさまざまな画像の分類問題に応用が効きます。そのためこの部分はそのまま利用し、出力層の後に新たな層を追加したり、出力層を置き換えて調整することで目的の問題に対応させると効果的です。転移学習のメリットは、学習用のデータが少ない場合でも、十分なデータがある問題で学習したモデルで学習したモデルを利用することで、より精度を向上させることが期待できますが、転移学習を行う際には、学習に用いられるデータの特徴を理解しておく必要があります。なぜならデータに共通性が少ない場合では、逆に精度が落ちてしまうからです。
CNNの基本となった初期モデル
畳み込みニューラルネットワーク(CNN: Convolutional Neural Network)のアプローチは人間が持つ視覚野の細胞の働きを模したものであります。ここで人間の視覚野に含まれる、画像の濃淡を検出する細胞(単純型細胞)と物体の位置が変動しても同一の物体と認識できるようにする細胞(複雑型細胞)の2つの細胞の働きを初めて組み込んだモデルはネオコグニトロンです。その後、1998年にヤン・ルカンによって考えられた畳み込み層とプーリング層(サブサンプリング層)を交互に組み合わせたCNNのモデルはLeNetです。
単純型細胞(S細胞)と複雑型細胞(C細胞)の働きを最初に組み込んだモデルは、福島邦彦により1979年に提唱されたネオコグにトロンです。これはS細胞層とC細胞層を交互に組み合わせた構造で、勾配計算を用いないadd-if silentという方法により隠れ層(中間層)の学習が行われます。LeNetとは1998年にヤン・ルカンによって考えられた畳み込み層とプーリング層を交互に組み合わせたCNNモデルです。この2つのモデルを比べると、2つのモデルは同じ構造をしており、S細胞と畳み込み層、C細胞とプーリング層がそれぞれ対応しています。
RNN:リカレントニューラルネットワーク
RNNの構造
リカレントニューラルネットワークについて考えます。画像データはピクセル間の関係性が重要であり、このようなデータはCNNが有効でした。文章のようなデータから特徴を取り出すためには、ニューラルネットワークを新たな構造にする必要があります。文章では、ある単語がその単語の前後に繋がる単語と深い関係性を持っており、さらにその並び順が非常に重要な意味を持っています。このようなデータを時系列データといいます。ここで時系列データからうまく特徴を取り出すためには、データを時系列に沿って順番にニューラルネットワークに入力できると良いです。このニューラルネットワークでは、過去の入力が持つ情報を保持しつつ、これらのデータが入力された順番の情報を出力に反映できる必要があります。そこで考えられたのがリカレントニューラルネットワーク(RNN:Recurrent Neural Network)です。リカレントニューラルネットワーク(RNN)は、過去の入力の情報を保持するために過去の入力による隠れ層(中間層)の状態を、現在の入力に対する出力を求めるために使うという構造をしています。
RNNでは現在の入力とそれまでの入力がそれぞれどれくらい現在の出力に影響するかを学習できます。過去も入力の情報が現在の入力に影響を与えることができる構造で、RNNは時系列データの処理に適しています。RNNは誤差を計算する際に、過去の入力に遡って計算していく必要があります。このように計算する方法を通時的誤差逆伝播(BPTT:BackPropagation Througu Time)と言います。
RNNで発生する勾配消失問題
リカレントニューラルネットワーク(RNN)における勾配消失問題について考えます。多層パーセプトロンやCNNにおいては、層が深くなると勾配消失によって入力層付近ほど学習ができなくなるといった課題がありました。ここで時系列データを用いてRNNの学習を行うときは、過去の時系列をさかのぼりながら誤差を計算する通時的誤差逆伝播(BPTT)を用いて勾配が計算されますが、このとき、計算される勾配に対して時系列の古いデータほど勾配消失しやすい特徴があります。
RNNではネットワークは時間方向に深いものとなります。
時系列の古いデータの部分で勾配が消失してしまいやすいです。同様に、時系列の古いデータ部分においては、勾配が大きなりすぎてしまう勾配爆発の問題も起きやすいです。
LSTM
RNNの一種であるLSTM(Long-Short-Term Memory)について考えます。RNNは再帰的な構造を持つことにより、過去の入力の状態が現在の出力に影響を与えることができます。もし過去の情報が現在の入力と組み合わせて重要な意味を持つ場合、過去の情報の重みが大きいと考えられます。一方、過去の情報が現在の入力に対してあまり意味を持たない場合は、過去の情報の重みは小さくなります。ここで問題となるのは、現在の入力に対し過去の情報はあまり関係がないが、将来的に重要な情報となる場合です。すなわち、現在の入力に対して過去の情報の重みは小さくてはならないが、将来のために大きな重みを残しておかなければならないという矛盾が生じます。このような問題が、新しいデータの特徴を取り込みときや、隠れ層(中間層)の状態を踏まえて結果を出力するときに発生することを、それぞれ入力重み衝突、出力重み衝突といいます。この問題を解決するために考えられたものが、LSTM(Long Short-Term Memory)です。LSTMは勾配消失の問題や入力重み衝突・出力重み衝突課題を解決するために考えられました。LSTMが持っている構造としてCEC(Constant Error Carousel)という情報を記憶する構造と、データの伝搬量を調整する3つのゲートを持つ構造となります。
入力重み衝突とは、現在の入力に対し、過去の情報の重みは小さくなくてはならないが、将来のために大きな重みを残しておかねばならないという矛盾が、新しいデータの特徴を取り込むときに発生するもので、出力重み衝突とは、現在の入力に対し、過去の情報の重みは小さくなくてはならないが、将来のためにお大きな重みを残しておけねばならない矛盾が、現在の状態を次時刻の隠れ層(中間層)へ出力するときに発生することです。
3つのゲートを持つ構造と情報を記憶するセルの構造のセットはLSTMブロックと言います。実際のLSTMでは隠れ層(中間層)にこのLSTMブロックが複数個並んでいます。このLSTMブロックの構造において、忘却ゲート、入力ゲート、出力ゲートがあります。これらのゲートと情報を記憶するセル(CEC)により、LSTMは重要な情報を必要なタイミングで利用したり、不必要になった情報削除のタイミングをコントロールできるようになります。CECにゲートを介して情報をやり取りする構造のおかげで、逆伝播の際に勾配消失の問題も起きにくくなります。
LSTMやRNNなどの学習における損失関数の1つとして、Connectionist Temporal Classification (CTC) lossというものがあります。例えば、スピーチの音声を文章化するタスクを考えたときに、学習音声データは単語毎に分割(セグメント)させ、それらを入力としたネットワークの出力とその単語ラベルの損失が計算されますが、これだと最初のデータの分割にコストがかかってしまいます。そこで、CTC lossはそのセグメントなしで学習することができる損失関数として提案されました。CTC lossはblankと呼ばれる空文字が出力されることと、連続して同じ単語が出た場合は1つに集約する(例えば、“aaabcc”は“abc”)ことを許します。これを例えば、blankを“_”とすると、“abc”という単語=“ab_ccc”、a_bb-c-、“aaabcc”などが同じ意味であることを示します。CTC lossはラベル“abc”に対して“ab-ccc”、a-bb-c-、“aaabcc”、など同じ意味となる単語のすべてのパターンを使って損失を計算できるため、セグメントせずとも入力の時系列と答えのタイミングを合わせることができます(この例では、出力単語の長さを7としてすべてのパターンを考えます)。
GRU
リカレントニューラルネットワーク(RNN)の一種であるGRU(Gated Recurrent Unit)について考えます。RNNには情報を記憶するためのセルと3つのゲートの構造を持つLSTMがあります。LSTMはRNNの勾配消失の問題と、入力重み衝突・出力重み衝突の問題を解決するのに貢献しましたが、一方でLSTMには計算量が多いという問題がありました。そこでLSTMを軽量化したモデルの1つがGRU(Gated Recurrent Unit)です。GRUはLSTMと同じようにゲートを用いた構造のままパラメータを削減し、計算時間が短縮されています。具体的な構造としてGRUはリセットゲートと更新ゲートという2つのゲートを用いた構造を持つブロックの組み合わせによって構成されています。
実際のGRUでは、このような2つのゲートを持つ構造のブロックを隠れ層(中間層)に複数個並べることで構成します。GRUはLSTMが持つ情報を記憶するセルのような構造を必要とせず、よりシンプルな構造をしています。
双方向RNN
RNN(BiRRN:Bidirectional RNN)は2つのRNNが組み合わさった構造で、一方はデータを時系列通りに学習し、もう一方は時系列を逆順に並び替えて学習を行います。このような時系列データの特徴を双方向から捉える構造によるメリットは過去と未来の両方の情報を踏まえた出力ができることです。
EncoderーDecoderモデルとsequence-to-sequenceの問題
RNNを応用したRNN Encoder -Decoderと呼ばれるモデルについて考えます。これまでのRNNは時系列データから1つの予測を出力するものです。一方で、入力の時系列に対して出力も時系列として予測したい問題もあります。このような問題をsequence-to-sequence(seq2seq)と言います。このsequence-to-sequence問題を解決するためにRNN Encoder ~Decoderが考えれられました。これまでのRNNとの出力の違いは下図です。
このような時系列での出力を得るためにRUN EncoderーDecoderモデルでは、エンコーダ(Encoder)とデコーダ(Decoder)と呼ばれる2つのRNN(LSTMなど)から構成されます。ここでエンコーダは入力される時系列データから固定長のベクトルを生成します。その後に、デコーダでは固定長のベクトルから時系列データを作成します。
Encoderの出力は、最後の隠れ層(中間層)の状態です。これらの情報は固定長のベクトルなので、Encoderは任意の長さの時系列データを固定長のベクトルに圧縮していると考えられます。
Attention
Attentionについて考えます。seq2seqの問題に対応したモデルとしては、RNNのEncoder-Decoderモデルがあります。しかし、このEncoder-Decoderモデルでは、Encoderによって時系列データを固定長のベクトルに圧縮しなければなりません。したがって、長い時系列データが入力されたときなどで固定長のベクトルの中に情報が入りきらないといった問題が発生してしまいます。このような問題を解決できる手法としてAttentionと呼ばれるものがあります。Attentionとは、入力データと出力データにおける重要度のようなもの(アライメント)を計算する手法であり、seq2seqのモデルに用いた場合は「入力の時系列データ」と「出力の時系列データ」の各要素間で対応するものを選択するようなイメージになります。すなわち次の図のように、Decoderである時刻のデータを生成する際に、Encoderに入力された時系列データの中から影響力の高いデータに注意を向けるということです。
ここでAttentionを持つEncoderーDecoderモデルではこのような動作を実現するために、encoderは隠れ状態を時刻ごとに出力してDecoderに渡しています。このことからAttentionの動作は時系列データにおいては「過去の入力のどの時点がどれくらいの影響を持っているか」を直接的に求めることでデータの対応関係を求めていると考えられます。
この問題におけるAttentionの手法は、soft Attentionのような、重要度を各時刻における隠れ層の状態(入力データの要素に対応)の重み付き平均を、デコーダでの推論に使用する手法を想定しています。 seq2seqに用いられるAttentionでは、各時刻のエンコーダの隠れ状態に対して出力に影響を与える重要度が計算されます。またデコーダでは重要度を考慮した隠れ状態を用いて入力データから新たな時系列データを生成します。 このような計算をするために、下図のようにEncoderはすべての時刻の隠れ状態を出力してDecoderに渡しています。したがってEncoderの出力は固定長のサイズに縛られることなく、入力となる時系列データのサイズに比例して変化させることができるようになっています。ここでEncoderの出力となる各時刻の隠れ状態には、その時刻に入力された時系列データの要素の特徴が多く含まれていると考えられます。そのため各時刻の隠れ状態は、その時刻にエンコーダに入力された要素とみなせます。ここでこれらの隠れ状態に対する重要度を求めることでAttentionは過去の入力のどの時点がどれくらいの影響を持っているかを直接的に求めていると考えられます。Attentionの手法には、self Attentionといった1つのデータ内での要素間の対応を計算するものなど、様々な手法が考えられています。
Transformer
量み込みや再帰的構造を使わず、完全にAttentionをベースとしたモデルとしてTransformerがあります。Transformerは通常のAttentionとself-Attentionの二つを組み合わせてEncoder-Decoderとし、時系列データの未来予測や言語の翻訳などタスクの精度を上げました。このAttentionとは、入力間の関係性を見ることができます。たとえば、「私/は/この/本/が/好き/。」と「I/lik/this/book/.」の2つの文章の関連を測ります。ここで「/」は各単語の区切りを意味します。この場合、「好き」と「like」の関連度が最も高くなりそうな予想ができます。self-Attentionとは、入力されるデータ自身でAttentionを計算するためselfという単語がついています。例えば、先程の例で、日本語文章自身のAttentionを取ると「好き」と関連度が高い単語は「本」となるなどといった、自身の文章内の各単語間の関連度を計算できるのです。Transformerは、この2つをEncoderに対してself-Attention、Decoderに対してself-Attentionと通常のAttentionを使った構造となっています。
TransformerはEncoder時にself-Attention、Decoder時にself-Attentionと通常のAttentionを使います。なぜならEncoderの入力には予測をするための元データを入れ、Decoderの入力はEncoderの出力と一時点前の予測結果を入れます。そのためEncoderは入力自体のみを使うself-Attentionで実装し、DecoderはEncoderの出力と予測を使う通常のAttentionで実装します。このときDecoderの一時点前までの予測結果に対しては、self-Attentionをします。 以下にすごくシンプルな構造に落とし込んだTransformerの例を示します。この例は「これは本です」を英語に翻訳する例です。
Encoderは入力「これは/本/です」の各単語間のself-Attentionを計算し、その出力はDecoderの途中部分に入力されます。Decoderでは「<SOS>」という最初の単語(Start of Sequenceの略)が入り、その単語のself-Attentionをします。そしてその出力とEncoderの出力に対してAttentionを取ります。これを経て「This」が予測値として出てきます。2単語目(図右半分)も同様の手順で、このときDecoderの入力には1つ前までのすべての予測値「<SOS>/This」が使われます。ただし、実際のTransformerは各Attentionを何度か通し、各単語の位置情報を付与する、単語間で数値計算ができるよう単語を数値ベクトル化するなどさまざまな工夫がされています。
Transformerは難しい概念ですね。
強化学習の特徴
強化学習の用語確認
強化学習では環境と学習目的を設定します。環境は状態、行動、報酬、推移確率などを内包します。行動主体であるエージェントが環境内で学習目的を達成するように、状態に対する最適な行動選択の学習を行います。また、行動選択の結果、エージェントは報酬を得ます。学習目的に近づく行動選択であったか報酬に基づいて評価することで行動選択を改善します。
方策はエージェントが持つ行動選択のルールのことです。個々の行動によって得た報酬をもとに、一連の行動選択による報酬和を最大化する方策を求めることが強化学習のゴールです。
方策の学習
行動選択を行なった後に報酬が得られない環境でも方策が学習できます。例えば以後のように勝敗が決した状態に達した時のみ報酬が得られる場合です。このような報酬を疎な報酬と言い、学習には時間がかかります。
強化学習を用いて最適な方策を学習させることについて、意図した目的を達成するために、状態を必要十分に設定することは難しいです。また報酬の設定によって方策の学習結果が異なりますので、達成したい目的に合わせた報酬を設定しないと意図しないものとなることがあります。また、状態や行動の数が多い場合には、現実的な時間で状態と適切な行動を結びつけることが多いです。
深層強化学習
強化学習においてディープラーニングを用いる理由
深層強化学習について、ニューラルネットワークを用いて状態の重要な情報のみを縮約表現します。これにより状態数が多い問題に対しても強化学習が適用できるようになりました。
ディープラーニングを用いてなくとも、確率分布関数などで方策をパラメトリックに表現できます。Deep Q Network(DQN)という深層強化学習手法では、状態や行動の価値をニューラルネットワークで表現できますが、その価値の算出に報酬を用います。深層強化学習はあくまで強化学習の手法にニューラルネットワークを用いた手法です。強化学習では行動の組み合わせを直接学習しません。
Q学習
Q学習について考えます。Q学習とは、状態と行動の組に対してその後得られる報酬和の期待値(Q関数)を推定し、期待値が最大である行動を選択するアルゴリズムです。
Q学習は価値ベースの強化学習手法です。価値推定を行う部分と推定した価値を参考にして行動選択する部分に分かれます。状態sと状態aの組の価値を、状態s行動aを選んだ後、得られる報酬和の期待値で表現します。これをQ関数と呼びます。アルゴリズムSARSAではある状態sにおける行動aの価値であるQ関数Q(s,a)の推定値を求める計算では、次の状態s’において方策を用いて選択した行動a'のQ関数Q(s',a')が用いられますが、Q学習ではA(s,a)の推定値を求める計算では、次の状態s'のQ関数のうち、最大の値を持つQ関数Q(s',a*)が用いられます。しかしQ値が最大である行動のみ選択すると、局所解に陥る場合があります。そこで一定の確率でQ値を無視した選択をします。Q値を参考にする行動選択を利用、Q値を無視した行動選択を探索と言います。探索と利用の間にはジレンマがあります。モンテカルロ木探索とは、ある状態から行動選択を繰り返して報酬和を計算するということを複数回行なった後、報酬和の平均値をある状態の価値とする価値推定方法です。TD学習とは、常態価値の推定において、直後に得られた報酬と次の状態の価値を用いる手法です。
DQN
Deep Q Network(DQN)について考えます。ニューラルネットワークでは、入力に状態を表現するベクトルを受け取り、Q関数を近似します。行動選択などの制御はあらかじめ設定した方策によって行います。
このときの出力層の各ノードは各行動の価値になります。Q関数以外の行動選択の部分はQ学習と変わらないので、DQN学習はQ学習におけるQ関数の近似計算だけをニューラルネットワークで下請けさせるアルゴリズムです。方策勾配法系の強化学習のアルゴリズムでは入力に状態を受け取り、出力に行動(または行動をとる確率)を出力するニューラルネットワークです。Q学習における次の状態s’において最大の値をとるQ関数をもちることを方策オフ型の学習と呼び、SARSAのアルゴリズムでは方策オン型の学習と言います。
Double DQN
DQNを改良したDouble DQN手法について、強化学習において、多くの手法はデータのサンプリングを前提として学習が行われます。以下の図は、通常のDQNにおいて現状状態sで行動a_1を選択したときに得られた即時報酬rと、現状状態sと次状態s_1の状態行動価値(Q値)からDQNの損失関数を計算する過程を示しています。
DQNはニューラルネットワークを用いてQ値を推論することで価値評価を行なっており、target networkのパラメータは学習を進めるのに従って変化します。ここで通常のDQNではtarget networkとonline networkは同じ重みを利用しています。一方で通常のDQNを改良したDouble DQNという手法は、価値評価に用いる2つのネットワークで違う重みを利用するようにした手法です。Double DQN手法において、2つの価値評価を異なるネットワークで行うことのメリットは偏ったQ値の過大評価を改善することができることです。
通常のDQNでは2つの価値評価を学習中の同じネットワークの出力でおこないますが、推論したQ値がノイズによって偏ると、偏ったQ値を過大評価してしまう問題があります。Double DQNでは、targetnetworkにonline networkとは別のノイズが乗ったネットワークを利用するので、ノイズによる過大評価を改善します。このときtarget networkにはonline networkの過去のパラメータを利用しています。Double DQNではメモリの使用量が減ることにはなりません。学習済みネットワークを利用する実運用の際はonline neteworkを使用します。また、時系列データに適した構造となっているものではありません。
Dueling Network
DQNを改良したDueling Network手法について考えます。通常のDQNは状態を入力としてQ値を推論するニューラルネットワークです。ここで通常のDQNを改良したDueling Networkの手法では、DQN同様に状態sを入力としてQ値を出力しますが、以下のようにネットワーク内部でQ値(状態行動価値)を状態価値V(s)とアドバンテージA(s,a)に分解しています。
状態価値V(s)とはその状態にいることがどれだけ良いのかを測るもので、アドバンテージA(s,a)とはそれぞれの行動の重要性を相対的に測るものです。Duleing Network手法において、Q値を分解するアイデアの元となった洞察について、行動選択が報酬の獲得にほとんど影響を与えない状態が多く存在することです。
Dueling Networkのアイデアは、多くの状態では、行動選択の重要性が高くない洞察をもとにしています。Dueling Networkで、各行動の選択が重要になるのは、ゲームなどにおいて、障害物が接近した状況などです。Dueling Networkにおいて、分割した構造は、それぞれ状態価値とアドバンテージという異なるものを推論するものであり、推論結果を平均するものではありません。Dueling Networkは、元々直接Q値を推論していた構造を2つに分けたもので、パラメータ数を削減することを目的としたものではありません。
Noisy Network
DQNを改良したNoisy Network手法について考えます。通常のDQNでは方策として、ε-greedy法が用いられます。ε-greedy法では、εの確率でランダムな行動選択を行うことで、新たな行動を探索するものです。しかし、εの値の設定は、ハイパーパラメータとして手動で設定するものであり、モデルの性能を決める必要なパラメータであるとともに、適切な値の設定が難しいという問題があります。ここで通常のDQNを改良した手法にNoisy Networkと呼ばれる手法が存在します。この手法は、ネットワーク内部でランダムなノイズを発生させることで、ε-greedy法を用いなくてもランダムな行動を起こし、新たな行動を探索できるようになっています。Noisy Network法がネットワーク内部でノイズを発生する仕組みとして、平均と標準偏差を学習しつつ、ガウス分布による乱数をネットワークの重みとして用います。
このとき、ノードの出力にノイズを加算するものではありません。ランダムにノードの出力を0にするのはDropout法で、ネットワークの正規化に用いられます。入力データにノイズを加えるものでもありません。
AlphaGo
AlphaGoに用いられる各ニューラルネットワークの入力データと出力データと教師データを考えます。ここでは教師あり学習フェーズと強化学習フェーズの2段階で以後の強さを高めます。
教師あり学習フェーズでは、2つのネットワークを学習させます。 Supervised Learning Policy Network(SL Policy)が、人間の棋譜を教師データとして、ある盤面を見て次の盤面を予測します。これによって人間が考える有望な手のみを探索することができるので、悪い手まで探索する計算を省くことができます。よって入力データが「現在の盤面状態」で出力データが「次の盤面状態」で教師データは「人間の棋譜」です。Rollout Policyは、SL Policyと同様に現在の盤面から次の盤面を予測します。Rollout Policyの特徴は予測性能を下げる代わりに計算を高速にしたことです。そしてSL Policyで探索すると決めた手から終局までざっと計算して勝敗を決めます。これによってSL Policyの手がどれだけ良かったかを勝敗で評価できます。よってSL Policyと同じで、入力データが「現在の盤面状態」、出力データが「次の盤面状態」、教師データは「人間の棋譜」です。
強化学習フェーズでは、SL PolicyとRollout Policyの組み合わせで、人間を参考にした囲碁がざっくりとできるようになったので、強化学習フェーズに入ります。 まず、SL Policy同士で対戦を行わせます。そして勝った方が取った手を方策漸進法で強化していきます。すると、徐々にPolicyが強くなっていくので最強のPolicyをそれ以外のPolicyからランダムに選んで対戦を行います。この繰り返しでPolicyを強化学習していきます。Reinforcement Learning Policy Network (RL Policy)でPolicyの方策を強化学習させ、入力データが「現在の盤面状態」で、出力データが「次の盤面状態」で、教師データは「自己対戦によるエピソードと報酬」でとなります。つまり、RL Policyは勝敗を報酬として強化学習する方策ネットワークということです。 次に学習したRL PolicyとSL Policyを用いて自己対戦を行い、Value Networkという盤面と入力し勝率を予測するネットワークを学習させるためのデータセットを作成します。 自己対戦はランダムな手数ではSL Policyを使い、その後1手はランダムに手を打ち、以降はRL Policyを使って終局まで対戦を行います。このような対局を何度も行い、ランダムに手を打ったときの局面と勝敗を記録することでValue Network用のデータセットを作成します。よって、入力データが「現在の盤面状態」で、出力データが入力盤面の「勝率」で、教師データは「自己対戦による局面と勝敗」です。Value Networkの導入によって、最終的なAlphaGoでは打ち手を選択する際に、最終的な勝敗まで加味することができます。 最後に学習済みの各ネットワークを、モンテカルロ木探索のアルゴリズムの行動選択部分に組み込むことで、AlphaGoが完成します。 すべてのネットワークは、入力が19×19の盤面であるためCNNを用います。 ちなみに最終的なAlphaGoでは、SL PolicyとValue Networkで行動選択を行います。RL PolicyではなくSL Policyを用いる方が高い勝率を上げたそうで、元置きでの手の多様性をもたせたからではないかと考察しています。
AlphaGoの手法
スタートの状態から遷移できる状態をいくつかランダムに列挙します。列挙した状態から1つ選び、この状態を起点としてゲームの勝敗がつくまでランダムに状態遷移のシミュレーションをします。勝敗がつくシミュレーションの起点以前の状態に価値付けを行います。状態の価値付けができたのでスタートの状態から価値の高い状態へ遷移します。すでに列挙済みの状態の中の終端を新しいスタートの状態とします。以上を繰り返します。価値の高い状態を起点としたシミュレーションによって効率的に手の探索を行うアルゴリズムをモンテカルロ木探索(MCTS)と呼びます。囲碁などの状態数と行動数が多いゲームでは価値の全探索が難しいが、このアルゴリズムを用いることで、価値を探索する幅と深さを限定し効率的に状態の価値付けができます。しかし、探索の幅を限定する際、つまりある状態から次の盤面を列挙するときにランダムに選ぶのでは人間が選ばないような悪い手を選んでしまう点、シミュレーションはランダム状態遷移で行うため、同じ状態を起点としても勝ち負けが変わってしまい、価値付けがうまくできない問題がありました。AlphaGoでは、CNNを用いて4つのニューラルネットワークを学習させます。人間の棋譜の遷移関係を学習させることで1つ次の手を予測し勝ちに繋がりやすい状態を列挙するSL Policy、SL Policyの予測性能を落とす代わりに計算速度を上げたRollout Policy、SL Policyのネットワーク同士の対戦による学習で予測性能を向上させたRL Policy、またある盤面からRL PolicyとRollout Policyのネットワークを用いて勝敗がつくまでゲームを進めその勝敗をもとに盤面の勝利確率を学習させ、予測するValue Networkを学習させます。これらのニューラルネットワークによって改善したモンテカルロ木探索(MCTS)で作った囲碁AI同士を対戦させることで、新しい棋譜データを自動生成し、各ネットワークを学習させることで強い囲碁AIを作ります。
AlphaGo以前ではゲームAIの作成方法としてモンテカルロ木探索(MCTS)がありました。MCTSではゲームの手番の進行を木構造で表現します。ゲームの初期では、打ち手が勝敗に繋がるか評価することができません。しかし、すべての打ち手に関して勝敗がつくまで木構造を拡張する膨大な組み合わせという計算ができません。そこでMCTSでは、木構造に含める打ち手をいくつか全打ち手からランダムに選出することと、木構造を段階的に深くする方針を取ります。木構造を段階的に深くしながらランダムに選出した打ち手からさらに選んで勝敗がつくまでランダムに手番を行います(ロールアウト)。これで勝敗がつくので、スタート状態から勝敗がついた状態までの状態を評価することができます。これを繰り返して、価値の探索を行う箇所を限定しながら有望な打ち手の周辺のみを探索できます。しかし、木構造に含める打ち手をランダムに選ぶ時点で最有望手を含まなかったり、ロールアウトを行う際に同じ盤面からスタートしても、勝ち負けが変わってしまったりする問題がありました。これらの問題に対して、盤面から有望手を決めるSupervised Learning Policy Network(SL Policy)を人間の棋譜から学習させ、探索する木の幅を狭くしました。このと同じく人間の棋譜から学習させ、SL Policyより精度が低い代わりに計算の速いRollout Policyも学習させておきます。ここまでが教師あり学習フェーズです。
ここからが強化学習フェーズです。 ここではSL Policyを初期値として、より強いRL Policy(Reinforcement Learning Policy Network)を作成します。RL Policyの学習は、味方モデルとなる最新のモデルと、相手モデルとなる学習中に保存してきたRL Policyからランダムにサンプリングしたモデルで自己対戦を行うことで、強いRL Policyを作成します。その後、局面から勝率を予測するValue Networkを学習させます。Value Networkは、学習済みのSL PolicyとSL Policyを組み合わせて自己対戦を行い、局面と勝敗データを自動的に記録したデータセットを利用して学習します。最後にSL PilicyとValue NetworkをMCTSの行動選択に組み込むことでこれまでのMCTSよりはるかに高い勝率を実現しました。
深層生成モデル
深層生成モデルのイメージ
深層生成モデルについて考えます。ディープラーニングは画像をクラス分類するようなタスクにおいて多くの研究が行われますが、これらのタスク以外にも新たなデータを生成するタスクにおいて活発な研究が行われています。このような分野においてディープラーニングを生成タスクに用いたモデルを深層生成モデルと言います。すべて深層生成モデルとして用いられるモデルまたはアーキテクチャはVAE、GAN、WaveNetです。
最近の深層生成モデルの動向として、テキスト情報を加味した未知の画像生成が提案されています。中でもOpenAIのDALL-E、DALL-E2やGoogle社のImagenという手法がインパクトのある提案として登場しました。これらの手法はどちらも自然言語のモデルを用いてテキスト情報を潜在空間に埋め込み、それを加味して画像生成を行います。 たとえば、「犬の散歩しているチュチュを履いた大根」や「アボカドの形をした椅子」といった不思議な文章でさえ画像化します。 特にDALL-Eで使われるアーキテクチャはCLIPと呼ばれ、テキストと画像の関係性を強く学習するため、zero-shot learning(そのクラスの画像を見なくても分類可能とするタスク)においても高精度を出しました。
VAE(Variational Autoencoder:変分オートエンコーダ)はオートエンコーダに工夫を加え、新たなデータを生成できるようにしたモデルです。GAN(Generative Adversarial Network:敵対的生成ネットワーク)は偽データを生成するモデルとデータの真贋を判別するモデルを交互に学習させていくことで、偽データを生成するモデルが本物に近いデータを生成できるようにするアーキテクチャです。WaveNetは音声生成の分野にお大きな影響を与えたモデルです。最初の入力から次の出力を次々に予測していくアプローチをベースにCNNで構成されています。
VAE
深層生成モデルの1つであるVAE(Variational Autoengcoder:変分オートエンコーダ)はオートエンコーダに改良を加えたモデルで、新しいデータを生成することができるモデルです。新しいデータを生成するためにVAEのエンコーダ部分は入力データを生成する何かしらの分布の平均と分散に変換する学習を行います。また入力データを生成する何かしらの分布の平均と分散から乱数を使ってデコーダの入力となる値を生成することで変化が加わった新たなデータを生成します。
画像データを例にすると、通常のオートエンコーダは入力画像を圧縮し、特徴を捉えたより低次元のベクトルで表現するものでした。上図のようなVAEでは画像を生成する潜在変数(入力データの特徴を圧縮したベクトル)の分布を学習し、入力画像を平均と分散に変換します。変換後に、デコーダの入力となる潜在変数をサンプリングすることで新たなデータを生成できます。このようにVAEでは、入力データとは異なる新たなデータを生成できます。
GAN
深層生成モデルのアーキテクチャの1つであるGANについて考えます。GAN(Generattive Adversarial Network:敵対的生成ネットワーク)と呼ばれるアーキテクチャでは、主に次の2つの構造を持っています。ジェネレータとは、元となるデータやランダムなノイズといった入力を受け取り、偽物のデータを出力します。ディスクリミネータとは学習用のデータセットに含まれている本物のデータもしくはジェネレータが生成した偽物のデータを受け取り、これらデータが本物であるか偽物であるかを出力します。ここでもしジェネレータが、十分精度の高いディスクリミネータを騙せる画像を生成できるように学習できれば、ジェネレータを用いて本物に近い画像を生成することができると考えられます。このような学習をうまく進めるために、GANではジェネレータとディスクリミネータの学習を少しずつ交互に進めるように学習を行います。
GANのアーキテクチャを応用したモデルに、ジェネレータとディスクリミネータにCNNを利用したDCGAN(Deep Convolutional GAN)があります。GANにはこのような派生したモデルが多く考案されており、近年の画像生成分野において人気を博しているアーキテクチャとなっています。
CycleGAN
深層生成モデルのアーキテクチャの1つであるCycleGANについて考えます。画像から別の画像を生成するアーキテクチャで、シマウマと馬、写真と絵画などドメインを変換できるように生成器が学習していきます。
Pix2Pixとは画像から別の画像を生成するアーキテクチャで、実際の画像からベースとなる画像を作成し、ベース画像から生成した偽画像が本物の画像と判断されるように生成器が学習していきます。実画像Yからベースとなる画像Xを生成し、Xからノイズzを用いて偽画像GXを作成します。このX、YとX、GXが本物のペアかどうかをDiscriminatorが学習していきます。それによりGeneratorはより本物に近い画像を生成できるようになります。
CycleGANは驚くべきことにこのアーキテクチャは、ドメイン間の画像のペアがなくても学習します。
stackGANはテキストを入力として、そのテキストの内容の画像を生成します。styleGANは固定特徴マップを段々と拡大していくことで、高解像度の画像を生成します。拡大後に潜在空間から得られたノイズに非線形変換を行って取得したstyle情報を毎回付与することで、画像の細かいところまで調整された高精細な画像を取得できます。
ディープラーニングの手法(2)
画像分類など有名なタスクや新しいモデルの名前と中身について、しっかりと押さえておく必要があります。話題となった手法は把握できるようにしておくとG検定への合格へ近づきます。
画像認識
CNNを用いた代表的なモデル
CNNのモデルについて考えます。画像認識の分類精度を競う大会であるILSVRC(imagenet large scale visual recognition challenge)においてAlexNetと呼ばれるCNNを用いたモデルが注目を浴びて以来、CNNを用いたモデルが良い成果を出しています。2012年にAlexNetが1位を出してILSVRCにおいて初めて深層学習の概念を取り入れました。2014年にGoogLeNetが1位となりinceptionモジュールという小さなネットワークを積み上げた構造をしています。2014年にVGGI6が2位となり、サイズの小さな畳み込みフィルタを用いて計算量を減らしています。2015年にRexNetが1位となり、層を飛び越えた結合(Skip connection)をしています。
GoogLeNetの特徴の1つは、Inceptionモジュールと呼ばれる小さなネットワークを積み上げた構造をしていることです。
Inceptionモジュールは3つの異なるサイズの畳み込みフィルタと3×3のmaxプーリングから構成されます。Inceptionモジュールは入力画像に対して、各畳み込みフィルタとmaxプーリングをそれぞれ行い、その後これらの出力を結合して出力します。 実はこのモジュールを用いたブロックは、5×5の畳み込みフィルタを複数個持つ畳み込み層で同じものが表現できます。Inceptionモジュールでは、このような畳み込み層と比較して、表現力を維持したままパラメータ数を削減することが期待できます。 次にVGG16は、このように13層の畳み込み層と3層の全結合層の合計16層から構成されているモデルです。 VGG16では、3×3の小さな畳み込みフィルタのみを用いた上で、層を深くしたという特徴があります。 畳み込み演算において、5×5の畳み込み1回と3×3の畳み込み2回の出力を比較したとき、これらの出力ピクセルに含まれる情報は、元画像の同じ範囲から計算されたものになります。 一方で畳み込みフィルタに含まれるパラメータ数は、3×3の畳み込みフィルタ2枚のほうが5×5の畳み込みフィルタ1枚のときより少なくなります。 このことから畳み込みフィルタのサイズを小さくし、層を深くすることで、表現力を維持したままパラメータ数を削減できることがわかります。したがって、過学習を防止するなどさまざまなメリットが得られるようになります。 最後にResNetは、最大152層から構成されているネットワークです。 基本的にニューラルネットワークは、層を深くすることで表現力が増えると考えられますが、一方で層が深くなると勾配消失問題により入力層付近の層が学習できなくなることが課題でした。 ResNetで特徴的なのは、層を飛び越えた結合(Skip connection)があるという部分です。このような構造を導入したことにより勾配消失を防止することができ、より層を深くした表現力の高いネットワークとなっています。
Wide ResNet
ResNetは通常のCNNにResidual blockを導入することにより多層化に成功しました。これによりモデルを深くすればするほど精度が上がることが示されました。しかし、深さだけでなく同様に幅も重要ではないかと考えた研究もあります。その1つにResNetの派生としてWide ResNetがあります。ResNetの幅をよりwideにすることでモデルを深くすることなく高精度を出しました。ここでいう幅とは畳み込み層の出力チャネル数のことである。さらにWide ResNetはResidual block内にDrop outを入れることで過学習を防ぐ効果があることを示しました。Wide ResNetはResNetに対して精度以外にも計算速度を上げるという効果も期待できます。
ディープラーニングは層を深くすることで入力に近い層の勾配が消失してしまう問題があり、ある程度異常は深くできませんでした。その問題に対してResidual blockを導入することで、勾配消失を防ぐことができ、層を多層にすることが可能となりました。Residual blockを使うResNetでは、層を多層にすることで精度が上がることが示されました。 このResidual blockとは、ある層に与えられた信号を、それよりも少し出力側の層の出力に追加するスキップ接続(ショートカット接続)により、深いネットワークを訓練できるようにすることで、入力に近い層の勾配が消えないようにするものです。 層を深くすることは、モデルの自由度が上がるため、過学習する可能性が高くなります。 また、層が深くなることで計算量も増加するため、学習速度は遅くなります。層が増えることでパラメータ数が増えるため、メモリの使用量も増えます。
Wide ResNetは通常のResNetの各層へ読み込むチャネル数を定数倍します。畳み込み層のカーネルサイズやdilation rate、畳み込み層の数はベースとなるResNetで決定されています。層を深くしないため、最終的な出力までの計算が速く済みます。その代わり幅が広いため、GPUなどのメモリ使用量は増えます。 層の幅が増えることはチャネル数が増えているだけなので、畳み込み処理で画像内の広い領域を見ようとしているわけではありません。広い範囲を見る場合は畳み込みのカーネルサイズを大きくします。また、各層読み込み後の特徴マップのサイズは元となるResNetから変わらず、チャネル数が増えます。
3x3はカーネルサイズ、ReLUは活性化関数、Cはチャネル数のことでWide ResNetはチャネル数が増えていることがわかります。実際にはここにバッチ正規化やDropoutなどが入ります。
DenseNet
ResNetはある畳み込み層の出力をそれよりも出力側に近い畳み込み層の出力に追加することで、層を深くすることによる勾配消失問題を解決しました。これをResidual blockと呼ばれ、ある畳み込み層の出力とそれよりも出力側に近い畳み込み層の出力同士を足し合わせます。このResNetの派生としてDenseNetがあります。DenseNetはResNetに対してDense blockというものを使います。このブロック内ではResNet同様各畳み込み層の出力がそれよりも出力側に近い畳み込み層の出力に追加されるが、ResNetとは異なり出力同士をチャネル方向に連結します。さらにDensNetではブロック内の各層の出力が以降の畳み込み層すべてに直接追加したため、特徴量の伝達が強化されています。
DensNetについて、特徴マップのサイズに関しては、入力の画像サイズや畳み込みのカーネルサイズなどに依存するためDenseNetの構造で特徴マップの大きさが大きくなるわけではありません。 層の出力同士が連結されることでチャネル方向に増えていますが、各層の出力はチャネル数が増えているわけではありません。 また、スパースとは情報量が希薄な状態を指します。これをDense blockと呼んでいます。
ResNetとDenseNetの違いを以下の図に示します。Cはチャネル数です。Dense blockではチャネル方向に出力を連結するため、入力のチャネル数が後半の層で増えていることがわかります。 さらに各層の出力がすべての後ろの層に連結されています。実際には3=64チャネルではなく3→12チャネルといった少ないチャネル数でも高精度を出すことが論文では示されています。また、バッチ正規化などもDense block内の各畳み込み層の前に導入され、このブロックの出力に1×1カーネルサイズの畳み込みとAverage Poolingがされています。 ただし、最後のDense block後は、Global Average Poolingが適用され、その出力が全結合層に入力されます。
SENet
CNNは畳み込み層を複数用意することで画像認識分野において大きな貢献をもたらしました。特に層を深くして高精度を出したResNetや、畳み込み層の幅を大きくして高精度を出したWide ResNetなどがあります。中でもSqueeze-and-Excitation Networks(SENet)は畳み込み層の特徴マップの各チャネル情報に注目した派生モデルです。その特徴マップの各チャネル情報から各チャネルの重みを考慮することで重要なチャネルを際出せることが期待できます。
SENetは畳み込み層の出力特徴マップのチャンネル間の相互依存性について着目し、モデルのアーキテクチャを提案しました。これは特徴マップの各チャンネルの平均値をそれぞれ求め、それらを全結合層に通して代表値を求め、それぞれを元の特徴量に掛け算します。例えば、16チャンネルある特徴マップに対して16個の平均値を求め、全結合層で重要度を作成したあと、16個の代表値が得られ、それを元の16チャンネルの特徴マップに掛け合わせます。
「チャンネル毎のカーネルサイズ」を変える手法では、MixConvというものが提案されています。 「出力のチャンネル数」は、畳み込み層の幅のことなので、これに対してWide ResNetが提案されています。 「特徴マップのサイズ」は、畳み込み層のカーネルサイズやスライドサイズに依存します。SENetは特徴マップにそれぞれの代表値を掛けるため、重要度が高いチャンネルの特徴マップは強調されます。
物体検出
物体検出について、画像に写っている物体をバウンディングボックスと呼ばれる矩形の領域で位置やクラスを認識します。
物体検出を行う手法は、R -CNN、YOLO、SSDなどが存在します。画像分類とは、画像がどのクラスに属するのかを予想することです。セグメンテーションとは、画像に写っているものをピクセル単位で領域やクラスを認識することです。画像生成とは、敵対せいせネットワークや変分オートエンコーダなどを利用し、画像を生成することです。
R-CNNは2014年に発表されたCNNを用いた物体検出モデルです。YOLOは物体検出手法の1つで検出と識別を同時に行います。SSDとは物体検出手法で、特徴の1つに小さなフィリタサイズのCNNを特徴マップに適応することで、物体のカテゴリと位置を推定することが挙げられます。
R -CNNとFast R -CNN
物体検出は、深層学習以前では、人手で画像から良い特徴量を抽出するように設計されていました。たとえば、スライドウィンドウ内の輝度ヒストグラムを使って特徴抽出をして物体検出をするhistogram of oriented gradients(HOG)という手法があります。 しかし、畳み込みニューラルネットワーク(CNN)が登場し、ImageNet Large Scale Visual Recognition Challenge(ILSVRC)という画像認識コンペティションにおいて非常に高い精度を出しました。そこで、物体検出においてCNNを使うことが提案されました。 最初は1枚の画像を大量の領域に分けてCNNに入力し、領域毎に背景、物体を認識して最終的に1枚の画像内の物体検出を行います。
図のように画像をさまざまなサイズに分割し、それが背景なのか物体なのか、またその画像内のどの部分が物体なのかを判断します。ここでFNとはFully connected layer(全結合層)のことであり、クラス分類用とバウンディングボックス(bbox)の位置特定用の2つ用意されています。この手法の特徴はCNNを使うため高精度を出しましたが、分割数が非常に多く処理速度が非常に遅かったです。この手法をより良くしたのがR-CNN(Regional CNN)です。R-CNNは分割した画像をすべてCNNに掛けるのではなく、物体がありそうな領域を探してそれらのみを検出器であるCNNに入力します。この物体がありそうな領域をRegion-Of-Interest(ROI)と呼び、これを探し出すモデルをRegion Proposalと呼びます。
図のようにRegion Proposalは、画像中の物体がありそうな部分を切り出し分割します。それらの分割した画像毎にCNNを使って物体検出をします。この手法の特徴は画像中の物体のありそうな部分のみを使うため処理速度が向上したことです。この手法をさらに改善したものとしてFast R-CNNがあります。これはRegion Proposalで切り出す部分を画像ではなく画像の特徴量にすることでR-CNNを高速化しました。
このようにFast R-CNNはRegion ProposalとCNNを並列して実行します。この手法の特徴はFast R -CNNはR -CNNに対してCNNを使う回数が1回で済むので、高速化に成功したことです。
Region Proposalは深層学習ではなくSelective Searchという手法で行うため、これ自体に処理時間がかかり、処理速度は絶対的に遅いままでした。さらにRegion Proposalで分割した枚数が多いと、その数だけCNNを使うため、処理時間がかかる場合もありました。このRegion Proposalを深層ニューラルネットワークでさらに高速化したものに、Faster R-CNNというのも存在します。これは2015年にマクロソフト社が開発した物体検出アルゴリズムです。
セグメンテーションの基本
セグメンテーションとは、画像全体や画像の一部の検出ではなく、ピクセル一つひとつに対して、そのピクセルが示す意味をラベル付けするタスクです。このタスクは、セマンティックセグメンテーション、インスタンスセグメンテーション、パノプティックセグメンテーションなどさらに細分化されます。それぞれの特徴として、セマンティックセグメンテーションは背景、猫、車といったカテゴリごとにピクセル単位でクラス分けします。 インスタンスセグメンテーションはそれぞれの人や車などといった物体ごとにクラス分けを行い、背景などの数得られないものはクラス分けを行いません。 パノプティックセグメンテーションは、背景、猫、車といったカテゴリごとにクラス分けをしつつ、それぞれの人や車などといった物体ごとのクラスも判別します。 セグメンテーションは画像を入力とするため、畳み込みニューラルネットワーク(CNN)を活用することで高い精度を得ることができました。 たとえば、セマンティックセグメンテーションに対してFully Convolutional Networks(FCN)と呼ばれるモデルが提案されました。これの特徴はすべての層が畳み込み層のみで構成されています。
セグメンテーションは、セマンティックセグメンテーション、インスタンスセグメンテーション、パノプティックセグメンテーションの3種類があり、それぞれの特徴は解答の通りです。 たとえば、セマンティックセグメンテーションは、オブジェクトそのものをカテゴリライズしたいときに使うことができ、インスタンスセグメンテーションは物体を個別に分類したい際に使え、パノプティックセグメンテーションはその両方をしたいときに使うことができます。
セマンティックセグメンテーションに対して、CNNを用いた手法がFCN (Fully Convolutional Networks) です。これはすべての層が畳み込みのみで構成されているため、任意のサイズの入力を受け取って、セグメンテーションをすることができます。U-Netはオートエンコーダ形式でエンコーダからデコーダへのスキップコネクションがあります。SegNetはオートエンコーダ形式で、デコーダ時の特徴マップの拡大の仕方をpooling時の位置情報を用いて工夫しました。FPNは特徴マップをピラミッド型に伝播していきます。
SeγNetは2017年に提案されたセマンティックセグメンテーションを行う手法の1つです。入力画像から特徴マップの抽出を行うEncoderと、抽出した特徴マップと元の画像のピクセルの位置の対応関係をマッピングするDecoderで構成されています。U -Netはセマンティックセグメンテーションの手法の1つです。全層畳み込みネットワークの一種で畳み込まれた画像をdecodeする際にencodeで使った情報を用いるのが特徴です。
セグメンテーションの理解
セグメンテーションは、セマンティックセグメンテーション、インスタンスセグメンテーション、パノプティックセグメンテーションというタスクに細分化され、それぞれに対してさまざまな深層学習モデルが提案されています。 セマンティックセグメンテーションに対して最初に畳み込みニューラルネットワーク(CNN)を使ったFully Convolutional Networks(FCN)があります。これはすべての層を畳み込み層のみで実現していることが特徴です。その他にもオートエンコーダ形式で、デコーダ時にエンコーダ時のpooling位置を参照してup samplingするSegNetMask R -CNNや、エンコーダの出力に異なるサイズのpoolingをし、それらをデコーダに入力するPSPNetや、エンコーダの出力に異なるdilationの畳み込みを行い、それらをデコーダに入力するDeep Labなどがあります。 インスタンスセグメンテーションは、物体検知のモデルを派生させたMask R -CNNなどがあります。 パノプティックセグメンテーションには、ピラミッド構造のようなオートエンコーダを用いてセマンティックセグメンテーションとインスタンスセグメンテーション両方を学習するPanoptic FPNなどのモデルがあります。
SegNetはデコーダ時に特徴マップの拡大の仕方を工夫したモデルです。エンコーダ時のpoolingの位置を保存して、デコーダ時に保存していた位置を使うことでpoolingと対応づけて特徴マップの拡大をするので、up samplingの学習が不要です。
PSPNetはエンコーダの出力に対して異なるサイズのpoolingを行い大域的な特徴と局所的な特徴の両方を得られます。異なるサイズのpoolingをすることで異なるサイズの特徴マップを得ることができ、その特徴マップの特徴をup samplingしてサイズを合わせてデコーダの入力とします。
DeepLabはPSPNetと違い、Atrous Convolutionという畳み込みのパラメータ間隔を広げたものを使います。この感覚は畳み込みではdilationと呼ばれます。異なるdilationの畳み込みを行い、異なるサイズの特徴マップを得ます。
Mask R-CNNは、物体検知モデルのFaster R-CNNをセグメンテーション用に拡張したものです。これにより、物体毎に色分けを可能としました。
OpenPose
画像または動画内の人のポーズや姿勢を推定する姿勢推定というタスクがあります。人のポーズや姿勢推定は、もともと画像中から人を検出する物体検出を経た後、ポーズ推定をそれぞれの検出部分に適応させていました。これはトップダウンアプローチと呼ばれます。しかしこれは人の検出数が増えるほど時間がかかり、リアルタイム性に欠けます。 それに対してボトムアップアプローチと呼ばれる姿勢のキーポイントを直接画像から検出し、それらを繋げる手法があります。その中でPart Affinity Fields(PAFs)という手法が提案されました。これを使うことで、一度に画像内の複数の人に対して姿勢推定ができ、トップダウンよりも高速な推定が可能となりました。このPAFsは検出した間接点同士の結線の繋がりを推論するものです。このPAFsと関節を検出するネットワークを並列にして学習、推論することで高速かつ高精度な検出が可能となりました。
姿勢推定では高速化をするためにPart Affinity Fields (PAFs) を使うことが提案されています。Part Affinity Fields とは検出された関節点のどことどこが繋がるかを推論するモデルになっています。実際には線ではなく点から点へのベクトルの向きを使って繋がりを検出します。このモデルではPart Affinity Fields と関節を検出する2つのモデルを並行に並べて実現されています。
このように、関節推定とPart Affinity Fieldsの2つのモデルで、それぞれを推定させています。これをstage 1とし、何段階か同じ処理を通すことで大域的な部分を見ることができ、より細かく推論が可能となることで高精度な推論結果を得ることができます。
モデルの解釈性
ディープラーニングは、多層にすることによる表現力向上で、さまざまなタスクにおいて高いパフォーマンスを発揮しました。 しかし、ディープラーニングのモデルは非線形で多層なため、モデル自体の振る舞いを理解することができません。そのためディープラーニングはブラックボックスと呼ばれ、モデルの予測結果の判断根拠を解釈することができません。これを解消するためにExplainable AI(XAI)という研究分野が生まれました。単純な線形モデルでは各説明変数にかかる重みが、それぞれの説明変数の重要度と解釈でき、モデルが何を重要としているかを解釈できます。これに目を付け、複雑なディープラーニングモデルなどを線形モデルや決定木などで近似させて説明性を考慮したLIMEが提案されました。その他にも協力ゲーム理論をベースに用いて重要度を測るSHAPも提案されています。これらはテーブルデータ、画像データにも適用できます。画像を扱う上で近年では畳み込みニューラルネットワーク(CNN)が使用されます。 CNNに対してモデルの最後の畳み込み層の特徴マップとGlobal Average Pooling(GAP)後の全結合層の重みを用いて説明性を考慮したCAMも提案されました。これはLIMEやSHAPのように近似をしたり重要度を再計算する必要がなく、学習したモデルにデータを流し、そこで得られる最後の畳み込み層の特徴マップにGAP後の全結合層の重みを加えてデータの注目箇所を可視化します。
NASはモデルの構造事態を探索するタスクです。Feature Pyramid NetworksはU -NetのようにAuto Encoderにスキップコネクションが追加された構造を持ち、特徴マップを拡大していくたびに予測することで、異なるスケールの物体検知やセグメンテーションが可能になるモデルです。PCA(Principal Component Analysis)は主成分分析という次元削減の方法です。
LIMEは複雑なモデルを単純な線形重回帰で近似することで重要度を近似モデルで表現したものです。図でいうと近似した線形モデルの各結線の重みが重要度となっています。SHAPは、シャープレイ値という協力ゲーム理論で使われる重要度を近似的に計算してモデルの解釈性を表現します。SHAPはシャープレイ値を計算するための式を、モデルに対する条件付き期待値関数を用いて近似します。条件付き期待値関数の入力値は、元の入力の重要度を測りたい説明変数を固定して、他の部分をランダムにしたものを入力とします。CAMはモデルの特徴量を取得して活用します。CAMは畳み込み層の最後の出力(Black boxの最後の部分)に着目し、この特徴マップを使います。その特徴マップは、Global Average Pooling(GAP)を経て、最後の線形重回帰に渡されます。このときの各特徴マップと線形重回帰の重みを掛け合わせて足したものがヒートマップとなり、これを入力画像にすることで、モデルが画像のどこに注力したかを判断します。ただしCAMはGAPを持つモデルにしか適用できず、その他のモデルに対してはGrad CAMというものが提案されています。これは特徴量ではなく特徴量の勾配を使うことでモデルの解釈をしたものです。
Efficient
EfficientNetの特徴を考えます。これはモデルの深さ、広さ、入力画像の大きさをバランスよく調整しています。
EfficientNetは、2019年にGoogle社から発表されたモデルで、これまで登場していたモデルよりも大幅に少ないパラメータ数でありながら、SoTAを達成した高精度で高速なモデルです。モデルの深さ、広さ、入力画像の大きさをバランス良く調整しているのが特徴です。 DenseNetの特徴は前方の各層から出力すべてが後方の層への入力として用いられており、Dense Blockと呼ばれる構造を持ちます、ResNetの特徴は最大152層から構成されているネットワークを持っており、Skip connectionがあります、GoogleNetの特徴はInceptionモジュールという小さなネットワークを積み上げた構造をしています。
ドメインアダプテーション
深層ニューラルネットワーク(DNN)の研究が進んだことで、画像の識別などのタスクにおいて高い性能が達成されるようになりました。しかし、DNNを用いた識別モデルの学習には、大量の教師ラベル(正解ラベル)付きサンプルが必要となるため、少ないデータで学習できる手法や他のデータセットのラベルを流用するなどの手法を模索されていました。中でもドメインアダプテーションという手法があります。ドメインアダプテーションとは、すでに教師ラベルが準備されたデータ(ソースデータ)で学習されたモデルを目標のデータ(ターゲットデータ)に利用する際に用いる手法の1つです。ドメインとは「何についてのデータか」というデータの種類や形を指し、ソースデータのドメインはソースドメイン、ターゲットデータのドメインはターゲットドメインと呼ばれています。予測対象であるターゲットドメインとは異なる分布であるソースドメインの情報を活用して、モデルの予測性能を向上させることを目的としています。
ドメインが異なるソースデータで学習したモデルをそのままターゲットデータに用いると、精度が大きく下がります。ドメインアダプテーションはこの問題を解決する手法です。精度が大きく下がる原因としてソースデータとターゲットデータの分布の違いがあります。そのためドメインアダプテーションでは、ソースデータとターゲットデータの分布を揃えるアプローチを取ります。Maximum Mean Discrepancyや共分散の指標を使用して分布間の距離を測ったり、敵対的学習を用いたりすることにより分布を揃えています。ドメインアダプテーションは、教師ありドメインアダプテーションに加え、教師なしドメインアダプテーションが提案されています。2015年に発表された"Unsupervised Domain Adaptation by Backpropagation"では、従来の誤差逆伝播の途中にGradient Reversal Layerと呼ばれる層を挿入することで教師なしアダプテーションによりモデルの精度を向上させました。また、ドメイン画像認識の分野において実世界の撮影環境はドメインの1つであるため、撮影環境の違いはドメインの相違に含まれます。
sim2real
近年ではロボットの制御に強化学習を取り入れる研究が進んでいます。強化学習を用いたロボット制御の方策獲得では、安全性の向上やコスト削減を目的としたsim2realが望まれています。sim2realとはシミュレーション環境で方策を学習してから実環境に適用することを指します。しかし、シミュレーション上の環境と実環境ではリアリティギャップと呼ばれる相違が存在します。リアリティギャップが原因で実環境にロボットがうまく適応できない問題が生じます。リアリティギャップを埋めるための方法としてドメインランダマイゼーションが提案されています。ドメインドメインランダマイゼーションにおいて、実環境におけるすべての影響をシミュレーションで再現し学習させることは不可能なので、実環境の行動選択が必ず成功するとは限りません。
シミュレーション環境で方策を学習してから実環境に適用することをsim2realといいます。しかし、シミュレーションと実環境の相違が原因で、ロボットが実環境に適応できない問題が生じています。シミュレーションと実環境の相違をリアリティギャップと呼び、リアリティギャップを埋める手法としてドメインランダマイゼーションが提案されました。ドメインランダマイゼーションとは、質量や摩擦係数といった物理パラメータ等のシミュレーション環境に関するパラメータをランダムに複数生成することで、それら複数の環境で学習することで、シミュレーションの時点でさまざまな環境における学習を行うことができます。
seq2seqはRNNのモデルの1つです。pix2pixも深層生成モデルの1つです。end2endはデータの変換や出力結果の調整等の必要ない構造のことを示しています。end2endのモデルは生データをモデルに入力するだけで結果が出力されます。OCRを例にすると、通常は文字が書かれた画像に対して、「テキスト検出」や「文字分割」といった細かいタスクを経て文字が認識されます。end2endでは、入力となる文字画像と出力となる文字のラベルのみを与え、「テキスト検出」や「文字分割」などの中間の処理すべて学習させます。
ドメインランダマイゼーションとはシミュレーション環境に関するパラメータをランダムに複数生成することなのです。また、ロボットがカメラで認識する物体の形状や色もランダム化するパラメータとなります。2017年に発表された論文"Domain randomization for transferring deep neural networks from simulation to the real world."では物体の形状や色、素材の質感などのパラメータをランダムに生成して学習を行いました。
自然言語処理
形態素解析と構文解析
自然言語処理には形態素解析、構文解析、意味解析、文脈解析の4つの工程があります。形態素解析とは、文章を「意味を担う最小単位(=形態素)」に分割し、それぞれに品詞などの情報を振り分ける処理です。形態素解析は解析を行う際に辞書を用意しておくことで解析精度が向上する可能性が高まります。構文解析は定義した文法に従って形態素間の関連づけを解析する処理を行います。
形態素解析とは、形態素と呼ばれる言語で意味を持つ最小単位まで分割し、解析する手法です。また、単純に単語を分割するだけでなく、それぞれの形態素の品詞などの判別も行います。そのため、英語は単語毎にスペースが入っている場合が多いですが、例外の存在や、品詞などの情報を付与することが重要です。また、形態素解析を行う上で単語埋め込みモデルは不要です。形態素解析は辞書がなくても行うことができますが、造語や新語などを特定することが難しい場合があり、そういった単語を辞書に登録しておくことで確実な形態素解析を行うことができます。また、文章のトピックを推定する解析ではないです。
構文解析は、文法に従って形態素間の関連付けを解析し、どの形態素がどこにかかっているかを解析することをいいます。また、構文解析を行うことで、形態素間の関係を下図のような構文木にし、係り受け関係が見えるようになります。形態素解析は形態素同士の関係を推測する処理であり、意味を考慮したり文同士の関係を推測したりしないです。文が肯定的か否定的かを判断することは、文の肯定的/否定的を推定する感情分析と呼ばれる自然言語処理の応用分野です。構文解析の工程のみでは文の肯定的/否定的を推定することはできないです。意味解析は意味を考慮して適切な構文を選択する処理であり、文脈解析は複数の文について構文解析と意味解析を行って調整する処理です。
GPT
GPT (Generative Pre-trained Transformer) とは、2018年にOpenAIによって発表された言語モデルです。GPTはベースとなるTransformerに対して、事前学習とファインチューニングを行うことによって高い性能を実現しました。 GPTは後継モデルとしてGPT-2やGPT-3といったモデルが発表されています。GPTは約1億1,700万個のパラメータを持つ大きなモデルであるが、GPT-2では約15億個、GPT-3では約1,750億個となっており、より大規模かつ高精度なモデルとなっています。OpenAIが、悪用されるリスクが高く公開することが危険であるという理由で、最大サイズのモデルの公開を延期し、段階的に公開されたことで話題となったバージョンとして正しいものは、GPT-2です。
オリジナルのGPTは2018年に論文が発表されました。2019年2月にGPT-2が発表され8月にパラメータ数が約8億個のモデルを公開し11月に最大サイズのモデルを公開しました。パラメータ数は15億個です。GPT-3は2020年5月に論文が公開されましたが、パラメータそのものは公開されず、一般の開発者・研究者はAPI経由でのみ利用できる状態です。GPT-3の独占ライセンスはマイクロソフト社が2020年9月に取得しています。これは2021年12月の情報です。
トピックモデルと潜在変数
文書や単語に潜む潜在的なカテゴリーを説明するモデルに、トピックモデルがあります。文書以外でも、たとえば通販サイトにおいて、顧客の購入履歴から商品の潜在的なカテゴリ分けを知ることができます。
トピックとは、意味のカテゴリーのことです。トピックモデルを使うことにより、文書の集まりなどの与えられたデータから潜在的なトピックを推定することができます。トピックを固定されたものではなく潜在的なものとして扱うのは、データセット毎に現れる意味のカテゴリーが変化するためです。また、対象データは文書にとどまらず、離散的な観測データを対象にしたクラスタリングとして広く利用できます。
LDA
トピックモデルの代表的なモデルにLDA(Latent Dirichlet Allocation)があります。LDAでは、1つの文書には複数の潜在トピックが存在すると仮定します。また、具体的な単語などのデータがそれぞれ生成される確率は、トピックごとに異なります。
LDAは、文書集合集合から各文書におけるトピックの混合比率を推定する手法の1つです。1つ文書に複数のトピックがあることを表現できるため、たとえば「ジャガー」という単語が車トピックでもネコ科トピックでも使用されることを表現できます。また、スポーツの記事と政治の記事から「ホームラン」という単語が同じ確率で生成されるとは考えにくいでしょう。LDAでは、各トピックから単語が生成される確率もトピックと同時に推定します。他にもLSI(Latent Semantic Indexing)などが有名です。
bag of words
日本語や英語のような自然言語も、通常のデータと同様テーブルの形にすることで、テーブルデータに対する学習アルゴリズムを適用することができます。例えば、文書の数をk、出現しうる単語の数をnとしたとき、その文書内の出現回数を値に持つk×nのテーブルを作ることができます。このように各文書をベクトルで表現する方法を、bag og wordsといいます。
Bag of Wordsの概念は非常にシンプルです。たとえば、“This is a pen.”という文1と“I have a pen.”という文2があるとき、そのBag of Wordsは下表のようになります。
しかし、一方で欠点もあることに注意が必要です。 文書の長さによる影響が反映できないことや、一般に出現しにくいが、その文書をうまく特徴付ける単語の影響が弱くなってしまうことが問題点としてあります。 たとえば、ある文書が長ければ長いほど、その文書内ではどの単語も総じて出現しやすくなる、といった影響を受けてしまいます。さらに、単語の出現頻度だけが数値となるため、その単語の意味が考慮できていないことも欠点の1つです。
T F-IDF
自然言語を特徴量のテーブルにする手法としてbag of wordsがあるが、より一般的な単語の重みを低くし、特定の文書に特有な単語を重要視する手法にTF-IDFがあります。TF-IDFは、単語の文書内での出現頻度と、その単語が存在する文書の割合の逆数の対数の積で定義されます。
TF-IDFの名前は単語の文書内での出現頻度(Term Frequency:TF)と、その単語が存在する文書の割合の逆数の対数(Inverse Document Frequency:IDF)の頭文字に由来します。 bag of wordsに比ベレアな単語に注目できるようになるものの、依然として文書の長さによる影響が残ることに注意が必要です。
word2vec
自然言語処理を行う際にはコンピュータに単語を理解させるために固定長のベクトルで表す分散表現が重要になります。単語の分散表現を獲得するにはさまざまな方法が存在するが、中でもword2vecはニューラルネットワークを用いた推論ベースの手法で非常によく使われます。また、word2vecにはCBOWとSkip -gramの2つのモデルが存在します。CBOWは、単語周辺の文脈から中心の単語を推定し、Skip -gramは逆に中心の単語からその文脈を構成する単語を推定します。
word2vecは名前の通り、単語をベクトルにする、つまり、分散表現の獲得を行うことのできる手法になります。この分散表現の獲得はさまざまな手法が存在し、以前はbag of wordsなどのカウントベースと呼ばれる、周囲の単語の頻度によって単語を表現する方法が一般的でした。 2013年にGoogle社のトマス・ミコロフの研究チームが開発したword2vecは、ニューラルネットワークを用いた推論ベースの手法として広く使われています。 このword2vecには、CBOWという単語周辺の文脈から中心の単語を推定する方法と、Skip-gramと呼ばれる中心の単語からその文脈を構成する単語を推定する方法の2つのモデルが存在します。この両者を比較すると、Skip-gramの方が、精度が良いと言われていますが、学習コストが高く計算に時間がかかります。
fastText
fastTextはword2vecの後継モデルであり、meta(旧Facebook)社が開発した自然言語処理モデルです。word2vec同様、単語をベクトル化することによって単語間の距離を計算し、コンピュータ上での言葉の処理を可能にしています。 word2vecと異なる点は、単語埋め込みを学習する際に、単語だけでなくその単語を構成する部分文字列の情報も含めることです。 単語以外に部分文字列を考慮することで、訓練データに存在しない未知の単語(OOV:Out Of Vocabulary)であっても単語埋め込みを計算することができます。また単語のベクトル化やテキストの分類を高速で行うことができます。
fastTextはmeta(旧Facebook)社の人工知能研究所が開発したword2vecの後継モデルです。単語埋め込みの学習時に部分文字列を考慮することにより、訓練データに存在しない単語の計算や活用する単語の語幹と言語を分けて学習することを可能にしました。また、fastTextは学習に要する時間が短いという特徴があります。下図に、fastTextにおける部分文字列の学習と言語幹の共有についての例を示します。「play」の活用形について4文字の部分文字列で分割しています。「played」を4文字の部分文字列で切り出すと「play」「laye」「ayed」に分割できます。同様に「playing」は「play」「layj」「ayin」「ying」のように分割でき、共に「play」を含んでいます。「playing」を学習することで部分文字列である「play」を学習できるため、「played」が訓練データになくてもベクトル化の計算ができます。
ViT
Visiion Transformer(ViT)について考えます。自然言語処理分野で使用されているTransformerを画像処理分野に適応したもので、CNNを用いない新たなモデルとして提案されています。
ViT は画像処理分野に持ち込まれた Transformer で、CNN を使わないモデルとして提案されています。入力画像を複数枚に分割しパッチを作成し、そのパッチをベクトル化して Transformer のエンコーダに入力することで画像を言語モデルのように処理します。下図は ViT の概観図です。入力画像を 9 つのパッチに分割し、ベクトル化した後、Transformer のエンコーダに入力しています。Transformer のエンコーダやエンコーダの後に多層パーセプトロン (MLP: Multilayer Perceptron) を使用しています。ViT は画像処理分野での使用を想定して提案されています。また下図が示すように Transformer の前処理に CNN は用いられていないです。
音声認識
音素・音韻の要素とAーD変換、パルス符号変調機
音声は、空気の振動が波状に伝わるものです。人の発話による音声の構成単位は、音素あるいは音韻と呼ばれています。音韻は言語によらず人間が認知可能な音の総称を指し、音韻の最小単位を音素と呼びます。たとえば、/sa/と/si/は人間が区別可能な音であるため、異なる音韻と捉えます。/sa/を最小単位に分けると/s/と/a/という音素を取り出すことができます。音声は時間と共に連続的に変化するアナログなデータであり、コンピュータで処理するためにはデジタルなデータに変換する必要があります。この変換をAーD変換といいます。音声はパルス符号変調(Pulse Code Modulation:PCM)という方法でAーD変換を行うことが可能です。PCMは標本化→量子化→符号化の3ステップを経てデジタルなデータに変換します。
ハフ変換とは画像処理分野における画像中から直線や円などの図形要素を検出する手法のことです。
音声はパルス符号変調によってA-D変換を行います。以下の図のように、音波を一定時間毎に観測する標本化(①)、音波の強さをあらかじめ決められた値に近似する量子化(②)、量子化後の値を0と1の羅列(以下、ビット列)で表現する符号化(③)の手順でデジタルに変換します。音素・音韻についても紹介します。音韻は言語によらず人間が認知可能な音の総称を指し、音韻の最小単位を音素と呼びます。たとえば、/sa/と/si/は人間が区別可能な音であるため、異なる音韻と捉えます。/sa/を最小単位に分けると/s/と/a/という音素を取り出すことができます。
高速フーリエ変換
音声信号はさまざまな周波数や振幅の三角関数を足し合わせたものと考えることができます。音声信号にどのような周波数がどれほど含まれるか示したものを周波数スペクトルと呼び、横軸を周波数、縦軸を信号の強さとするグラフで表されることが多いです。音声信号に含まれる周波数を分析することで音声の特徴を捉えることが可能となります。周波数成分を抽出する手法として高速フーリエ変換(Fast Fourier Transform:FFT)が使用されています。高速フーリエ変換は短時間ごとに周波数解析を行う必要がありますが、高速に周波数特性を求めることができます。
複数の音源の音が混在している音響信号からそれぞれの音を分離して認識することを音源分離といいます。「Deezer」が開発したオープンソースAIツール「Spleeter」では、周波数の特性を機械学習モデルへ入力し、音源分離を行っています。また、目的の周波数以外の音声を除外するフィルタリングを行うこともできます。そのため、音声信号に含まれる周波数の分析は、非常に重要となります。無限に続く連続的な信号にどのような周波数が、どれほどの強さで含まれているかを分析する際に、使用される手法がフーリエ変換です。しかし、コンピュータ上で扱う音声信号は、離散的なデジタルデータであり、この離散的な信号に適応できるフーリエ変換を離散フーリエ変換(DFT:Discrete Fourier Transform)といいます。演算量を減らして高速化した離散フーリエ変換が、高速フーリエ変換です。フーリエ変換の欠点の1つは、時間領域の情報が欠落することであり、高速フーリエ変換を含めフーリエ変換に時間情報の欠落を補完する機能はありません。また、高速フーリエ変換は、選択肢2にあるように、短い時間毎に信号を区切り、高速に周波数解析を行います。工作機械の異常音検知など、音声信号の周波数特性を機械学習モデルの入力とする事例は多くあります。
メル尺度
「音の大きさ」「音の高さ」「音色」は音の三要素(三区別)と呼ばれています。中でも「音色」は音波の質の違いによって生み出されるものです。同じ「音の大きさ」、同じ「音の高さ」であっても、「音色」の違いから異なる音声だと認識することができます。「音色」の違いはスペクトル包絡の違いから確認できます。スペクトル包絡とは周波数スペクトルにおける緩やかな変動のことであり、スペクトル包絡を求める手段の1つとしてメル周波数ケプストラム係数を用いて求める方法があります。メル周波数ケプストラム係数は「音色」に関する特徴量として多用されています。 スペクトル包絡を求めるといくつかの周波数で振幅がピーク値を取ります。このピークをフォルマントと呼び、フォルマントのある周波数をフォルマント周波数と呼びます。 メル周波数ケプストラム係数やフォルマント周波数は、音声認識の特徴量として使うことができます。
スペクトル包絡は、周波数スペクトルにおける緩やかな変動のことをいいます。人間の音の高さの知覚特性を考慮した尺度をメル尺度と呼び、このメル尺度に対応する周波数をメル周波数といいます。つまり、メル周波数は、人間の知覚特性に即した周波数スケールということです。また、メル周波数軸上で計算されるケプストラム係数をメル周波数ケプストラム係数といいます。このメル周波数ケプストラム係数は「音色」に関する特徴量として音声認識などに使用されています。下図は周波数スペクトルに対するスペクトル包絡を描いたものです。スペクトル包絡のピークを周波数が低い方から順に、第1フォルマント、第2フォルマント、第3フォルマントと呼びます。フォルマントのある周波数をフォルマント周波数といい、スペクトル包絡のピークを周波数が低い方から順に、第1フォルマント周波数、第2フォルマント周波数、第3フォルマント周波数と呼ばれます。フォルマント周波数は気道の共振周波数を意味するため、2つの音色について音響が同じであればフォルマント周波数も近い値を取ります。
ケプストラムとは、音声認識で使われる特徴量の1つです。音声信号に対してフーリエ変換を行った後、対数をとり、もう一度フーリエ変換して作成します。メル尺度とは人間の音声知覚の特徴を考慮した尺度で、メル尺度の差が同じ時、人が感じる音高の差が同じになります。メル周波数ケプストラム係数(MFCC)とは、音声認識の領域で使われることの多い特徴量の1つです。ケプストラムにメル周波数を考慮したものです。
隠れマルコフモデル
隠れマルコフモデルについて考えます。隠れマルコフモデルは、音素ごとに学習しておくことで、さまざまな単語の認識に対応できます。
HMM(Hidden Markovo Model:隠れマルコフモデル)は音素を学習しておくことでさまざまな単語音認識に対応することができます。 また、HMMはこれまで音声認識を行う音響モデルとして用いられています。 単語を認識する際には、あらかじめ用意した単語と音素列の対応辞書により音素列に変換し、入力された音素列を基にHMMを連結することでモデル化します。 HMMの欠点はモデルのパラメータを決定する処理が複雑で計算量が多いことです。
隠れマルコフモデルとは、マルコフ過程に従って内部状態が遷移し、取得できる情報から状態遷移を推定する確率モデルです。 次頁の図1は「天気」を隠された状態、各天気における「人の行動」を取得できる情報とした隠れマルコフモデルです。「天気」の矢印に記載されている数値は「天気」が遷移する確率を表しています。たとえば、「雨」から「晴れ」に天気が遷移する確率は0.1となっています。また、「人の行動」に記載されている数値は各行動が観測される確率を表しています。これらの確率を使用して「天気」の遷移をモデル化します。一般のHMMは次頁の図のように遷移の矢印が両方向を向いており、任意の状態間の遷移が可能です。しかしHMMで音声をモデル化する場合は、HMMの状態を横一列に並べたときに左右方向の遷移がない(時間が逆戻りしない)モデルが用いられます。逆方向に遷移しないHMMモデルをleft-to-right型モデルと呼びます。
下図で示す例ではHMMを用いて音声の文字起こしをしています。「I play tennis」の音声がHMMに入力されています。音素毎に学習されたHMMが連結されているHMM(図中の連結HMM)が「I play tennis」の文字列を出力しています。音声認識でHMMを用いる場合は、メル周波数ケプストラム係数などの周波数特性に関する特徴量を入力する手法が多用されています。
CTC(Connectionist temporally Classification)とは音声認識などで用いられる損失関数です。LSTMやRNNなどEnd-to-Endに音声認識を行う際に用いられることがあります、
WaveNet
音声合成について考えます。これはCNNなどで使われる畳み込み処理を行なっています。
WaveNetは2016年にDeepMind社によって開発されたモデルで、非常に自然な発音の音声を合成することができ、コンピューターによる音声合成・音声認識に対して大きな衝撃を与えた技術といわれています。PixelCNNというモデルをベースに作られたディープニューラルネットワークで、Dilated Causal Convolutionと呼ばれる、層が深くなるほど畳み込む層を離さず処理が内部で行われています。
強化学習
代表的な強化学種の発展アルゴリズム
強化学習関わりが強いものを考えます。RAINBOW、Actor -Critic、REINFORCEです。
アルゴリズムの中身は理解できなくてもOKで、アルゴリズム名と対応する気概学習手法を覚えておきましょう。
RAINBOWは、Deep Q NetworkをベースにDueling Network、Double DQN、Noisy Network、Categorical DQNなどのアルゴリズムを全部搭載したアルゴリズムです。他のアルゴリズムを大きく上回る性能を発揮しました。Actor-Criticは、行動を選択するActorと、Q関数を計算することで行動を評価するCriticを、交互に学習するアルゴリズムです。発展型のアルゴリズムにA3Cがあります。REINFORCEは、一連の行動による報酬和で方策を評価して直接方策を改善する方策勾配法系のアルゴリズムです。
自然言語処理に関する語群はTransformer、BERT、Attention、生成モデルに関する語群はDCGAN、LDA、VAE、木系アルゴリズムに関する語群はDecision tree,Random forest、Gradient Boostです。
BERTはGoogleが2018年に発表した総方向Transformerを使ったモデルで、事前学習に特徴があります。MLM(Maskεδ Language Model)はBERTにも用いられている事前学習のタスクで、文中の複数箇所の単語をマスクし、本来の単語を予測します。GSG(Gap Sentences Generation)はPEGASUSというモデルにも用いられている事前学習タスクで、複数箇所の文をマスクし、本来の文を予測します。また、マスク部分の決定はランダム以外の方法で決定します。
マルチエージェント強化学習、オフライン強化学習、残差強化学習
医療の現場において、強化学習を利用して患者の病状に合わせた最適な薬の量を求めたいです。しかしながら、データを集めるために実際に患者に投薬を繰り返すことは危険であるため、報酬をサンプリングしながら学習を進めることが難しいです。そこで過去に集積されたデータのみから強化学習ができないかと考えました。このとき、最も関わりが深い手法はオフライン強化学習です。
マルチエージェント強化学習とは、複数のエージェントが存在する環境において、他のエージェントと協調しつつ共通の目的の達成を目指す強化学習手法です。 今回の問題文のシナリオは、病状から薬の量を推定するといった単一のエージェントで実現できることに注意します。残差強化学習とは、既存の制御手法による行動と、最適な行動との差分を強化学習によって求める手法です。 残差強化学習、例えば、現実世界で物体を投げるようなシナリオにおいて、まず既に化されている物理法則から行動を計算し、それを現実世界で実行した際に生じる誤差を強化学習によって補完する、といった手法になります。 今回の問題文のシナリオは、過去のデータのみから強化学習を行う必要があることに注意します。オンライン学習とは、過去にサンプリングされたデータのみを利用して学習を行うオフライン強化学習に対して、報酬をサンプリングしながら学習を行う通常の強化学習を言います。 今回の問題文のシナリオは通常の強化学習のように報酬がサンプリングできないことに注意します。オフライン強化学習とは、エージェントを環境中で行動させつつ学習する通常の強化学習と異なり、事前に集めたデータのみから強化学習を行う手法です。 過去のデータのみから強化学習を行う際の課題として、収集されたデータに含まれている状態遷移からしか正確なフィードバックが得られないことや、データ収集に用いられた方策と学習中のモデルの持つ方策が異なるという、分布シフトと呼ばれる現象が課題となっています。このような問題により価値評価の不確実性が大きくなってしまい、誤った価値の過大評価などに繋がってしまうため、オフライン強化学習は、通常の強化学習よりも最適な方策の学習が難しいものとなっています。 しかしながら、オフライン強化学習は現実世界で実際に試行錯誤することが危険であったり、多くのコストがかかったりするような分野への強化学習の応用が期待されており、自動運転や医療領域への応用はその代表的な例となります。これらの分野では別のシステムによって経験データが蓄積されている場合があり、オフライン強化学習ではこのようなデータを有効活用して問題を改善できるのではないかと期待されています。
連続値制御、報酬設計
強化学習を利用した深層学習モデルを利用して、実際に現実の問題を解決しようとすることを考えます。このときに発生する課題について考えます。このとき次の3つ課題が例となります。まずは、シミュレータ環境で学習したモデルを現実世界で動作するロボットに搭載したが、シミュレータ環境と現実世界とのギャップにより上手く動作しなかった。次に、自動車を運転するためのハンドル操作を学習してみたが、学習によって獲得した方策が安全運転とはかけ離れたものだった、最後に、ロボットアームの制御を学習するとき、動かすアームだけでなくその移動量を出力したいため、移動量を空くしずつ変えた行動の選択肢を大量に用意する必要が出てきたなどです。
順に例を追っていきます。強化学習を行う場合は、安全面やコスト面の課題によって現実世界で試行錯誤することが困難な場合があります。このような場合は、シミュレータで学習環境を作成して学習を行うことが有効なアプローチの1つですが、一方でシミュレータ環境と現実世界のギャップが大きく動作しないことがあり、強化学習における課題の1つとなっています。
方策を学習する強化学習モデルは、基本的には人が設定した報酬を最大化するように行動を最適化します。したがって、自動運転のために目的地に短い時間でたどり着いた場合に大きな報酬を与えると、多少危険な運転をしてでも早く目的地に向かおうとする方策に収束する可能性があります。逆にほんの少しでも事故の可能性がある行動をするとマイナスの報酬が与えられるような環境では、報酬を最大化するために全く動かないという方策を獲得するかもしれません。このように最適な報酬を設定することは難しく、期待する方策を獲得するための報酬成形(reward shaping、報酬設計)は強化学習の課題の1つとなっています。
強化学習モデルには、DQNのように各状態における離散的な行動の価値をそれぞれ推定し、推定結果から最も価値の高い行動を機械的に選択する(greedy方策を利用する)タイプのモデルが多く存在します。このようなモデルは基本的に連続値へ拡張しにくいという特徴があり、強化学習における課題の1つとなっています。連続値へ拡張する手法の1つとして、方策近似法と呼ばれる手法が存在します。これは方策をパラメータで表現し、最適な方策となるようにパラメータを直接学習するといったアプローチとなっています。このようなアプローチを連続値制御(continuous control)ともいいます。
ただし、強化学習は方策や状態価値に対する直接的な正解ラベルではなく、サンプリングによって得られた報酬と選択された行動を元に、方策や状態価値の評価値の精度を改善していきます。そのためオセロのように各盤面で最善手がわからなくても、勝利条件を満たした時に報酬を与えれば、各盤面における最適な方策や状態価値の正確な評価が学習できます。
状態表現学習
強化学習においてネットワーク内部で外部世界をモデル化することができると、目的の達成において有益となる場合が多いです。このように、観測データから世界をモデル化するモデルを世界モデルと呼び、世界をモデル化するために利用できる特徴を状態表現と呼びます。状態表現学習では状態表現をエージェントの観測データから自動的に獲得することが目的となります。観測データから得られる、良い状態表現に関わる性質として、状態表現を学習したモデルは関連したタスクにおいて、転移学習に効果的です。
画像などの高次元な観測データに対して、状態表現はより低次元な特徴が良いとされます。 たとえば、カメラ画像を利用してロボットアームの制御を行うことを考えると、掴みたい物体の座標値などが状態表現になり得ると考えられますが、このとき入力画像に対して座標の情報はより低次元な方が取り扱いやすくなっています。状態表現はエージェントの行動の影響を受けて動くものであること、同じ行動でも同じような影響を受けることが直感的にイメージできます。状態表現を学習するための目的関数には、このような事前知識を取り入れたさまざまなものが提案されています。関連するタスクにおいては、同じような状態表現が効果的に利用できると考えられます。したがって、関連したタスクを事前に学習するといった、転移学習の手法が適するものとなっています。世界モデルの元となる状態表現がエージェントの行動の影響を受けるものであることで、モデル化した世界を利用して、エージェントが行動の影響を学習することができるようになると考えられます。
AlphaZeroの新規性
AlphaZeroとはAlphaGo Zeroの改造バージョンとしてDeepMind社が2017年に発表したアルゴリズムです。 DeepMind社は、AlphaGo→AlphaGo Zero→AlphaZero→AlphaStarという順番で新しいアルゴリズムを発表しているが、ここでAlphaZeroを発表したときの新規性として適切なものは、囲碁に加えて、将棋やチェスも解けるようにアルゴリズムを汎化したことです。
初めて人間のプロに勝利したバージョンはAlphaGoで、2015年にファン・フィ二段(5勝0敗)、2016年にイ・セドル九段(4勝1敗)、2017年にカ・ケツ九段(3勝0敗)に勝利しました。人間の対局データを使わない自己対戦のみの学習はAlphaZeroでも行われていますが、これはAlphaGo Zeroにおいてすでに実現されていたものです。 AlphaGo Zeroは人間のプロ棋士に勝利したAlphaGoに100戦100勝しています。AlphaZeroはAlphaGo Zeroのアルゴリズムを将棋と囲碁も解けるように発展させたものです。AlphaZeroではAlphaGo Zeroで行われていた盤面の対称性を利用する回転などのデータ拡張は利用せず、さらに将棋やチェスで発生する引き分けを考慮したアルゴリズムとなっています。Blizzard Entertainmentが開発した「StarCraft II」を学習したのはAlphaStarの新規性になります。
OpneAI Five,アルファスター
OpenAI Fiveとは、Valve Corporationが開発した「Dota 2」と呼ばれるリアルタイムストラテジーゲームを解くOpenAIが開発したアルゴリズムです。Dota 2はそれぞれ5人のプレイヤーから構成される2チームで対戦します。ゲームでは各々がヒーローと呼ばれる異なるキャラクターを操作し、味方と協力しつつ相手の本拠地を破壊することが目標となります。ここで以後・チェス・将棋よりDota 2にお置ける強いアルゴリズムを作成することが難しい要因を考えます。細かなフレームごとの行動選択が長時間続くため、1試合のエピソードが長くなります。また、ゲームに関わる情報が部分的にしか観測できないので、わからない情報は推測しつつ行動を選択する必要があります。マップ上のオブジェクトやヒーローの位置といった観測される情報の空間が大きいです。
Dota 2は30fpsで動作し、1試合に約45分かかります。OpenAI Fiveは4フレーム毎に状態を観測し行動するため、1試合で約20,000回もの行動選択を行うことになります。ここで多くの個々の行動選択はゲームにほとんど影響を与えないものの、重要な場面ではわずかな行動選択がゲームに長期的な影響を与えることもあります。このような長期的な時間軸でゲームが行われることは、囲碁や将棋と比較してDota 2のタスクが難しい要因の1つとなっています。
また、将棋や囲碁は自分の手番にゲームに関するすべての情報が盤面から得られます。このようなゲームは完全情報ゲームと呼ばれます。一方でDota 2では自分の視界などから得られる部分的なゲームの情報しか得られません。Dota 2はこのような不完全な情報に基づいて相手の戦略などを推論する必要があり、これがタスクが難しくなっている要因の1つとなります。
さらに、Dota 2では1試合の中に10体のキャラクターが存在し、各々の持つスペルやアイテム、多くの建造物やNPC、マップのあらゆる場所に生えている木など、さまざまな要素が戦略に関わります。このようなゲームにおいて人間がアクセスできる要素は、OpenAI FiveではゲームのAPIを通じて得られ、その数は約2万個になります。チェスの状態は6種の駒と8×8サイズの盤面の情報で表せるのに対し、Dota2の状態はこのように膨大でかつ不完全であり、これはタスクが難しくなっている要因の1つとなります。
注意点としてDota2は各ヒーローが数十もの行動をとることができ、その行動の多くは地上の任意の地点や他のオブジェクトなどを指定して利用します。OpenAI Fiveではこのような行動空間がヒーローごとに約17000個の離散的な要素で表されており、ある状態で選択できる行動は平均1000種類存在します。これはチェスや囲碁と比較して大きいものであり、タスクが難しくなっている要因の1つです。
生成モデル
モデル圧縮
ディープラーニングはさまざまなタスクで高精度を達成できます。多層にすることで表現力の向上は可能であるが、その反面パラメータ数が増えてしまうことによる計算速度の遅延やメモリの使用量の増加などの問題があります。そこでモデル圧縮という概念が生まれました。 モデル圧縮にはいくつかの手法が提案されています。例えば、モデルのパラメータはコンピュータでは32bitといった高精細な値を持つが、これを16bitや8bitまで落とすQuantization(量子化)という手法があります。しかし、これはパラメータの情報が圧縮した分消減するため、モデル精度が悪くなることがあります。 モデル内の影響の小さい重みを削除することでパラメータ数を削減するPruning(枝刈り)という手法もあります。これは重要なパラメータのみを使うといった精度が悪くなることを防ぐ工夫がされています。 その他にも、生徒モデルと呼ばれる小さなモデルを用意し、教師モデルと呼ばれる大きなモデルの出力を真似るように学習するDistillation(蒸留)という手法もあります。これはかなり小さい生徒モデルで運用することができ、生徒モデル単体で学習するよりも生徒モデルの精度を上げることが期待できます。
量子化とは、パラメータのbit数を減らすことです。これによりパラメータのメモリ使用量は減りますがbit数を小さくするほど精度は下がる可能性があります。たとえば、0.567836725…が0.5678となり、小数の細かい部分が落ちてしまうことで最終的な推論結果に影響を及ぼしたりします。枝刈りとは、モデル内の重要度の低いノードを間引く方法です。この重要度の低いパラメータは、たとえば、ユーザーが0に近い値を閾値として決定し、その閾値内のパラメータを削除することで計算量を減らします。これによりあまり精度を下げることなく、メモリの使用量の減少と実行速度の向上が見込めます。蒸留は、生徒モデルと呼ばれる小さなモデルを学習する際に、教師モデルと呼ばれる大きなモデルの出力を真似るように学習をしていきます。これにより生徒モデルは、より単体で学習するよりも良い精度を出すようになります。蒸留に関して以下に概要を示します。 soft targetとは大きいモデルの出力のことで、hard targetとは実際のラベルの値のことです。hard targetを使って学習することは、通常の教師あり学習と変わりません。
自動運転
自動運転のレベルと内容
自動運転のレベルについて考えます。レベル1はシステムが前後・左右のいずれかの車両制御を実施します。レベル2はシステムがステアリング操作、加減速のどちらもサポートします。レベル3は特定条件下においてシステムが全ての運転を実施しますが、緊急時は人が運転します。レベル4は特定条件下においてシステムが全ての運転を実施します。レベル5は常にシステムが全ての運転を実施します。
ディープラーニングの社会実装に向けて
ディープラーニングを始めとしたAI技術が、世の中でより良く使われるための議論や倫理、法律などに焦点を当てています。AIの技術の進歩や社会適応が進むにつれ、さまざまな問題が発生したり、議論が生まれたりします。その結果、法律が改正されたり、国やさまざまな団体が活用の原則や方針を打ち出したりというアクションがあり、ビジネスなどへ影響が及びます。 特にAIはデータを学習するため、個人情報や機密情報、著作物などの扱いが問題になるケースが多く、日本の個人情報保護法・著作権法やEUのGDPRなどで、データに関する取り決めがされており、企業単位でも透明性レポートなどで、情報に関しての透明性を上げる取り組みがなされています。 さらに、AIは何かの判断やその補助に使われることが多く、予測の信頼性や説明性などが問われるケースがあり、DARPAによるXAIプログラムやEUの「信頼できるAIのための倫理ガイドライン」、日本の「人間中心のAI社会原則」など、さまざまな議論およびその結果生まれた方針や原則が存在します。日米欧でもこういったデータに関する法律や決めごと、AIの信頼性や説明性などに関して問われるケースが多くあります。 このような法律や議論などは、技術の発展を妨げるもののように感じますが、実際に問題になっていることに対する防止や、問題が起こらないための規制・原則であるため、守ることで得られるメリットも少なくありません。 当然、ビジネス上で守る必要がある、もしくは、守るべきものであるため、AIをビジネスに適応していく場合は、法律や議論を知っておく必要がありますし、AIに関する法律や議論はまだ成熟・安定しておらず、日々更新される可能性があります。そのため、この問題集を解くことに加えて、変化するこれらの情報をキャッチアップすることが重要です。
AIと社会
ビッグデータの活用に関連した技術の基礎知識
2000年代から2010年代にかけて、Wi-Fi等の無線通信技術がインターネット通信の高速化および低価格化によって普及し、LPWAのように省電力・低価格かつ遠距離通信可能な無線技術も発達したことで、屋外に設置されたセンサやカメラのようなさまざまな電子機器への通信も容易に可能となりました。このような過程でさまざまなデバイスがシステムと繋がるIoT(Internet of Things)が普及しました。また、インターネットの普及、コンピュータの処理速度の向上や無線通信技術の進展、さらに、スマートフォン等の多様なデバイスの普及によって、ビッグデータの集積が進んでおり、医療、観光、農業といった多様な分野でのビッグデータの利活用が期待されています。ビッグデータの活用やIoT、DXなどに関連する次の説明については次の通りです。
IoTは食らうと、ネットワーク、デバイス(センサ)を基本として構成され、クラウドについては、デバイスのネットワーク接続やデータ収集・処理に関わるIoTプラットフォームと、ユーザーに対して特定の機能を提供するアプリケーションがあります。備具データとは、データの量、データの種類、データの発生頻度・更新間隔(Velocity)の3Vを基本要素として構成されます。RPAはホワイトカラー業務を自動化する技術の総称です。
DX(デジタルトランスフォーメーション)は、「デジタル技術を通して、人々の生活をより良い方向に変化させる」という概念で、2004年にスウェーデン・ウメオ大学のエリック・ストルターマン教授によって提唱されました。今日では、多くの企業でDX(IoTやAI、RPAを活用した技術)の導入が行われています。クラウド技術の発展によって、特別な技術や大規模な施設を持たずとも、IoTをはじめとしたITの各種開発を行うことができるようになりました。このことによって、新規参入のハードルが大きく下がりました。ビッグデータの大部分を占めているのは、非構造化データです。なお、非構造化とは、特定の構造を持たないデータを指し、具体的な例としては、メール、文書、画像、動画、音声などの他、Webサイトのログやバックアップ/アーカイブ等が挙げられます。RPAの各クラスの説明は次表に示す通りです。RPAを導入することで、労働時間の短縮やヒューマンエラー回避に繋がり、労働生産性の向上といったメリットがあります。RPAは仮想知的労働者(Digital Labor)とも呼ばれ、2025年までに事務的業務の1/3の仕事がRPAに置き換わるインパクトがあるともいわれています。
ブロックチェーンの特徴と活用事例
近年、従来の中央管理型のデータベースに変わる新しい技術として、分散型のブロックチェーンが注目されています。ブロックチェーン技術とは、ネットワーク上にある端末同士を直接接続し、暗号技術を用いて取引記録を分散的に処理・記録するデータベースの一種です。実際、ブロックチェーンの活用事例が金融分野を中心に複数出てきており、将来的には、民間企業や公共機関の幅広い分野において、その技術が応用されることが予想されています。
ブロックチェーンをデータベースに活用するメリットは、分散型管理を行うことで、ネットワーク障害によるシステムダウンに強いことです。ブロックチェーンでは、個々のブロックには取引記録に加えて、1つ前に生成されたブロックの内容を示すハッシュ値と呼ばれる情報などを格納します。過去に生成したブロック内の情報を改ざんしようとした場合、変更したブロックから算出されるハッシュ値も変更する必要があります。このような変更は事実行困難のため、ブロックチェーンは改ざん体制に優れたデータ構造を有しています。金融分野におけるブロックチェーンの活用例として、metaによるディエム(旧Libra)があります。従来のデジタル通貨と比べ、価格の安定性が高い仮想通貨(ステーブルコイン)を構築することが期待されていたものの、個人のプライバシーや国家安全保障、犯罪へ用いられることなどの懸念があり、2022年1月でもまだ実現には至っていません。
ブロックチェーンでは、分散管理・処理を行うことでネットワークの一部に不具合が生じてもシステムを維持することができる性質があります。このような性質を可用性といいます。従来のデータベースでは取引において必要であった仲介役が不要になることにより、取引の低コスト化が期待されます。ブロックチェーンは、データの改ざんの有無をリアルタイムで監視可能であるという性質も持っています。この性質を完全性と呼びます。金融分野以外の事例として、ソニーがブロックチェーンを活用し、楽曲の著作権管理システムを構築しています。BaaS(Blockchain as α service)という言葉があり、例えばAmazonweb Serviceなどでは、ブロックチェーンネットワークの作成と管理を簡単に行えます。
プロダクトの設計
AIを導入したプロダクトが陥る問題
AI技術を用いたプロダクトを設計するときには、経営者と開発者が、解決したい課題や対象とする領域を踏まえて、認識をすり合わせながら打ち合わせや会議を十分に行うことが重要になります。 近年よくある失敗が、「ディープラーニング」を導入することが目的化して、良いプロダクトを作れなかったということです。 これを防ぐためにどのように考えるべきかを考えます。あくまで「ディープラーニング」は手段の1つで、プロダクトの要求条件に合いそうであれば、あらかじめユースケースを明確にした上で用いると考えます。
あくまでも「ディープラーニング」は手段の1つとして考えなければ、本末転倒なプロダクトができてしまいます。実際、精度の高いディープラーニングを用いたプロダクトを構築することはできたとしても、「実際の現場でどのように使いたいか?」というように、ユーケースに焦点を当てた構想が不十分であった結果、PoC(Proof of Concept 概念実証。簡単なプロトタイプのデモンストレーション等を通して、アイデアの実現可能性を検証すること。)だけでプロジェクトが打ち切りになってしまうことも多くなっています。
機械学習の開発や運用に用いるプロセスモデル
機械学習(ML)プロダクトの開発・運用において、各プロセスの専門性が高まり分業体制が取られることが増えています。そのような中で、いくつかの問題が顕在化しています。①1つは、MLの開発(Development)サイドと、運用(Operation)サイドの知見やスキルセットが異なることが原因でPoCの障壁を乗り越えられずプロダクトが実用に至らないケースです。また、②分業体制をとっている組織では、各組織が自らの責任を果たすことを最優先しようとするあまり、プロジェクト全体を見た際には必ずしも最適化されていないことがあります。
①においてDevOpsとは、Development(開発)とOperation(運用)を組み合わせた用語です。ソフトウェアの開発を迅速に行うために、開発担当者と運用担当者の連携、協力を重視する開発手法のことを指します。これにより、機械学習モデルやAIモデルを一度作っておしまいではなく、継続的に本番運用していく仕組みや考え方を指します。
MLOpsは、システムの開発(Development)チームと、運用チームが協働してビジネス価値の向上を目指すDevOps(デブオプス)から派生した概念であり、「DevOpsのML版」と位置付けられています。MLOpsとは、MLの開発チームと運用チームが連携、協力して、モデルの開発から運用における一連のMLライフサイクルを管理する基盤、体制のことであり、その目指すところは「機械学習システムの効率的でスムーズな実運用」です。こうした一連の作業の秩父または全てを自動化できることにより、MLを実際に活用し始めるまでのタイムラグを小幅にとどめられます。
CRISP-DMはCRoss-Industry Standard Process for Data Miningの略で、同名のコンソーシアムで提案されたデータマイニングのプロセスモデルです。これを日本語に訳すと「業界の枠を超えたデータマイニングの標準プロセス」という意味になり、業界、ツール、業務分野のそれぞれに中立なデータマイニング用の方法論として注目されています。 CRISP-DMは、新たにデータマイニングを採用しようとするユーザーにノウハウを提供することを目的で、「データマイニングを正しく実践してもらい、データマイニングを正当に評価してもらうこと」を目的に開発されました。 なお、データマイニングの定義、または簡単ツールベンダーによってまちまちですが、たとえば、SAS Institute Japanのページ(https://www.sas.com/ja_jp/insights/analytics/data-mining.html)では、「未知の結果を予測するために、大量のデータセットに含まれている異常値、パターン、相関を発見するプロセスのこと」としています。 対象とするビジネスおよび使用データを理解した上で、データ準備、モデリング、評価、展開を行います。ただし、必要に応じて前のステップに戻ったり、最後の「展開」をした後に最初の「ビジネスの理解」に戻ったりするのがCRISP-DMの考え方です。
②に対して、プロジェクト全体での全体最適が模索されているような状況を根底から改革しようとするアプローチがBPR(Business Process Re-engineering)です。具体的には、全社が共通に目指すことのできる目標(中長期的な事業戦略や顧客のニーズが使用されることが多い)設定、トップダウンによるプロジェクト組成、既存の枠組みにとらわれないゼロベースの思考、ITの積極的活用、担当者への権限委譲などにより、目標に向かった全体最適を追求していくのが特徴です。
クラウドとWebAPI
クラウドとは、クラウドコンピューティング(Cloud Computing)を略した呼び方で、データやアプリケーション等のコンピュータ資源をネットワーク経由で利用する仕組みのことをです(ネットワークに繋がったPCやスマートフォン、携帯電話などにサービスを提供しているコンピュータ環境がクラウドです)。企業がクラウドサービスを利用する効果としては、①システム構築の迅速・拡張の容易さ、②初期費用・運用費用の削減、③可用性の向上、④利便性の向上が挙げられます。APIとは、アプリケーションやソフトウェアの構築、統合に使われるツール、定義、プロトコルのことデス。APIを使用することで、他の製品やサービスの実装方法を知らなくても、利用中の製品やサービスをそれらと通信させることができます。Webサービスがアプリ開発者向けに公開している機能をWebAPIといいます。Webサービスの機能を利用する場合、ユーザーは、公開された(A)のURLに対してHTTPでリクエストを送り、そのレスポンスを受け取る形でサービスを利用することになります。たとえば、Google MapsのWebAPIを利用することで、任意のWebページ上に最新のマップを表示することなどが可能となります。 なお、HTTP/HTTPSプロトコルによる通信を基本としたWebAPIの実装例としてはREST/RESTful APIが有名です。一般に、REST/RESTful APIは高速で軽量になり、スケーラビリティが向上するので、IoT(モノのインターネット)やモバイルアプリ開発に最適とされています。
APIはApplication Program Interfaceの略です。一方でSDKは、Software Development Kit(ソフトウェア開発キット)の略です。対象のプラットフォーム、システム、またはプログラミング言語向けのアプリケーションを作成するために必要な構成要素(開発ツール)が含まれています。基本的なSDKにはコンパイラやデバッガ、API、そして多くの場合、サンプルコードも含まれています。サンプルコードは、基本的なプログラムの構築方法を学ぶのに役立つだけでなく、プログラムとライブラリを開発者に提供します。開発者はそれを使って複雑なアプリケーションを容易に最適化あるいは開発したり、必要に応じてデバッグや新機能の追加を行ったりすることができます。
Android SDKと.NET Framework SDKはそれぞれ、Google社とMicrosoft社が提供しているSDKです。また、Web APIの代表例として、REST/RESTful APIとSOAP APIなどが挙げられます。SOAPとはSimple Object Access Protocolの略で、HTTP/HTTPS以外にもSMTPやTCPのような任意の通信プロトコルを使用することができます。SOAP APIは、元々はプログラミング言語やプラットフォームが異なるアプリケーション間でも通信できるようにするために設計されました。一方のREST/RESTful APIは、HTTP(ハイパーテキスト転送)プロトコルを用いた通信を採用しており、Representational State Transfer(REST)という設計原則(ガイドライン)に基づいて設計されたWeb APIです。REST/RESTful APIについては、一般にはSOAP APIよりも軽量であるという特徴があり、IoT等の最新技術と相性が良いと言われています。実際、Google Maps APIをはじめとした多くのパブリックAPIは、RESTガイドラインに準拠しています。
データの収集
サンプリングバイアス
AIプロダクト開発におけるモデルの作成時には、収集したデータが必要になります。データを収集する際において、「データに不適切な偏りがないか」という点には、入念に気を付けなければなりません。 以下に、データ収集の際にさまざまな要因による不適切な偏りがあったために問題となった例を載せます。問題となった理由が「データの不適切な偏り」でないものは、Apple社がAIアシスタントSiriを開発しましたが、録音した顧客の音声を外部の契約者に聞かせて問題となったことです。
データ取得時あるいはクレンジング工程において、手元のデータに偏りが生じた結果、サンプリング元のデータセットを解析した際には見られないような特徴があるように見えてしまうことを、サンプリングバイアスと言います。サンプリングバイアスと似た用語に、データバイアスというものがあります。これは、サンプリングする大元のデータセット自体に、バイアス(たとえば、人種差別等)がある場合を指します。他方、大元のデータセットには特別なバイアスがなくとも、サンプリングの工程で偶然「この人種は再犯率が高い」かのようなデータセットを意図せずに作成してしまい、それをAIに学習させた結果、偏った推論結果を出力してしまうようなケースは、サンプリングバイアスに該当します。
人種差別的な偏りとは、データセットに人種による偏りが存在し、それをそのままプロダクトに反映させてしまったものです。 性差別的な偏りでの注意点は、過去の人事評価が性別により大きく影響していたとしても、それをプロダクトに反映させてはいけません。 情報バイアスとは、データ自体が採取できるかどうかに別の要因が絡んでくることから、適切なデータとはいえません。例えば再販確率を計算するAIを開発しましたが、実際に検挙されデータに反映されている犯罪が全体の半分程度という事例です。 プライバシーの問題の場合は、データの不適切な偏りとは関係ありません。
データが不適切なために起こる問題は他にもあります。Microsoft社は2016年に、19歳の女性の話し方を模倣するように設計されたチャットボット「Tay」をさまざまなソーシャルネットワークサービス(SNS)に向けてリリースしました。しかし、リリースから数時間後に「Tay」は公開停止されてしまいます。理由は、不適切な発言が多かったためです。SNS上にて不適切な発言を多く投げかけられた「Tay」は、それらの発言を学習してしまい、自らもといった発言をしてしまうようになってしまいました。 このようにデータを収集する際には、倫理的に問題のある偏りが生じないように、できるだけまんべんなくデータを採取する、もしくは元のデータを工夫して不適切な偏りをなくす必要があります。また、問題になることが予測できない場合でも、あくまでAIの判断は人間の補助として扱い、最終的な判断は一個人にさせる形にするのも1つの手です。これにより責任の所在が明らかになるためです。
オープンデータセット
2000年代初頭から続く世界的なオープンデータ政策への取り組みの中で、民間事業者と公共事業者の両方で、さまざまなオープンデータセットが整備されてきました。日本では、2012年の「電子行政オープンデータ戦略」(IT戦略本部決定)を機に政府の取り組みが本格化しました。なお、政府がオープンデータ政策に関わる目的として、「電子行政オープンデータ戦略」では、①政府の透明性・信頼性の向上、②国民参加・官民協働推進、③経済活性化・行政効率化等の3つを挙げています。
日本政府は、二次利用が可能な公共データの案内・横断的検索を目的としたオープンデータのカタログサイトとしてDATA.GO.JPを公開しています。また、政府のみならず、生活に密着した情報を持つ地方公共団体、あるいは民間団体によるオープンデータ活用等の動きも活発です。オープンデータ化の対象としては、統計情報や地理空間、気象や交通等、数値・文書・画像等があらゆるものです。一方で、機密情報や個人情報等は公開の情報は対象ではありません。民間企業や大学等が提供するオープンデータセットの例として、たとえば画像分野ではMNISTやCIFAR-100、Google Open Images V6、ImageNet等があります。他にも自然言語ではDBPedia、音声分野ではGoogle社の公開するAudioSet等があります。
公共データについて、オープンデータを前提として情報システムや業務プロセス全体の企画・整備および運用を行う「オープンデータ・バイ・デザイン」の考えに基づいて、国や地方公共団体、事業者が公共データの公開および活用に取り組んでいます。各府省庁が保有するデータは原則公開されており、CSVやXML形式でデータ入手可能となっています。公開することが適当ではないデータについては、原則として公開できない理由を開示すると共に、限定的な関係者間での共有を行う「限定公開」という方法も存在します。オープンデータセットに関する説明を、次の表に整理します。ここで挙げたものがすべてではなく、他にも多くのオープンデータセットが整備されています。
アイデアソンやハッカソンに対して、「現実社会の課題解決に繋がっていない」等の批判があります。生まれたアイデアや試作品を実用できる行政サービスやビジネスに磨き上げることが現状の課題であり、ハッカソンで生み出されたアプリケーションやサービスの有効性を検討したり、使い勝手の改善をしたり、普及のための方策を考えること等が重要です。
オープンイノベーションの考え方に基づく外部機関との連携や蓮馨寺の契約問題
IT技術の急速な発展・普及と、製品の高度化・複雑化や競争の激化によって、1990年代以降、自社内の経営資源や研究開発に依存する「自前主義」が限界に達しました。そのような中で、2003年、当時のハーバード大学教授・ヘンリー・チェスブロウによって「オープンイノベーション」が提唱されました。 オープンイノベーションとは、「組織内部のイノベーションを促進するために、意図的かつ積極的に内部と外部の技術やアイデアなどの資源の流出入を活用し、その結果組織内で創出したイノベーションを組織外に展開する市場機会を増やすこと」と定義されています。
オープンイノベーションのメリットは、事業推進スピードの向上やコストやリスクの低下が挙げられます。一方で、デメリットとしては社内技術や知識が外部に流出する可能性があることが挙げられます。知識集約型の産業構造の転換や、さまざまな変化に対応する多様性や柔軟性が求められ、中産学官連携の拡大によるオープンイノベーションを加速する必要があります。ビジネスにおける契約の方法として、「基本契約」と「個別契約」があります。後者が発注書等を交わして個々の取引について合意するのに対して、前者は個々の取引に共通する基本事項を定めておくことで、取引の契約書の作成等、契約にかかるコストを低減させることができます。
オープンイノベーションに伴う自社技術・知見の流出の可能性について、もちろん知的財産の適切な管理は重要ではありますが、それ以外にも、革新的な部分はブラックボックス化して秘匿しつつ、その他の部分については他社に知的財産を使用させることで利益を得る「オープン&クローズ戦略」や、逆に他者の知的財産を購入し、自社のビジネスモデルを発展させる柔軟な方法もあります。
産学連携のみならず、産学官連携による研究開発も積極的に行われています。ちなみに、2025年までに企業から大学、国立研究開発法人への投資額を3倍にすることを定量的な目標とし、目標達成に向け具体的な取り組みをまとめた「産学官連携による共同研究強化のためのガイドライン」が文部科学省より発行されています。
日本初イノベーションを実現する手段の1つとして、オープンイノベーションへの期待が高まっていますが、未だ十分な成果が得られていません。原因の1つに、大企業等の事業会社による中小ベンチャー企業に対する知的搾取の問題が指摘されています。このような問題を放置すれば、イノベーションシーズの出し手たるベンチャーや大学の研究開発の意欲を低下させ、また資金が還流しないことで研究開発の継続が困難となり、日本から新たなイノベーションが消失することになりかねません。事業会社によるイノベーション搾取の構造を作り出す主要因は、技術取引契約(秘密保持契約、共同研究、ライセンス契約)です。さらにその背景として、ベンチャー等の知財法務の知識不足、また事業会社のベンチャー等への無理解であることは従来から指摘されています。また、余談ですが、近年では契約の複雑化・高度化が進んでおり、契約で定めておくべき事項に関して契約の「型」を示す「AI・データの利用に関する契約ガイドライン」が経済産業省から発行されています。本ガイドラインは契約の自由を制約するものではありませんが、たとえば「対価・支払い条件において『甲は、提供データの利用許諾に対する対価として、乙に対し、別紙の1単位あたり月額○円を支払うものとする。』といったように、契約書作成を補助する内容になっています。
基本契約と個別契約を組み合わせることで、特に中長期継続する取引における契約コストを低く抑えることができます。たとえば、メールにて契約を締結するといったように工夫することで、より簡潔に個別契約を結ぶことができます。なお、個別契約には商品明細・価格・納入条件・代金支払い条件(基本契約でも含意される)を含意します。
データの加工・分析・学習
AIプロダクトにおけるプライバシーの配慮
実務においてAIプロダクトを運用していく際に、用いるデータが個人のプライバシーを脅かすようなデータであることがあります。特に、AIプロダクトは、データが必要なことが多いため、データがあればあるほどいいと考えてしまい、プライバシーに関する点がおろそかになってしまう可能性もあります。 たとえば、小売店にカメラを複数設置することにより、顧客の導線のパターンを見つけ、適切な商品配置をするプロダクトがあるとします。しかし、来店者の受け取り方によってはそれが「不快感」や「監視されている」と感じてしまうことにつながることもある。そのため、プライバシーに配慮した工夫が必要です。 プライバシーに配慮したプロダクト設計に関することで、誤っているものを考えます。肖像権・プライバシー権・個人情報保護法などの法令上に触れているのみ確認すれば問題にはならなくはないです。
実務においては、「法令上のみ」確認していても、顧客の反対から失敗する可能性もあります。事実、2013年に独立行政法人情報通信研究機構(NICT)は、大阪ステーションシティに90台のカメラを設置し、実証実験を行う予定でしたが、プライバシーの観点から懸念があり、一度延期になっています。このとき、「法令上は、全く問題ありませんでしたが、「説明責任」という点で不明確であったため、中止になりました。そのため、「法令上」だけでなく、他のガイドラインを参考にし、プロダクトの設計を考える必要があります。
顧客の顔の画像をカメラで撮ったままの状態ではなく、必ず加工し特徴量として変換した形で扱い、加工したら画像は破棄するように設計することは、総務省・経済産業省から発行されている、「カメラ画像利活用ガイドブック」において、データとして取得したカメラ画像の扱い方の方針として記載されています。そもそもそういったプロダクトを受けるかどうかを顧客に選択させるという工夫もあります。たとえば、空港で身体検査を画像認識において自動化しようとする場合、プライベートなデータが残ってしまうかと懸念する場合には、通常の人間によるチェックを選択できるようにすることで、プライバシーでの懸念が出ないように工夫することもできます。
他には、AIプロダクト品質保証コンソーシアムが公表している、「AIプロダクト品質保証ガイドライン」を参考にしてプロダクト作成を進める。ことや、EU一般データ保護規則(通称GDPR)はヨーロッパでのプライバシー保護規則ですが、日本の企業がヨーロッパにサービスを提供している場合、この規則の対象になるため、このGDPRもチェックしなければならない。などがあります。
アノテーション
生データに対して、生データとは別のデータ(以下、「付加データ」)を付加する場合(このような付加データの付加行為を「アノテーション」ということもあす)。そのような付加データには、生データと同様に、生成される学習済みモデルの内容・品質に大きな影響を及ぼす一方、生データから独立した形式ではその用をなさないという性質がある。(中略)教師あり学習の手法を用いる場合についていえば、前処理が行われた生データにラベル情報(正解データ)を合わせたものが学習用データセットに相当する。(経済産業省「AI・データの利用に関する契約ガイドライン」より引用)
アノテーションとは、機械学習の学習用データセットを作成するために、生データに対して新たなデータを付与することを指します。 具体的には、犬の画像に対して「犬」のように、生データに対してメタデータをタグ付けする行為です。画像データの他にも、テキストデータ(文章から読み取れる感情など)や音声データ(音声データを書き起こしなど)といったように、あらゆるデータに対し、解きたいタスクに適した形でのアノテーションが行われます。近年、自己動アノテーション技術が開発されています。アノテーションには多大な労力、時間がかかり、AI開発のボトルネックになることも多かったです。 そのため、アノテーションの自動化によって、関連AI技術が加速度的に発展することが期待されます。アノテーションを行う場合、(ユーザーから)第三者に委託されることがあります。一般に、ユーザーが特にベンダーの開発に期待して契約関係に入った場合、ベンダーに委任されたアノテーション業務をさらに第三者へ再委任するためには、ユーザーの承諾が契約上必要とされます。
セキュリティや緊急のホットラインのアプリケーションなどに対してアノテーションを行う場合には、攻撃的な口調であったり、ガラスの割れるような音声に対してアノテーションを行うことも考えられます。テキストデータに関しては、文章から人間の感情をアノテーションするセンチメントアノテーションや、商品のタイトルや検索クエリ内のさまざまなコンポーネントにタグを付与することで(セマンティックアノテーション)、商品の改善や顧客が探している商品を見つけるというタスクを実現します。
Zhang et al. (2021) では、ミカン果樹園やトマト温室の写真から高精度に果実を検出するAIを構築しました。Zhangらが開発したような物体検出AIは、スマート農業技術の中核であり、彼らの取り組みをはじめとしたアノテーションの自動化によって、関連分野のAI開発が加速度的に発展することが期待されています。
フィルターバブル
商品のレコメンドシステムや検索エンジンにおいて、自分が見たいものや欲しい情報のみに包まれてしまうということが、近年問題視されています。レコメンドシステムや検索エンジンはユーザーが求めているものを出力することを目標にしてプロダクトを作っているため、自らの興味がないものが視界から消え去ってしまうのは当然ですが、それが普段の身の回りを覆いつくすようになってしまうほどになると、副次的な問題に発展してしまいます。 たとえば、政治的な問題や傾向については、さまざまな目線を持つことは重要であるが、レコメンドエンジンより自分の欲しい情報に囲まれてしまうと、主張に偏りすぎてしまうという問題が発生します。 このような現象を、インターネット活動家であるイーライ・パリサーが2011年に出版した著書名から、フィルターバブルと言います。
Pythonに関連する開発環境
Pythonは、1990年代初頭から公開されているプログラミング言語であり、高い可読性と実用性のバランスの良さから人気を有しており、2010年代からの機械学習ブームでも、優れた科学技術計算ツールとして広く用いられています。Pythonに関わる開発環境について考えます。
Jupyter Notebookとその柔軟なインターフェースは、コードだけでなく、可視化、マルチメディア、コラボレーションなど、ノートブックをさまざまな用途に拡張する。コードを実行するだけでなく、コードとその出力をMarkdownとともにノートブックと呼ばれる編集可能なドキュメントに保存できるなどの特徴があります。JupyterLabは、ノートブック、コード、データのためのウェブベースの対話型開発環境で、従来のJupyter Notebookの構成要素(ノートブックやターミナル、テキストエディタ、ファイルブラウザなど)を、柔軟かつ強力なユーザーインターフェースを通して利用することができます。Dockerとは開発者やシステム管理者が、コンテナでアプリケーションを構築(build)、実行(run)、共有(share)するためのプラットフォームです。コンテナでは、ホストと他のコンテナから隔離(isolate)し続けるために、複数のカプセル化する機能を追加したプロセスが走っています。コンテナ隔離(isolation)の重要な特長は、各コンテナが自分自身のプライベートファイルシステムとやりとりできる点です。すなわち、このファイルシステムはコンテナイメージ(Dockerの場合Dockerイメージ)によって提供されます。
JupyterLabやJupyter Notebookは、Project Jupyter(インタラクティブで再現性のあるコンピューティングのためのオープンソースプロジェクト)によって開発されています。これらのツールを使用することで、コード、可視化、マルチメディア、およびコラボレーションを1つのノートブックで行うことができます。ソフトウェア、オープンスタンダード、サービスを開発するための非営利団体によって開発されています。
「ハイパーバイザーというソフトウェアによって、固有のCPU、メモリ、ネットワークインターフェース、ストレージなどの物理リソースを仮想環境から分離する。これによって、たとえば、「MacOSノートパソコン上でLinuxディストリビューションを実行する」というように、複数の異なるオペレーティングシステム(OS)を1台のコンピュータ上で同時に実行できます。」は仮想マシンに対するものです。コンテナによる仮想化技術は、OS上に仮想的に複数のコンテナ(分離、独立した領域)を設け、その中で、アプリケーションを実行、動作させる仕組みです。次の図は、コンテナによる仮想化とサーバ仮想化の概念図です。サーバ仮想化(仮想マシン)では、サーバOSがサーバ資源を利用する際に無駄が多くなるのに対して、コンテナでは、サーバ資源は1つのOSが利用するのでCPUやメモリなどの負荷が小さく、リソースの無駄が少ないといったメリットがあります。 なお、コンテナ化の人気が高まるのは、コンテナが次のような特徴を持っているためです。 ①柔軟:複雑なアプリケーションでもコンテナ化できる。 ②軽量:システムリソースに関しては、仮想マシンよりも効率的に扱うことができる。 ③可搬性:ローカルに構築し、クラウドにデプロイすることで、どこでも実行できる。 ④簡潔合:コンテナは、自分で完結し、カプセル化している。そのため、他の何かの中断をしなくても、置き換えやアップグレードが可能。 ⑤拡張性:データセンタ内の至るところで、複製したコンテナの追加と自動分散が可能。 ⑥安全性:利用者による設定がなくても、コンテナは積極的な制限と分離(isolate)をプロセスに適用する。
コンテナ技術は、コンテナを実行する「コンテナ管理ソフトウェア」、コンテナの元データとなる「コンテナイメージ」、コンテナイメージから作成され、実行されるアプリケーションである「コンテナ」の3つです。(コンテナ)イメージは、コンテナに格納されるアプリケーションやアプリケーションの実行に必要な設定ファイル、実行環境、ミドルウェア、ライブラリなどをひとまとめにした、ファイル、設定情報のかたまりのことです。
ライブラリやフレームワーク
ライブラリやフレームワークの両者に共通する目的は、他の誰かが書いたコードや関数を、さまざまなプロジェクトで再利用できるようにし、問題をより簡単に解決することです。機械学習分野でよく用いられるライブラリ、フレームワークに関して考えます。
NumPyは、配列に対する高速演算のためのルーチンを提供するPythonのライブラリです。Pythonの標準的な配列とは異なり、NumPy配列という配列を採用している。NumPyを用いることで大量のデータに対する高度な数学的操作等を容易に行うことができます。Pandasは、SQLテーブルやExcelスプレッドシートのような、2次元の表形式データ(DataFrame)や、時系列データ等の1次元データ(Series)を取り扱うライブラリです。欠損値の扱いが容易であることや、PythonやNumPyによって崩れたデータを簡単にDataFrameオブジェクトに変換できること等が特徴です。PyTorchは、Facebook(meta)社のAIグループによって開発され、2017年にGithubのオープンソースとして公開されたTorchベースの深層学習フレームワークです。PyTorchはシンプルで使いやすいことで有名で、柔軟性、メモリの効率的な使用、動的な計算グラフなどについても高い評価を得ています。
ディープラーニングのフレームワークは、大きく分けて2つに分けられます。1つは、静的計算グラフを用いたアプローチ(直訳すると、計算グラフを定義し、そして、データを流す、となる)であるDefine and Run。もう1つは、動的計算グラフによるアプローチ(データを流すことで、計算グラフが定義される)Define by Runです。Define by Runのアプローチは、2015年にChainerによってはじめて提唱され、それ以降、多くのフレームワークに採用されています。通常のNumPyを使うときと同じ作法で数値計算を行うことができる点や、計算グラフを「コンパイル」して、独自のデータ構造へと変換する必要がないという点がメリットです。当初のTensorFlowでは、Define and Runを採用していましたが、のちにDefine by Runスタイルも取り入れ、TensorFlow ver. 2.0以降ではデフォルトになっています。
FAT
AIが学習するデータが偏っていたり、ノイズがある場合、AIがいつも信頼できる結果を出力するととは限りません。AIを安全かつ安心に社会実装するためには、AI製品やサービスの信頼性を担保することが欠かせません。 昨今、世界中でAI倫理に関する議論が進展しています。AIがブラックボックスであるが故に、採用活動等のような意志決定の現場へのAI活用が難しい等の問題が起こっており、AIの公平性や透明性・信頼性の向上が急務です。こういった問題への対処として、日本では7つの原則からなる「人間中心のAI社会原則」が定められています。その中には、AI利用による公平性や、透明性のある意志決定、説明責任の確保といった内容が「FATの原則」という項目として設定されています。
FATとは、Fairness(公平性)、Accountability(説明責任)、Transparency(透明性)の頭文字を取ったものです。XAIは、Explainable AI(説明可能なAI)、ELSIは、Ethical, Legal and Social Issuesの頭文字、RRIは、Robot Revolution & Industrial IoT Initiativeの頭文字です。
ELSIとは、社会、人間への影響や、倫理的、法的、社会的課題のことを指します。機械の自律性(判断、推論の信頼性の保証)などが例として挙げられます。たとえば、人間の関与なしに自律的に攻撃目標を設定することができ、致死性を有するLAWS(Lethal Autonomous Weapons Systems:自律型致死兵器システム)は、AIの軍事利用の観点で一番の懸念の一つと見られています。これについては、特定通常兵器使用禁止制限条約(CCW)の枠組みに基づき、CCW締結国の中で2014年から会合が持たれ、2019年11月には11項目から成る「LAWSに関する指針」が示されました。引き続き、LAWSの定義(特長)、人間の関与のあり方、国際人道法との関係、既存の兵器との関係等、規制のあり方が主論点とされており、規制に対する推進派、穏健派、反対派に各国の立場が分かれています。 ELSIの他の例としては、フェイクニュースやフェイク動画による被害等が挙げられます。また、ELSIの文脈からは少し外れますが、AIの悪用という文脈で、AIがわざと間違った結果を出力するように意図的に入力データを作成する、敵対的サンプルを用いた攻撃なども注目されています。意図的に自動運転車に道認識を認識させる研究などもあり、生命に影響を与えるような攻撃に対する頑健性は、AIを実用化する上でとても重要です。RRIとは、2015年に日本経済再生本部で決定した「ロボット新戦略」に基づいて決定された民間主導のプラトフォームです。「ロボット新戦略」では、日本が世界のロボットイノベーション拠点になることなどを目標とした活動を行なっています。
プロダクトの実装・運用・評価
AIプロダクトを運用する際のリスク管理
AIによる予測も精度も完全ではないので、リスクを避けられるようにモデルをチューニングする必要ができます。たとえば2015年にGoogle社の写真アプリGoogleフォトがアフリカ系の女性にゴリラとタグ付けしてしまった事件がありました。そのほかにも不適切なことがありました。こういった事態を避けるのに適切な方法の1つは混同行列などを用いて「何を何と間違えることがあるのか」、またその確率を確認することです。そうすればアフリカ系の人種はゴリラと間違えやすいなどを事前に発見でき、そのリスクを最大限に活かしたモデルにチューニングできます。もちろんその他の方法(例えばデータセットからゴリラを削除するなど。Google社はこの対応を取ったとされています)も複数ありますが、何も対策を講じない等のはリスクが高いです。事前に対策をしていたということが大事です。ただし、タグやカテゴリの数が数千数万になると、リスクを回避するためのコストもある程度かかってしまうため、回避する手段は工夫しなければなりません。または、そういった工夫を自薦にしたことを、報告書として世に出せる状態にしておくことで、不測の事態にも備えられるようにするのは1つの手です。これは透明性レポートと呼ばれます。
混同行列であれば、何をどのように間違えたのかがすぐにわかります。ただし、ラベルが100あればマス目はその二乗の1万あることになるので、すべてのパターンを確認するのは骨が折れます。そのため、実際のプロジェクトでは、かかるコストも考えて対策を講じる必要があります。
AI社会における企業の在り方
人間とAIが共存する社会では、多様性や持続性を守ることが重要です。これは「人間中心のAI社会原則」(内閣府、以下「AI原則」と呼ぶ)の基本理念にもなっています。 一方で、我が国におけるAI原則には法的拘束力がないことから、特に経済活動の大部分を担う企業において、経営上のコストにもなり得るAI原則実施への取り組みが必要です。
企業においてAI原則の実効性が確保されるように、「コーポレートガバナンス」の一環として位置付ける必要があります。IoTやRPA、AIといった最新技術等が活用されていく中でリスクは複雑化しています。そのような状況下で投資機関や消費者等各ステークホルダーにとって「良い企業」であるために経営者は、社員が守るべきルールである「内部統制」を必要に応じて更新していく必要があります。AIを開発・活用する企業として、顧客との信頼性の構築のためには、透明性を担保することが重要です。取り組みの例として、AIを利用しているという事実やデータの取得/使用方法、AIの動作結果の適切性を担保する仕組みの実施状況の公開等が挙げられます。AI技術の発展と、倫理的問題を含めた社会課題の解決を共同で行っていくためのAI研究団体に「Partnership on AI」という組織があります。組織の指針となる原則には、個人のプライバシー保護への取り組みや、AI研究全体の社会的責任の維持、AI研究とテクノロジーの健全性や安全性の確保などが挙げられています。
日本のみならず世界各国でAI原則の策定が進む中で、今後AI開発や利活用に関係する事業者によるAI原則の実施が重要な課題となるとされています。新たなテクノロジーが次々と出てくる中で、企業内において内部統制の更新が追いつかなくなった場合、ガバナンスの脆弱性や陳腐化したルールや手続きが残ってしまい、業務効率が悪くなったりする可能性があります。ブラックボックスとも呼ばれるAIの透明性は、社会的にも大きな論点になっているので覚えておきましょう。実際、「AI開発ガイドライン(総務省)のAI開発原則の中に、「透明性の原則(開発者はAIシステムの出力の検証可能性および判断結果の説明可能性に留意する)」が含まれています。Partnership on AIは、2016年にGAFAM、IBM社、DeepMind社が主要メンバーとなって設立した団体で、2022年1月末に15ヶ国95団体が所属しています。パートナーとしては産業、アカデミア、メディア、非営利団体がおり、非常に多様性に富んでいます。日本の営利企業ではSONYが加入しています。
炎上というリスクに対するリスクマネジメントの取り方
近年、誤投稿等が原因となって個人や組織が批判され、収束を図れない状態になる「炎上」が起こりやすくなっています。背景としては、たとえば、SNSの普及によって、誤投稿等が容易に拡散されるようになったこと等が挙げられます。 「炎上」が起きることは、企業にとって大きなレピュテーションリスクとなることから、ネット上の書き込みをモニタリングしておくなど、リスクマネジメントをすることが必要となります。炎上への対策は経営課題として重要となっています。
炎上対策として、炎上した場合を想定した訓練が有効です。具体例としては、「シリアスゲーム」というものがあります。これは、ゲーム感覚で炎上を体験し、炎上してしまった際のすさまじさをあらかじめ体験しておき、有事の際の対応を学ぶものです。AIシステムを開発する側の視点としては、「DEI」を意識することが炎上対策に繋がります。DEIとは、Diversity(多様性)、Equality(平等性)、Inclusion(包摂性)の頭文字をとったものです。 AIシステムを利用する個人や法人においては、AIの挙動を管理するツールの利用や危機管理体制の構築、見直しを行うことが炎上対策の一環となります。
シリアスゲームとは、もともと企業の炎上対策だけではなく、教育や医療にわたる広い分野の社会問題の解決を主目的とするコンピューターゲームのジャンルです。単なるシミュレーションとの違いは、ゲーム(一人または複数のプレイヤーによる)をベースとして作られている点です。シリアスゲームには、チャレンジする要素があり、インタラクティブで対話がある、ゲームをクリアする過程で社会課題を考えさせられる等の要素があります。炎上が発生したあとに行う危機管理対応は、クライシスコミュニケーションといいます。なお、リスクコミュニケーションとは、リスクに対して事前の説明や、理解を得るための行うコミュニケーションを指します。具体的には、情報公開を定期的に行ったり、自社の事業が影響を及ぼすと思われる範囲の人々の意見に対して、聞く姿勢を見せること等が挙げられます。DEIの考え方は、Amazon等世界的な企業でも採用されています。DEIの原則を守らないAIは、恩恵を受けられる人と受けられない人を生みます。こういった格差の積み重ねは、結果的にAI技術の更なる発展を妨げることにも繋がる可能性があります。また、他にも透明性レポートを公開することも重要です。近年では、AIの予期せぬ挙動(たとえば、AIによるSNS上での不適切な投稿)が炎上に繋がる事例も起こっています。AIの監査ツールを導入すること等はそういったリスクの低減に貢献します。
AIと法律・制度
知的財産権の法的問題
AIと法制度に関る課題の1つとして、学習データや学習済みモデルの知的財産権保護と流通容易性が矛盾するという点があります。たとえば、不正な漏洩を防ぐには学習済みモデルに知的財産権を認める必要があるが、知的財産権が認められると権利処理の手間の煩雑さのため既存モデルの流通が困難となります。そこで、平成30年に不正競争防止法が改正され、知的財産権が認められていないデータの保護に関しても、一定の対策が可能となりました。
データ(データベースでなくデータそのもの)の保護については、不正競争防止法では、一定の要件を満たせば保護の対象となりますが、特許権や著作権の保護の対象ではありません。
GDPR
EU一般データ保護規則GDPRは、EUを含む欧州経済領域内にいる個人の個人データを保護するためのEUにおける統一的ルールであり、域内で取得した「氏名」や「クレジットカード番号」などの個人データを域外に移転することを原則禁止しています。EU域内でビジネスを行い、EU域内にいる個人の個人データを取得する日本企業に対しても、幅広く適用されます。
企業のグローバル化に伴い、データ取得の適法性についても、グローバルな視点で検討する必要性が高まっています。中でも、EU一般データ保護規則(GDPR)は、規制範囲が広く、罰則も重いため、AI開発におけるデータ取得時には特に留意する必要があります。EU一般データ保護規則(GDPR)は、EUを含む欧州経済領域内にいる個人の個人データを保護するためのEUにおける統一的ルールであり、域内で取得した「氏名」や「クレジットカード番号」などの個人データを域外に移転することを原則禁止しています。EU域内でビジネスを行い、EU域内にいる個人の個人データを取得する(日本企業)に対しても、幅広く適用されます。
GDPR(General Data Protection Regulation:一般データ保護規則)の適用は、EU域内にいる個人の個人データを取得するなら、上場企業かIT企業かに関係なく、日本企業も対象になります。ESGとは、Environment(環境)、Social(社会)、Governance(企業統治)の3つの言葉の頭文字を取ったもの、IEEEとは、米国に本部を持つ電気・電子技術に関する学会のことです。 また、EUのGDPR以外にも、世界各国で個人情報保護に関する法律が整備されてきています。
個人情報保護法
金融分野における個人情報取扱事業者がデータを取得する場合の機微情報には、人種、信条、病歴、犯罪の経歴などの個人情報保護法に定める「要配慮個人情報」にとどまらず、労働組合への加盟や保健医療などのデータも含まれます。機微情報は、取得・利用または第三者提供のすべてが原則禁止とされ、個人情報保護法の「要配慮個人情報」よりも厳しい取扱いが要求されています。
AI開発の場合も含め、個人に関するデータの取得・利用等の際には、プライバシーに対する注意が必要です。そこで、プライバシー性の高い情報の取扱いについて、個人情報保護法と特に厳しいとされる金融分野での運用をテーマとし、基本的知識のみにて正解できる問題を掲載しました。 金融分野における個人情報取扱事業者がデータを取得する場合の「機微情報」には、人種、信条、病歴、犯罪の経歴などの個人情報保護法に定める「要配慮個人情報」にとどまらず、労働組合への加盟や保険医療などのデータも含まれます。「機微情報」は、取得・利用または第三者提供のすべてが原則禁止され、個人情報保護法の「要配慮個人情報」よりも厳しい取扱いが要求されています。
AI学習用セットを生成する際の著作権
AI学習用データセットを生成する際にもとのなるデータに第三者の著作物が含まれている場合について考えます。元となるデータの利用に、原則として著作権社の承諾は必要ありません。
他人の著作権者は、第三者に著作権があるデータ利用について、著作権者の許諾を得なくても解釈が可能としています。そして、営利目的の解析にも適用される点も、諸外国の規定よりも適用範囲が広いとされていましたが、平成30年の法改正により、その適用範囲はさらに広くなりました。このような、AI開発用データセット作成に配慮した法規制については、出題可能性も高いと考えられます。
第三者の著作物を利用する場合には、原則として、著作権者の承諾が必要とされます。しかし、著作権法第30条の4第2号は、情報解析のために行われるデータ利用についての権利制限を定めています。つまり、AI開発用データセットを作成する場合、もとのなるデータ等の著作権者の承諾は原則として必要とされません。著作権法第30条の4第2号は、非営利目的の場合に限っていないため、インターネット上に公開されているデータを利用して学習用データセットを作成して、販売する行為は違法とはなりません。著作権法のデータについて、サーバの設置場所で利用していると考えられる、とされ日本国内で作業していても、国外にあるサーバを利用して開発行為を行う場合には、日本の法律は適用されないと考えることになります。著作権法上問題がなくても、不正競争防止法、個人情報保護法、ライセンス契約、通信の秘密などによっても、データの利用に制約がかかっている場合があります。たとえば、営業秘密や限定提供データについては、不正競争防止法によって、データの不正使用を禁止されています。営業秘密として保護されるための条件として「秘密管理性」とありますが、これは「保有者が秘密とするということについての意思を持つ」だけではなく、「秘密を維持するために合理的な努力を払い、不正行為以外では不特定者に知られないように秘密として管理が行われていること」を意味します。たとえば、紙媒体であれば、当該文書に「マル秘」など秘密であることを表示することにより、秘密管理意思に対する従業員の認識可能性を確保するような措置を講じることなどが必要です。
匿名加工情報
AIの学習やデータ分析を行うなどデータを活用する機会が増え、個人情報の保護の重要性も増しています。次のうち匿名加工情報(個人情報を加工することで特定の個人を識別することができないようにし、当該個人情報を復元不可能にした情報)に関する事業者の義務について、匿名加工情報の作成や第三者提供を行なった際などには、公表する必要があります。
氏名や個人識別符号の削除など、匿名加工情報を制作する事業者は、個人情報を適切に加工する必要があります。匿名加工情報を制作する事業者は、加工方法などの情報の漏洩防止などの安全管理措置を行う必要があります。匿名加工情報を扱う際に、作成元の個人情報を識別するような行為は禁止されています。
個人情報保護法第2条第6項(匿名加工情報の定義)
この法律において「匿名加工情報」とは、次の各号に掲げる個人情報の区分に応じて当該各号に定める措置を講じて特定の個人を識別することができないように個人情報を加工して得られる個人に関する情報であって、当該個人情報を復元することができないようにしたものをいう。
第1項第1号に該当する個人情報 当該個人情報に含まれる記述等の一部を削除すること(当該一部の記述等を復元することのできる規則性を有しない方法により他の記述等に置き換えることを含む。)
第1項第2号に該当する個人情報 当該個人情報に含まれる個人識別符号の全部を削除すること(当該個人識別符号を復元することのできる規則性を有しない方法により他の記述等に置き換えることを含む。)
独占禁止法
「消費者と事業者との間の情報の質および量ならびに交渉力の格差」が存在しており、消費者は事業者との取引において取引条件が一方的に不利になりやすいです。デジタル・プラットフォーム事業者は、自己の取引上の地位が取引の相手方である消費者に優越している場合、その地位を利用して、正常な商習慣に照らして不当に不利益を与えることは、当該取引の相手方である消費者の自由かつ自主的な判断による取引を妨害する一方で、デジタル・プラットフォーム事業者は、その競争者との関係において競争上有利となります。消費者がデジタル・プラットフォーム事業者から不利益な取扱いを受けても、消費者が当該デジタル・プラットフォーム事業者の提供するサービスを利用するためには、これを受け入れざるを得なくなります。このような場合であるかどうかの判断に当たっては、消費者にとっての当該デジタル・プラットフォーム事業者と「取引することの必要性」を考慮します。
通常、当該サービスを提供するデジタル・プラットフォーム事業者は、消費者に対して取引上の地位が優越していると認められるものは、当該サービスと代替可能なサービスを提供するデジタル・プラットフォーム事業者が存在しない場合。代替可能なサービスを提供するデジタル・プラットフォーム事業者が存在していたとしても当該サービスの利用をやめることが事実上困難な場合です。反対に認められないものは、当該サービスにおいて、当該サービスを提供するデジタル・プラットフォーム事業者の利用者数が一定水準よりも多い場合です。
上の2つの例は公正取引委員会の「デジタル・プラットフォーム事業者と個人情報等を提供する消費者との取引における優越的地位の濫用に関する独占禁止法上の考え方」の3の(2)に記載されており、通常、当該サービスを提供するデジタル・プラットフォーム事業者は、消費者に対して取引上の地位が優越していると認められるものです。他にも「当該サービスにおいて、当該サービスを提供するデジタル・プラットフォーム事業者が、その意思で、ある程度自由に、価格、品質、数量、その他の各種取引条件を左右することができる地位にある場合」も該当します。一方で、利用者数だけは消費者に対して優越しているかの判断ができないので、最後の例は誤りになります。
改正道路交通法と改正航空法について考えます。今後ドライバー不足等が懸念される日本において、自動運転技術による移動サービスや、ドローンによるラストマイル輸送(大型トラックなどでは難しい住宅街等への配送)などが注目されています。本コラムでは、2022年施行の最新のモビリティ政策動向として、改正道路交通法と改正航空法について紹介します。 2022年には、モビリティ関連の2つの法律が改正・施行される見込みです。一つは、2022年4月に閣議決定された、道路交通法の改正です。今回の改正では、自動運転車を使った移動サービスの社会実装を主な対象として、特定の条件下では人間の運転への介入が必要とされない自動運転レベル4が解禁される見通しとなっています(図1)。レベル3以下の自動運転システムはドライバーの運転操作への介入を前提としていますが、レベル4以上の自動運転システムにおいては、システムが運転操作をすべて担当するため、人間の介入を必要としません。ただし、レベル4車両は特定道路などの特定条件下においてのみ走行します。 また、ドローンの飛行規制に関連して、「航空法等の一部を改正する法律(以後、改正航空法)」が成立し、2021年6月に公布されました。改正航空法は2022年12月に施行を控えており、第三者上空の視界飛行(有人地帯での補助なし飛行=レベル4飛行)の実現に向けて制度や規制の整備が進められています(図1)。レベル4での飛行は、①国から機体認証を受けた機体を、②操縦ライセンスを有するものが操縦し、③国土交通大臣の許可・承認を得た場合に、新たに可能となります。 なお、国土交通省は、概ね10年後の日本社会を念頭に、道路政策を通じて実現を目指す社会像、その実現に向けた中長期的な政策の方向性を提案する「2040年、道路の景色が変わる~人々の幸せにつながる道路へ~」を公表しています。その中では、道路やモビリティのビジョンが詳細に示されており、完全自動運転車や有人地帯でのドローンの飛行が、10年後の社会を支える重要な基盤であることがわかります(図2)。こうした流れの中で、今回紹介するような法改正が行われていることを頭に入れておけば、今後行われる新たなモビリティ関連の法改正についても理解を深めるきっかけになるでしょう。
最後に用語の解説です。Kaggleとはデータサイエンスのコンペティションプラットフォームで世界中のデータサイエンティストが自身のモデルの精度などで競われています。さまざまなデータに対する解法や考察なども存在し、閲覧できます。Couseraは機械学習などの分野をオンラインで学ぶことができる教育プラットフォームです。MOOCsはCouseraのような大規模なオンライン講座群のことで、Massive Open Online Coursesの略です。arXivとは機械学習などの論文をアップロード・ダウンロードすることができるプラットフォームで、最新の研究などの情報を閲覧できます。XAIとは介錯性の高い説明可能なAIのことです。米国のDARPA(Defence Advanced Reserch Projects Agency:国防高騰研究計画局)が主導する研究プロジェクトが発端となり、XAI(Explanable AI)と呼ばれます。匿名加工情報とは、個人情報を加工することで特定の個人を識別することができないようにし、当該個人情報を復元不可にした情報です。