teratail開発チームの鈴木です。主査,久保隆宏氏によるセッション「機械学習時代のシステムプログラミング」を聞かせていただきましたので,こちらの内容をレポートしたいと思います。teratailの周りで機械学習を活用している事例はなく,個人的な使用経験もなかったのですが,機械学習ならではの難しさや考え方を知ることができ,刺激を受けることができました。いうミッションはじめに,登壇者である久保さんの所属するチームのミッションを紹介していただきました。「茶帰」という愛称があるようですが,この実現のためには仕事を効率化するだでなく,仕事の仕方自体を変える必要があるということで,機械学習ならではのアグレッシブで素晴らしいミッションだと感じました。そうは言ってもすぐに変えるということはなかなか難しいので,プロトタイプを作成し,実際に効果を体験してもらうことを大切にして活動されているそうです。研究活動はオープンに行われており,GitHubのリポジトリには総計で700を超えるスターが集まっているとのことでした。次に,本セッションのメインとなる依存性管理のお話です。機械学習にはさまざまなメリットがある中で,従来のプログラムとは異なる性質を有しています。その性質とは,機械学習による判断は確率的なものになるという点です。猫の写真に対して,機械学習モデルを通してこれが何なのかを判断させると,「⁠○○%猫である」というような結果が得られます。したはっきりとしない出力は通常のプログラムでは扱うことができないため,そのギャップを埋める処理もまた,機械学習をシステムに組み込む上では必要になります。ギャップを埋める代表的な手法には,「⁠これ以上の確率なら次に進む」という閾値を用いる方法と,確率が最大のものに寄せる方法の2つがあり,一般的には後者の方がよく用いられるとのことでした。確率が最大のものに寄せる方法には問題があり,その例として挙げられていたのは,ツイートが危険だったらツイッターアカウントを停止する処理でした。この処理で確率が最大のものに寄せる方法をとった場合,停止するかしないのかの二択であるため,ツイートが危険という確率が50%を超えた段階でアカウントが停止されてしまいます。これでは不確かな証拠でアカウントを停止してしまう可能性があり,ユーザーに大きな不利益が発生してしまいます。したがって,一定の責任がある処理を行う場合には,適切な閾値の設定が欠かせないとのことでした。機械学習モデルを既存システムに組み込む場合,機械学習を利用する側に,機械学習の判断を「扱う方法」を設定しないといけないことになります。これは,もし機械学習モデルに更新が発生したら,扱う側も更新しないといけないことを意味します。そのため,機械学習をシステムに組み込む際は,この連鎖範囲を確認してメンテナンスをしないといけないということです。この連鎖範囲を把握するために,「⁠モデルの利用を通じた依存関係」と「データを通じた依存関係」の2種類の依存関係を明らかにする必要があるとのことでした。モデルの利用を通じた依存関係とは,作成したモデルが別の用途でも使用されることや,それをベースにした新たなモデルが作成されることによる依存関係を指します。データを通じた依存関係とは,同じデータソースを使っているモデルは,更新の際同期をとらなければならないことがあるというものです。これは,モデルの判断傾向が作られた時期のデータの傾向に依存することにより,同じデータソースが元なのに判断傾向に差が出てきてしまうためです。これらの依存性をいかに管理するかが,機械学習のビジネス上のパフォーマンスを維持するために重要になってくるということですね。依存関係の管理方法には,開発面と運用面からのアプローチが考えられるそうです。開発面からのアプローチでは,コードにおけるモジュール依存関係の文脈で管理できるようにします。運用面からのアプローチでは,学習プロセスなど機械学習にまつわる処理をログとして管理しておき,そこから依存関係をたどることができるようにします。セッション内で実践編として紹介されていたコードは,登壇者の方の[GitHubリポジトリ(icoxfog417/jetbull)から見ることができるようです。続いて,機械学習エンジニアが今後何をしていくべきなのかという点についてもお話いただきました。結論として,機械学習自体の自動化が進む中で,機械学習エンジニアが取り組むべき問題は変化してきており,「⁠より特化」「⁠より汎用」「⁠より柔軟」という3つの方針が挙げられるそうです。「より特化」とは,データの前処理,素のデータには無い特徴の追加など,よりドメインに特化した処理を行うことで精度を上げていきます。「より汎用」とは,より細かいカテゴリを持ちさまざまな分類に対応できるモデルや,言語ではクロスリンガルなモデルを指しています。「より柔軟」とは,適切な事前学習済みモデルを作成しておき,少ないデータしか存在しないような状況にも対応していくことです。現実のビジネス環境では,売上予測モデルにおける競合店の出現や質問回答システムにおける法令の改正のような,機械学習モデルに大きな影響をもたらすような変化が多く起こり得ます。そのため,「⁠より柔軟」の実現は,変化の多いビジネス環境にも機械学習の活躍の場を広げるという面で重要です。その際に,今回お話いただいた依存性の問題が現れるということでした。このように機械学習の活用をさらに進めていくには,機械学習の研究的な進歩だけでなく,今回お話しされていたような「どう扱うか」というエンジアリング面での進歩も求められるというお話でした。teratail開発エンジニア。メディアのグロースをメインに,企画やUX設計からフロントエンド,バックエンドの開発まで幅広く担当する。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。