menu
%}

機械学習の学習の仕方を学習する – 「やってみること」の大切さ

 2021.12.02 サークレイス株式会社

機械学習について振り返ってみましょう

最近、各方面で機械学習(マシンラーニング)の活用例を多く見るようになりました。また、それらの事例はますます増えていくことは容易に想像できると思います。 

ものづくりの視点からこの機械学習をながめてみましょう。いったいどのような特質を持っているのでしょうか。 

まず、機械学習(マシンラーニング)を分解してみると、教師あり学習、教師なし学習、強化学習などに分類できるかと思います。教師なし学習には、伝統的な統計手法を使うものもあります(回帰やクラスタリングなどですね)。また、教師あり学習の、最近発展著しいニューラル ネットワークのようなものもあります。他にもさまざまな手法がありますが、どの手法をとってみても、一番大切なことは、実際にやって動かしてみる、ということだと思います。 

「やってみる」ことが「知る」ことにつながる

「やってみる」ということは「知っている」ということと同義であることはKnowledge Managementの世界では常識です。プロの世界では、Know-what(それが何であるかわかる)よりもKnow-how(やり方を知っている)の方が重視される、そういうことですね。 

これらの知識共有は、ビジネスのスピードが速くなるにつれ、だんだん難しくなってきています。そのため、人に知識共有をさせることの新しい仕掛けが必要と考える人もいます。

出典元:知識管理のためのよりよい方法 (A Better Way to Manage Knowledge)

https://hbr.org/2010/01/a-better-way-to-manage-knowled.html?cm_mmc=npv-_-DAILY_ALERT-_-AWEBER-_-DATE 

これからお話することは、まさにそのことと関係があります。「知る」ということは「できる」ということです。なにもAIの話でなくとも、プログラミングであれ、料理であれ、紙飛行機づくりであれ、やってみるということは極めて大切です。エンジニアリングほど正直なものはなく、飛ばない飛行機はどうやったって飛ばないわけです。 

世の中の実際の問題は、当然のことながら、例題よりも難しく、あいまいで、複雑であり、なによりも正解というものがありません。自分で道を見つける、ということはどのような分野であっても、ものづくりの道に進む者は必ずマスターすべきことです。

さて、機械学習が華やかなりし昨今、巷には様々なAIに関する情報があふれていますね。これらは信頼できる情報のように見えます。もちろん、そういった情報も多いと思いますが、なかには「?」と思うものもあります。これでは動かないだろう、というものや、間違った前提に立っていると思える議論などです。 

このことは、一方では、機械学習の特質、つまり柔らかいデータを表現豊かなネットワークで対処するため、結果が一定ではない、ということからくることもあるでしょう。他方で、先にふれた、実際に「やってみる」人は少ないということの裏返しにも感じるのです。 

なぜそのように感じるのか、例をとってご説明しましょう。 

やってみて、初めて本質が見抜ける

機械学習とデータサイエンスのバイブルとされる本の一つの中に、ニューラル ネットワークの原型とされるパーセプトロンの学習規則について解説している部分があります。コードを読み、解説を見ると、理論的にはがっちりしたものです。が、実際のコーディングの観点からすると「あれ、ここの行はいらないかな」という部分があります。具体的には、バイアス ユニットに学習のための予測誤差を加算するところです。 

self.w_[0] += update 

また、dot積を計算するところでも、この値は使われます。しかし前後を見るとこの行は有効に機能していないように見えますし、実際にこのコードを変更してしまってもコードは動きます(効率がよくなるケースもあります)。 

別の例を見てみます。やはり英語の文献でTensorFlow、kerasなどの教科書とされる本があります。Hands-onの情報にあふれ、ステップ バイ ステップで進められるように見えます。が、これが動かないのです。非常に単純なMNISTの画像認識の例でも、やはり重要な処理を行うコードが抜け落ちており、それを追加しないと動きません。これを行うには本全体を読むことに匹敵する知識が必要なのです。 

もちろん専門家の視点からは、そのようなことは当たり前ですし、オープン ソース、パブリック ドメインのコードは、原則、問題の修正も拡張も、自分で行うというのが常識というものです。参考書も、著者のスタンスによりますが、それに類するものでしょう。このように情報を公開、配布することは、改善が行われること、そのことを目的としているのですから。

出典元:自由か著作権か?(Richard Stallman 著)

https://www.hyuki.com/gnu/frcp.html

ですから、自分で考えて、足りないところは補い、問題を修正する、そのこと自体はよいのです。が、マーケットプレイスで「コードがすぐに使えてよかったです!」などというレビューを見たり、折に触れ「読みました。わかりやすかったです」という感想を聞いたりすると、「読んでないな」、「実際にやってないな」と思わずにいられないときもあります。 

サークレイス株式会社では、社内の機械学習プロジェクトCAMP(circlace AI moonshot project)を行っています。そのプロジェクトでは、いろいろなAI活用のアイデアが生まれ、面白い機械学習の応用例が議論されています。そこでは、「実際に動かしてみる」ということを最重要視しています。 

安易に検索した情報を信じるのではなく「やってみる」ことをおすすめします。その時、読み手の力量を見る、これらの“バイブル”の挑戦を障害とみるか、それを克服し知識共有できる素晴らしい機会ととらえるか。それはみなさん次第なのです。 

(文中にあげられた文献については、これを批判する意図はありません。素晴らしい本を出してくれた先人たちに深い感謝の念を捧げます)