テックコミュニティの運営側で、その技術分野を常に追いかけているエンジニアの方々にお話をうかがうインタビュー企画。ホストは関満徳が務めます。コロナ禍のさなか対面での取材を避け、リモートで行います。最終回のゲストとしてお迎えしたのは、データサイエンティストとして活躍する大城氏と松村氏です。
大城氏は、大企業から中小企業まで約20社のデータ分析案件にアドバイザーとして参画する傍ら、有志によるデータ分析関連の勉強会や、データサイエンティスト協会の九州支部の設立・運営などの活動を精力的に行っています。松村氏は、IT企業にてデータ分析部署の立ち上げに従事する傍(かたわ)ら、Tokyo.RやMusic×Analytics Meetupの運営などの活動を精力的に行っています。
松村 優哉(MATSUMURA Yuya) さん 修士(経済学)取得後、現職。学生時代は研究の傍らデータサイエンスの実務にも取り組む。現在はIT企業にてデータ分析部署の立ち上げに関わっているほか、Tokyo.Rの運営、音楽×分析をテーマにしたMusic×Analytics Meetupの運営など、コミュニティ活動にも精力的。
GitHub:ymattu
Twitter:@y__mattu
URL:https://ymattu.github.io/
関: AI(Artificial Intelligence 、人工知能)とは何かについて、お二人の立場から説明いただいてもよいでしょうか。
松村: AIとは、機械学習技術の活用ととらえています。統計解析や深層学習、自然言語処理技術も含みます。世の中一般で言われているAIはもっと広い意味で使われることが多く、特にここ5年ぐらいは、何か自動化しているとAIと呼ぶこともあるようです。私は技術者としてAIに関わったこともあり、AIの中でもどういう技術を使うのか、にスポットを当てることが多いです。
大城: 広義ではどれもAIですが、狭義では機械学習ととらえています。お客様の中にはドラえもんをAIと考えている方もいますし、RPA(Robotic Process Automation )をAIととらえている方もいます。商売上、RPAをAIとして売っている業者もいますね。どういう技術を使っているかでAIを区別するとわかりやすいでしょう。
データサイエンティストという役割が誕生して10年が経ち、ITを導入したい、AIを導入したい、というお客様も増えてきました。しかし本当に解決したい課題は別の場所に潜んでいることが多く、AIという言葉や技術にとらわれずに、ビジネスプロセスの改善を含めた課題解決の文脈で、AIをとらえるようにしています。
AIを成功させるには
関: AIの成功と失敗の境界線はどのようなものがあるのでしょうか。
大城: 試行錯誤を前提としないとAI開発はたいてい失敗しますね。機械学習の場合、まず最初にデータの可視化、ビジネスプロセスの分析などを行い、機械学習のための情報を積み上げていく必要があります。この積み上げをしっかりしないとだいたい失敗します。東京のある程度大きい会社であれば、分析チームが立ち上がっているケースもありますが、そのような企業でも、巨大IT企業が行っているAIのまねをするのは、簡単ではありません。
松村: AIは、要件がきちんと積み上がったうえで、適切なところに適切な技術を使うことができれば、ビジネス成果につなげやすいのではと考えています。たとえば、システムに対する異常検知のようなものであれば、現場でもうまく活用できている事例があります。
深層学習系については、正直成果が出しにくいと考えています。仮に深層学習を使うのが適切だという話になったとしても、パラメータの調整が難しかったり、技術的な課題が多いことが原因として挙げられます。
大城: 1980年代は、実世界の問題を解く実用的ツールとしてエキスパートシステムが広く商用利用されるようになりました。ただ、成功は限定的でした。専門家の知識は定式化できないことが多く、定式化してみると規則間で矛盾していたりするなど、推論エンジンの能力も低いことが多かったのです。
2010年代になると、深層学習に代表される各種機械学習手法が普及するようになりました。多層ニューラルネットワークの学習の研究や、学習に必要な計算機の能力向上、およびインターネットの発展による学習データの流通により、十分に学習させられるようになったのです。その結果、音声・画像・自然言語を対象とする諸問題に対し、ほかの手法を圧倒する高い性能を示せるようになりました。最近では、音声からテキストに変換する精度が上がってきています。人間の五感でいうと、視覚や聴覚はだいぶAIでもカバーしつつありますが、触覚、味覚、嗅覚についてはまだまだと言えそうです。
レコメンドエンジンやグロースハックは、テーブルデータが成功を左右しますし、お客様や取引先のデータ分析は、大量に集まるビジネスデータの活用が成功を左右します。認識系の画像は、写真から認識させる元データの精度が重要になってきますし、故障検知や信号検知の場合は、IoT(Internet of Things )の出来も成功を左右します。
AIを学習するには
関: AIをこれから学習したい人は、どう学習するとよさそうでしょうか?
松村: AIでできることは何かを把握することから始めるとよいでしょう。そのうえで、AIの技術を活用する前段階でいろんな下準備が必要なことを理解し、AIの技術寄りの部分では実際にプログラミングをしてみて、何ができるのかを実感していくとよいです。人によってAIの文脈が違うとか、データソースによって技術寄りのアプローチのしかたが変わっていくというあたりを、徐々に把握していけるといいですね。
大城: AIの分野は、企業や研究者から出される課題に対して、世界中のデータサイエンティストたちが競い合う「データ分析コンペティション」というものがあるんですね。コンペの参加者たちは、機械学習などの分析技術を駆使して、課題をクリアする最適解の発見を目指します。最も良い成果を上げた参加者には賞金が授与され、課題を出した企業がそのアルゴリズムを買い取るようなしくみになっています。コンペは実力試しになるだけでなく、上位成績を収めることで仕事のオファーにつながる場合もあります。データ分析コンペティションプラットフォームの中で最も有名なのはKaggle 、日本語だとSignate やNishika などがあります。データセットや過去の解答例なども公開されているので、AIの勉強をするのにちょうどよいです。たとえば、鳥の声を判別するもの、画像を判別するもの、雇用のデータから退職を予測するものなどですね。
大手企業の中には、外部コンペの成績に応じて業務時間の20~50%程度をKaggleに使ってよい、としているところもあるようです。手っ取り早く成果を出したいという方にとっては、コンペに参加する前提で勉強をするのも、1つの方法ではあります。
AIで使うツール
関満徳 氏
関: AIではどんなツールを使っているんでしょうか。
大城: AIで使うツールは、大きく3種類あります。インプットとしてのデータソースを扱うもの、分析・モデリング・レポーティングするもの、そしてAIをシステム実装するものです。データ量が少ない場合(100万行程度まで)はまずはMicrosoft Excel、データ量が多いときはSQLベースの集計をすることになり、数百万~数千万レコードまでは通常のRDB(MySQLやOracleなど) 、5000万~数億レコードを超え始めると分散型のクラウドストレージを活用することになります。そこである程度分析対象を集約したら、BI(Business Intelligence )ツールを使ってデータの可視化を行います。Tableau( タブロー ) やMicrosoft PowerBI などが該当します。
本格的な分析を行う際は、最近主流になっているPythonだとインタラクティブに結果の確認できるJupyter Notebook やオンラインで使えるGoogle Colaboratory 、統計解析が得意なR言語だとRStudio 、新興の言語だとJulia が挙げられます。そして機械学習モデルをシステム実装する場合はPythonを中心に、用途に応じて他のプログラミング言語(Go言語やC++など)と、従来のシステム開発用の統合開発環境を使うとよいでしょう。
松村: 企業で自社のデータを取り扱う場合、AWS(Amazon Web Services )やGCP(Google Cloud Platform )のようなクラウドサービスに、まずデータを貯めていくことが多いです。分析の際は、データの種類によって自然言語や位置情報など、それぞれ特化したツールがあるので、選択して使っていくことになります。
大城: このとき重要になるのが、整ったデータを作るデータエンジニアやインフラエンジニアですね。「 ETL」と呼ばれる、Extract(抽出) 、Transform(変換) 、Load(格納)の頭文字をとったデータ統合のプロセスにてバッチを作るような、サーバサイドエンジニアの方々が行うようなタスクもあります。
そもそもデータはどうやって収集するのか? ということを考える必要があります。クローリングを使うのか、APIを用意するのか、ロギング用のデータを仕込むのか、といった感じで、データサイエンティストがそこまでやる必要がある現場もあります。チームで分析をしている場合は分業できる可能性はありますが、1人でやる場合は前処理と呼ばれるデータのクリーニングや整理のタスクも自分でやらないといけないので、注意が必要です。
松村: データ分析を専門とした部署の立ち上げという話になると、データを集めるところからスタートするわけですが、クラウドリソースにデータを投入する際にシェルスクリプトを使うことがあります。Dockerコンテナを用意したり、マイクロサービスを用意したり。そうやってデータを集めたら、データのエクスポートにシェルやEmbulk( エンバルク ) を使ったり、大規模なデータをリアルタイムで同期する際はFluentd を使ったりします。
その後のデータのトランスフォームの過程で、シェル系の言語や、Goを使うこともあります。データの読み込みには、クラウドサービス内のロードサービスに対して、Pythonなどで関数を書いたりします。毎日何時にどこからデータをとってきて、どこに保存するかといったデータクエリを書くことになります。
エラーやリトライなどETL処理を管理する場合、Airflow のようなワークフローエンジンを使うことが多いです。企業によっては、digdag を使うこともあるようです。いずれにしても、整ったデータを用意する段階では、エンジニアの方々にも馴染みの深いツールを使っています。
松村: ここまで紹介したツールは、種類や数も多く圧倒されるかもしれません。これらのツールが使えるようになって初めてAIの全体が見えてくるようになります。分業が進んでいれば使うツールも絞れる可能性もありますが、そこまで分業ができる会社は少なく、多くの場合、1人で複数のツールを使っていくことになります。
データサイエンティストをやり始めると、手法を勉強したからこの手法でやってみようみたいに、わりと分析手法に偏りがちです。どう運用して、どうビジネス成果を出したいんだっけ? そのために、どういう分析をしたいんだっけ?という形で、常に課題ファーストで取り組むことを忘れないようにしてください。
これからのAI
関: この先、AIはどうなっていくんでしょうか?
大城: 以前は衛星画像を個人で見るなんてことはできませんでしたよね。それが、Google Mapsの登場でいつでも見られるようになりました。同じように、今までできなかったことに対する新しい代替手段の台頭が、これからも起きていくでしょう。
AIの分野も、手法、基盤、人はそろってきています。ただ、データは企業の中にしかなく、最終的にはデータを持っている企業が強くなっていきます。すでに巨大IT企業がその傾向になりつつありますが、データのオープンソース化の文化ができたときに、また新しい革新が起こるでしょうね。
IoTやAI、AR(Augmented Reality 、拡張現実)などの技術を用いて仮想空間に物理空間の環境を再現し、あらゆるシミュレートを行い、将来を予測することに役立つ新しい技術のことをデジタルツインと呼びますが、このようなプラットフォームがさらに出てくると、SFの世界みたいで楽しみですね。
松村: データに関する規制も、今よりもっと厳しくなっていくかもしれません。すでにヨーロッパでは規制が始まっていますが、何でもかんでもデータを収集・提供するのはいかがなものなのか、法規制がどうなっていくのか、個人的には興味がありますね。
データが増えて、オープンソースとして使われていくようになった場合、データを正しく扱う技術が必要となってきます。データリテラシと呼ばれる数字を正しく読む技術や、正しいデータにアクセスするチカラが、今後重要なものになっていくでしょう。
読者へのメッセージ
関: 最後に、本誌読者のみなさんへのメッセージをいただいてもよいでしょうか。
大城: 私はAIに関わってもう10年になるのですが、この10年でデータを触っている側としては、いろいろなおもしろさがありました。勉強会やコンペに参加いただき、こんな世界や技術があるんだ、おもしろそうだな、と感じてくださる方が、1人でも増えてくれればうれしいです。私たちは、会いにいけるデータサイエンティストを目指していますので、ぜひ気軽にお声がけください。
松村: 最後に未来志向みたいな話をしましたが、技術を知るということは、未来を知るということにつながると考えています。AIのコミュニティはオンラインでも気軽に参加できるので、ぜひお越しください。Twitterのダイレクトメッセージでも気軽に連絡をいただけたらうれしいです。本日はありがとうございました。
特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現!
特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう
特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、NFT