最終更新日:
機械学習とディープラーニングが活用されるようになった第三次AIブームが始まった数年前においては、AIモデルの開発には大規模な学習データ、巨大なアーキテクチャ、そして多額の資金が必要だったため、Googleのような資本力のある企業しか開発できませんでした。
こうしたなか、AI開発の敷居を下げる技術が登場しました。その技術とは、事前学習済みのAIモデルを特定の目的に最適化する転移学習です。転移学習を使えば大規模な学習データと巨大なアーキテクチャが不要となるため開発コストを削減できるので、従来は参入できなかった企業がAI開発に進出できるようになるのです。こうした転移学習を用いた事例として、テキストアドベンチャーゲームの文言を自動生成するAI Dungeon等が挙げられています。
転移学習を用いたAI開発が今後さらに普及すると、AI開発は事前学習済みの高性能AIモデルをカスタマイズするという方法論が主流になることが予想されます。この予想は、一部の専門家の専有物からオープンソース化されるというソフトウェアエンジニアリング全般の歴史がAI開発でも繰り返されようとしていることからも妥当なものと言えます。ちなみに、Kaiser氏が開発に関わるCortexは転移学習が主流となるAI開発を先取りして推進するものと位置づけられています。
Cortexがどの程度普及するかは定かではありませんが、近い将来、主要なAIモデルと学習データがほぼすべてオープンソース化され、AI開発の敷居が現在よりさらに低くなることでしょう。
なお、以下の記事本文はCaleb Kaiser氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。
少なくとも、ディープラーニングでソフトウェアを構築することは難しくない。
それほど遠くない過去においては、データサイエンスチームはディープラーニングを効果的に使うために、以下のようないくつかの条件を必要としていた。
- おそらくは社内向けに設計された新しいモデルアーキテクチャ
- 大規模でおそらくは独占的なデータセットへのアクセス
- 大規模モデルの訓練のためのハードウェアまたは資金
以上はディープラーニングのボトルネックとして影響を及ぼし、ディープラーニングを開発できるのは以上の条件を満たす少数のプロジェクトのみに制限していた。
しかし、ここ数年で状況は変わった。
(機械学習ウェブアプリ開発環境である)Cortexにおいて、この環境のユーザがディープラーニングによって構築された新世代の製品をローンチするのをわたしたちは見てきた。そして以前とは違って、こうした製品はオリジナルなアーキテクチャモデルを使って構築されてはいないのだ。
以上のような新世代の製品の成長を影で推進したものこそ、転移学習だ。
目次
転移学習とは何か?
転移学習とは、大まかに言えば、(例えば、画像のなかから花を識別するような)特定のタスクのために任意のモデルを訓練するために蓄積された知識である。転移学習を使えば、任意のモデルを、誰かの肌からメラノーマ(悪性黒色腫:ほくろのように見える皮膚がんの一種)を識別するような任意のモデルに関連したタスクでありながら目的の異なる予測を支援するために、違うモデルに作り替えることができる。
原註:転移学習の技術的な詳細をもっと知りたい場合は、Sebastian Ruderがすばらしい入門書を作成している。
転移学習には様々なアプローチがあるのだが、ファインチューニングというアプローチが特に幅広く採用されているように見受けられる。
このアプローチでは、チームは事前学習されたモデルを取得し、新しい関連タスクに焦点を合わせるためにモデルの最後のレイヤーを削除あるいは再訓練する。例えばAI Dungeonは、AIによって生成されたストーリーが説得力があることで話題になったオープンワールドのテキストアドベンチャーゲームである。
注目すべきはAI Dungeonが開発されたのはGoogleの研究所の1つによってではなく、たった1人でハッカソンプロジェクトに参加したエンジニアによって開発されたことだ。
AI Dungeonの作成者であるNick Waltonはモデルをゼロから設計するのではなく、最先端のNLPモデル(OpenAIのGPT-2(※訳註1))を採用して、ゲームをプレイするユーザごとに独自な冒険に関する文言を選択するようにファインチューニングして構築した。
AI Dungeonがうまく動作するのは、ニューラルネットワークの内部において最初のレイヤーは生成するテキストの単純かつ一般的な特徴のみに焦点を合わせる一方で、最終レイヤーはより特定化された分類/回帰に焦点を合わせているからだ。Andrew Ng氏(※訳注2)は画像認識モデルの処理を図解することで、モデルのレイヤー構造とレイヤーごとの相対的特異性を視覚化している。
基本層の一般的な知識は、多くの場合、他のタスクにうまく変換される。AI Dungeonの事例では、GPT-2には一般的な英語に関して最先端の理解があり、ジャンルとしての冒険小説に見られる文言をプレイヤーごとに選択するように、最終レイヤーで少し再訓練する必要があっただけだった。
以上のようなプロセスを使えば、Nick Walton のようにエンジニアがたった一人で数日のうちに新しいドメインで最先端の結果を実現するモデルを実装することが可能となるのだ。
転移学習が次世代の機械学習搭載ソフトウェアのカギである理由
本記事の最初で、機械学習―とくにディープラーニング―を効果的に使用するためには、現状では必要とされる有利な条件について説明した。すなわち大規模でクリーンなデータセットにアクセスする必要があり、効果的なモデルを設計できる必要があり、それをトレーニングする手段が必要なのだ。
つまり、以上のような制約的条件があることによって、デフォルトな状況では特定のドメインにおけるプロジェクト、あるいはリソースに乏しいプロジェクトは機械学習を実行できないと言える。
それが今や転移学習により、これらのボトルネックは取り除かれつつある。
1.小規模なデータセットしかないことはもはや障壁ではない
通常、ディープラーニングには大量のラベル付きデータが必要なのだが、多くのドメインではこうした大規模なデータは存在しない。転移学習はこうした状況を改善できる。
例えばハーバード大学医学部に所属するチームは最近、「胸部レントゲン画像からガン以外の死亡を含む長期死亡率を予測できる」モデルを実装した。
50,000枚までのラベル付き画像のデータセットしかなかったので、ハーバード大学医学部のチームはCNN(畳み込みニューラルネットワーク)をゼロからトレーニングするために必要なデータを持ち合わせていなかった。代わりに、(1,400万枚を超える画像のImageNetデータセットで訓練した)事前学習済みのInception-v4モデルを採用し、転移学習とわずかなアーキテクチャの変更を使用してモデルを(彼らがもっていた胸部レントゲン画像の)データセットに適合させた。
最終的に、胸部レントゲン画像診断CNNは患者ごとに1つの胸部画像を使用してリスクスコアを生成することに成功したのだった。このスコアは患者の実際の死亡率と相関するものであった。
2.モデルは数日ではなく数分で訓練できる
膨大なデータを使ってモデルを訓練する時には、大規模なデータセットを取得することが問題となるだけではなく、リソースと時間に関する問題も生じる。
例えばGoogleが最先端の画像分類モデルXceptionを開発していた時、2つのバージョンを訓練していた。1つはImageNetデータセット(1,400万枚)、もう1つはJFTデータセット(3億5,000万枚)だ。
60個のNVIDIA K80 GPUを使った(様々な最適化を伴う)訓練には、ImageNetの実験をたった1回行う度に実行に3日かかった。JFTの実験では1ヶ月以上を要した。
今となっては事前学習済みのXceptionモデルがリリースされたので、チームは独自のバージョンをより迅速にファインチューニングできる。
さらにイリノイ大学とアルゴンヌ国立研究所から成るチームの最近の事例では、銀河の画像を渦巻きまたは楕円形に分類するモデルが訓練された。
35,000枚のラベル付き画像のデータセットしか持っていなかったにもかかわらず、イリノイ大学らのチームはNVIDIA GPUを使用してわずか8分で Xceptionをファインチューニングすることができた。
結果として得られるモデルは、GPUを使って提供される場合(※訳註3)、毎分2,000個という超人的なスピードと正解率99.8%で銀河を識別できたのだった。
比較は同モデルに欠落のある英短文を入力として与え、欠落部分を予測するテストの実施を通して行われた。その結果、GPU使用時にはCPUに比べて4.6倍以上速く処理された。この結果により、GPUは訓練だけではなくモデル実行時にも有効活用できることが実証された。しかし、GPUをAIの処理に使うと高速になる一方で、コストがCPUに比べて5.5倍となることもわかった。
3.モデルの訓練にベンチャーキャピタルはもう必要ない
おそらくGoogleは、60個のGPUでXceptionモデルを一度に数か月間訓練した時、コストをあまり気にしていなかっただろう。しかし、Googleサイズの予算を持たないチームにとっては、モデルの訓練に費やされる価格は大きな懸念事項だ。
例えばOpenAIが最初にGPT-2の結果を公表したとき、モデルアーキテクチャはリリースされたが、誤用されることを懸念して、完全に事前学習したモデルはリリースしなかった。
以上のようなOpenAIの措置に対応して、Brown大学のチームは論文に記載されているアーキテクチャと訓練手順に従ってGPT-2を複製して、それをOpenGPT-2と呼ぶようにした(※訳註4)。訓練には最大で約50,000ドルかかったのだが、GPT-2ほどのパフォーマンスは出なかった。
50,000ドルをかけて最先端の性能を下回るモデルしかできないのは、巨額の資金を使わずに現実的なソフトウェア製品を開発しているチームにとって大きなリスクである。
幸いなことに、転移学習は最先端技術の水準を実現するコストを劇的に削減する。
Nick WaltonがAI Dungeonを構築した時、GPT-2をファインチューニングして実行した。OpenAIはすでに約27,118,520ページのテキストと数千ドルをモデルの訓練に費やしていたので、彼はそのいずれも再作成する必要がなかった(※訳註5)。
代わりに、chooseyourstory.com(※訳註6)から集めてきたはるかに小さなテキストのデータセットを使用して、Google Colab環境(※訳註7)でモデルをファインチューニングした。こうした開発プロセスは完全に無料である。
GPT-2をはじめとした近年次々と登場している莫大な量のパラメータをもつモデルを実稼働環境で運用するノウハウとして、同氏は以下のような3つの方法を提案している。
- 性能を劣化せずにモデルのサイズを小さくする。具体的には、モデルを蒸留するのが有効。
- AIモデルをクラウド環境に設置してクライアントサーバモデルで運用する。
- AIモデルを稼働させるハードウェアを改善する。
以上のように提案したうえで、個々の実稼働環境でAIモデルを稼働させる際の技術的問題を解決するのは、AI業界において日常茶飯事になるだろう、と同氏は述べている。
機械学習エンジニアリングは真のエコシステムになりつつある
機械学習エンジニアリングをソフトウェアエンジニアリングと並べてみると、極めて標準的なパターンでエコシステムが「成熟」するのを見ることができる。
新しいプログラミング言語はいくつかのエキサイティングな機能を備えて登場し、それを見て人々は特殊なユースケース、研究プロジェクト、そして趣味に使用する。この段階では新プログラミング言語を使う人は誰であっても、基本的なユーティリティをすべてゼロから構築する必要がある。
新プログラミング言語の登場後しばらくするとコミュニティ内の人々は、ツールが実稼働環境で使用できるまでに十分に安定するまで、共通のユーティリティを抽象化したライブラリとプロジェクトを開発する。
この段階では、ソフトウェアを構築するためにライブラリ等を使用するエンジニアは、HTTPリクエストの送信やデータベースへの接続を配慮していない。ネットワーク機能はまだ抽象化から斥けられ、エンジニアはとりあえず製品の構築に専念している。
以上のような段階を別の仕方で言えば、FacebookはReactを、GoogleはAngularをそれぞれ構築し(※訳註8)、ソフトウェア開発エンジニアはこうしたライブラリやフレームワークを使って製品を構築する段階に達している。転移学習により、機械学習エンジニアリングは今日のウェブアプリ開発のような次の段階へのステップを至る。
OpenAI、Google、Facebook、およびその他のテック業界大手のような企業が強力なオープンソースモデルをリリースするにつれて、機械学習エンジニア向けの「ツール」の能力と安定性が向上する。
するとPyTorchまたはTensorFlowを使用してモデルをゼロから構築する代わりに、機械学習エンジニアはオープンソースモデルと転移学習を使って製品を開発するようになる。つまり、まったく新しい世代の機械学習を活用したソフトウェアが登場する。
そして今や、機械学習エンジニアはわたしたちが提供するようなオープンソースのモデルを使って製品をリリースする方法について思い悩まなければならないのだ。
原註:ファインチューニングされたモデルを使用したソフトウェアの構築に関心がある場合は、モデルを実装するためのオープンソースプラットフォームであるCortexを確認してください。Cortexに関する情報は完全に開示しており、私はCortexに関する貢献者のひとりです。
David Eliahuに感謝を込めて
原文
『Deep learning isn’t hard anymore』
著者
Caleb Kaiser
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん