数学が苦手でも機械学習を学ぶことはできますか?

数学が苦手でも機械学習を学ぶことはできますか?

[[381131]]

01 「機械学習は簡単に習得できますか?」

これは私が最も頻繁に聞かれる質問です。私の答えは単純明快で、たった 2 つの単語、「勉強熱心」でした。しかし、今となっては少し早まった気がします。機械学習は依然として「習得が簡単」ですが、「学習」という言葉が加わると、発音が少し難しくなるだけでなく、問題もより複雑になります。

学生の中には、機械学習の前に数学を学ぶ必要があると反対する人もいるかもしれません。数学は簡単に学べるのでしょうか?

この見解は非常に代表的であり、2 つの問題を含んでいます。最初の質問は、機械学習を学ぶには、まず数学を学ぶ必要があるのか​​、ということです。もう 1 つの質問は、数学を学ぶのは必ずしも難しいのか、ということです。

まず機械学習についてお話しましょう。私たちはいつも「機械学習、機械学習」と、まるでこれと呼ばれる特別な技術があるかのように話します。実際、機械学習は、原理から構造までまったく異なる可能性のあるさまざまなモデルアルゴリズムが詰まった大きなフレームワークにすぎません。そのため、当初、機械学習を学ぶということは、さまざまなモデル アルゴリズムがどのようなものであるかを学ぶことだと理解していました。

難しいですか? 私の答えは、難しい場合もあれば、そうでない場合もあります。学習目標に応じて、少なくとも 3 つの難易度レベルから選択できます。

1つ目は、学習後に新しいモデルアルゴリズムを開発したい場合、または既存のアルゴリズムモデルに何らかの設計を追加してパフォーマンスを向上させたい場合です。これは最も難しいもので、これを実行できる人は世界でもそれほど多くありません。

2 つ目は、さまざまな機械学習アルゴリズムの原理とロジックを数学的な観点から習得することです。これには通常、さまざまな数学用語の理解、さまざまな式の導出などが含まれます。これは最初のものよりはるかに簡単です。機械学習のコースを提供する多くの大学は、この目標に向けた教育計画を開発しています。しかし、ハードルはまだかなり高いです。結局のところ、数学を学ばなければなりませんが、数学は確かに辛いものや甘いものとは程遠いものです。

3つ目は、さまざまな機械学習アルゴリズムの原理とロジックを習得することです。 「数学的な観点から」という 5 つの単語が抜けていることを除けば、2 番目と同じように見えます。違いは何ですか?

大きな違いがあります。このタイプは問題に焦点を当てており、最も知りたいのは、問題を解決するために適切なモデルを選択する方法です。学習内容は、さまざまなモデルがどのような効果をもたらすか、問題が発生したときにどのように対処するかになります。 2 つ目のタイプの学習難易度は大幅に低下したと述べましたが、2 つ目のタイプと比較すると、3 つ目のタイプはさらに難しくなっています。難易度の差は、「ポルシェを購入する」と「ポルシェのモデルを購入する」よりもさらに大きいです。

さらに重要なのは、機械学習を学びたい人の多くは、数式を学びたいのではなく、その使い方を学びたいということです。機械学習で便利なツールを見つけられるかどうか疑問に思いながら学ぶ人もいます。だから私は、機械学習は簡単に学べると言いました。

02 問題解決の観点から機械学習を学ぶ方法

問題を解決するために機械学習を学ぶ場合、学習コストが可能な限り低く、学習時間が可能な限り短いことを当然望みます。そして、私たちは皆、数学が時間のブラックホールであることを知っています。どれだけ時間を投入しても、何の反応も得られないかもしれません。これは、多くの人が機械学習に手を出さない実際的な理由でもあります。

この場合、数学を学ばずに機械学習を使って問題を解決する方法はあるのだろうか、と問わなければなりません。

はい、あります。しかも、方法は複数あります。

最初の、そしてより一般的なのは、物事を切り替えることです。

ソフトウェア エンジニアリングには、「カプセル化」と呼ばれる非常に重要な概念があります。定義されたインターフェイスに従って呼び出すだけでよく、アルゴリズムはブラック ボックスになります。機械学習の分野には、有名な Scikit-Learn など、よくカプセル化されたサードパーティ ライブラリもいくつかあります。モデルの数学的原理にはまったく触れる必要はありません。必要なのは、データを準備し、データをモデルに適合させ、モデルに予測させるという 3 つのことだけです。

ここでの fit と predict はカプセル化されたインターフェースです。機械学習の本を開くと、基本的に数式はなく、これこれこう使えというコードだけが書かれ​​ています。あれもその類です。

この方法はシンプルですが、少し不安を感じさせます。また、私たちプログラマーは本質的に疑い深いです。問題がなければ問題ありません。問題がある場合は、サードパーティのライブラリに問題があるに違いありません。そのため、機械学習の基本原則をいくつか知っておく必要があり、純粋なスイッチャーではないと誰もが考えています。

数学を学ばずに機械学習の原理とロジックを理解する方法はありますか?

はい、これが2番目の方法です。

機械学習を感情のないツールとしてのみ考える場合は、機械学習モデルの選択と組み合わせに重点を置く必要があります。前に述べたように、機械学習はあらゆる種類の奇妙なモデルアルゴリズムが詰まった箱、つまりツールボックスです。

次に、ツールボックスにふさわしい敬意を払い、ツールボックス内のツールの機能を理解した上で、対処している問題に基づいてツールを選択するか、ツールを組み合わせて最終的に問題を解決する必要があります。振り返ってみてください。工具箱の中のドライバーを探すとき、どれがより適しているかだけを考え、おそらく最初にその鋳造プロセスを理解することは考えないでしょう。

もちろん、理想は満ち溢れ、現実は痩せています。結局のところ、機械学習モデルはドライバーではありません。数学に一切触れずに、必要なモデルを正確に選択したい場合、実際に試してみると、実際には非常に難しいことがわかります。まず、機械学習の数学的背景をすでに理解し、機械学習をツールの観点から見て、いくつかの学習資料を蓄積する意欲のある先人たちのグループがなければなりません。

市場には、この観点から書かれた教科書は基本的にありません。私は、機械学習を学ぶための選択肢をみんなにもっと提供するために、「機械学習アルゴリズムの数学的原理と Python 実装」という本を書こうとしました。

03 機械学習エンジニアリング

冒頭の質問に戻りますが、機械学習は簡単に習得できるのでしょうか?

うーん...それは難しいですね。

はい、それが今の私の答えです。機械学習は変わっていません。変わったのは私自身です。より正確に言えば、「機械学習」という 4 つの単語に対する私の理解が変わったのです。先ほど機械学習を紹介したとき、私は何を言いましたか? 機械学習はさまざまなモデル アルゴリズムが詰まった大きなフレームワークであると言いました。これは機械学習についての私のこれまでの理解です。

この記述は正しいでしょうか?

うーん...それは難しいですね。おそらく、1,000 人の人の目には 1,000 種類の機械学習があるわけではないでしょうが、人によって機械学習に対する理解は異なります。したがって、習得しやすいかどうかという質問に答えるには、文脈も十分に考慮する必要があります。私は最初に本を通じて機械学習について学んだので、私にとっては、本に書かれている理解と非常に似ています。

しかし、他の友人の中には、生産環境での機械学習について聞いたことがある人もいます。たとえば、この問題を解決するには機械学習の方が良いと誰かに言われたことがあります。そのため、彼らは「機械学習」を方法として考える傾向があります。機械学習を使用するということは、作業リンクを追加することです。上流の作業リンクによって生成された一部のデータは、「機械学習」によって処理され、下流の作業リンクにプッシュされるいくつかの製品を形成することができます。

これらの友人たちの機械学習に対する理解は、あまりにも実用的すぎるかもしれませんが、実稼働環境における機械学習の真の姿に近いのかもしれません。もしかしたら、現実はもっと現実的かもしれませんし、上流も下流もないかもしれません。上司はただ、必要なものを言うだけです。それをどうやって実現するか、どんな手段を使うか、どのような上流・下流の支援設備を整える必要があるかは、自分で考えなければなりません。

少し前に、数人の友人がデータコンテストに参加すると機械学習の学習に役立つかどうかについて話し合っているのを耳にしました。私の最初の反応は驚きでした。どうして役に立たないのでしょうか? 後になって、みんなデータコンテストは理想的すぎると思っていたことに気づきました。データコンテストのように、上司もデータセットを準備し、データフィールドの意味を示し、達成すべき評価指標を事前に伝えることができれば、それはただ一つのことを意味します。つまり、彼は上司ではなく、あなたが上司なのです。

問題はここにあります。現在市販されている機械学習の教科書は、理論的なものでもプログラミング指向のものでも、1 つの章でモデルを紹介し、次の章で別のモデルを紹介するという構成になっています。基本的に、本全体がさまざまなモデルでつながっています。良い教科書を見つけて、その知識を理解するために一生懸命勉強したと想像してください。機械学習を学んだと言えますか?

難しいですね。なぜ難しいのか?それは、先生が出した問題を解決したいのであれば、問題はないはずだからです。しかし、上司が出した問題を解決したいのであれば、おそらく混乱し、どこから始めればいいのか全く分からず、偽の機械学習を学んだのではないかと疑うでしょう。私はこのような例を何度も見てきました。

なぜ?

機械学習を学んでも、実際にどのように使用するか分からないのは、最初は信じられないように思えるかもしれませんが、それは車の運転を学ぶのと同じです。

自動車学校での教えが、例えば車の構造がどうなっているか、エンジンがどうなっているか、ギアボックスがどうなっているかといった、車そのものに関することばかりで、あらゆる専門用語や構造上の見方をさまざまな角度から暗記した上で、いざ路上で運転するよう求められたら、やはり混乱を避けることはできないでしょう。なぜでしょうか? それはとても簡単です。あなたが学んだのは自動車の修理であって運転ではないので、運転するときに最初にアクセルを踏むべきかクラッチを離すべきかが当然理解できないからです。

この点で、機械学習はソフトウェア エンジニアリングによく似ています。多くの人は、開発とは単にコードを書くことであり、ソフトウェア エンジニアリングを学んだ後で初めてプログラミングの 1 つの側面を理解すると考えています。

学術界は、注目を集めるために新しい概念を思いつくのが好きです。誰もが理解しやすいように、ここで「機械学習エンジニアリング」と呼ばれる新しい概念を提案したいと思います。多くの人が「機械学習」として理解しているものは、実際には「機械学習エンジニアリング」と呼ぶべきであり、モデルトレーニングは機械学習エンジニアリングの1つのリンクにすぎないことを皆さんに伝えたいと思っています。

04 機械学習プロジェクトの構築方法

ソフトウェア エンジニアリングにはソフトウェア ライフサイクルがあり、いくつかの段階に分かれています。機械学習にも同様のライフサイクルがあります。機械学習プロジェクトを確立するには、少なくとも次の手順を完了する必要があります。

最初のステップはデータ収集です

機械学習を勉強するときにはデータセットを使用する必要がありますが、データセットはスーパーマーケットの米のように自然に置かれているという印象を持ってはなりません。米を育てるのに人が必要であるのと同様に、データセットを整理するのにも人が必要であり、その作業には複数のステップが含まれます。

まず、データ フィールドを設計する必要があります。確かに、データ コンペティションではデータ フィールドを理解しているだけで十分ですが、独自の機械学習プロジェクトを構築する場合は、まず自分でフィールドを設計する必要があります。

次に、データを収集する必要があります。この作業は簡単ではありません。どのようなデータを収集すべきか、どのように収集するか、収集後はどのように活用するか、そしてどのように管理するか。この大小さまざまな疑問をまとめると、一冊の本が書けるほどです。例えば、インターネット上の公開データが欲しい場合はクローラーを使う必要がありますが、社内データの場合は別の方法を使う必要があるかもしれませんし、今ホットな検索リストによく載っているデータミドルプラットフォームのようなデータインフラを構築する必要もあるかもしれません。

2番目のステップはデータのクリーニングです

さて、多くの困難を克服し、必要なデータがわかり、すべてのデータを正常に収集できたと仮定すると、次の重要なステップはデータのクリーニングです。これは料理にとても似ています。鍋に入れる前に材料をよく洗わなければ、胃の調子が悪くなるかもしれません。

データについても同じことが言えます。ワイルド データにはさまざまな問題がありますが、最も一般的なのは値が欠落していることです。これは遅かれ早かれ直面しなければならない確率的なイベントです。どのように対処すればよいのでしょうか。多くの方法が研究されていますが、万能薬はなく、それぞれの問題を具体的に分析する必要があります。

欠損値以外にも、外れ値や異常値など、もっと奇妙な問題がたくさんあります。これは、あるグループの人々にアンケートを送ったときに、性別の欄に「漢」と記入し続ける人々が必ずいるようなものです。

3 番目のステップは特徴エンジニアリングであり、データ探索とも呼ばれます。

このステップは非常に重要です。簡単に言えば、その機能はデータの特性をより顕著にし、モデルのパフォーマンスを大幅に向上させることです。

かつては、データによって機械学習のパフォーマンスの上限が決まり、モデルはこの上限に近づくだけだと言われていました。今では、特徴エンジニアリングによってパフォーマンスの上限が決まり、パラメータチューニングはこの上限に近づくだけであると言って、少し変わったようです。いずれにせよ、このステップは非常に重要であり、多くの経験が必要です。内容が非常に多いため、わかりやすく説明するには本が必要になります。

4番目のステップはモデルのトレーニングです

これについてはあまり語りません。ここまで来ると、ようやく見慣れた景色が見えてきます。これで、誰もが機械学習を学んだと感じている理由をより明確に理解できるはずですが、実際に機械学習プロジェクトを構築しなければならないときには、まだ混乱し、どこから始めればいいのか分からず、偽の機械学習を学んだのではないかと疑うようになります。

5番目のステップはモデルの展開です

一般的に言えば、この段階では、すでにモデルが手元にあります。もちろん、このモデルが役割を果たし、あなたや上司が望む期待目標を達成できるかどうか、また失敗した場合にどうするかは、すべて個別に議論する必要がある問題です。

すべてがうまくいき、モデルが正常に動作することを前提として、モデルをオンラインでデプロイし、運用環境で動作させることができます。このステップは単なる儀式だと思わないでください。この先には多くの技術的な問題や奇妙な状況も待ち受けているので、詳細には触れません。

上記は、機械学習エンジニアリングが行う必要があることの簡単なリストにすぎません。主な目的は、「機械学習」は単なる機械学習ではなく、ソフトウェアエンジニアリングに劣らない一連の複雑なプロセスも含まれていることをすべての人に理解してもらうことです。これを機械学習エンジニアリングと呼びましょう。

機械学習を学術的な観点から見る場合と、機械学習エンジニアリングの観点から見る場合とでは、まったく異なる理解と視点が得られ、当然、能力に対する要件も異なります。

<<:  人工知能はテクノロジーとデータガバナンスの進化を推進する

>>:  ビジョンと AI を追加することで、産業用ロボットはスマート製造をより効果的に支援できるでしょうか?

ブログ    

推薦する

空から地上へ、そしてついに無人機が海へ

[[251878]]数日前、もう一つの非常に興味深い広告が私の注意を引きました。それはトルコのテクノ...

北京ソフトウェア協会が「人工知能委員会」の設立準備を進め、アジアインフォテクノロジーズの欧陽葉博士が委員長に選出される

10月26日、中国科学技術協会社会サービスセンターの支援を受けて、北京ソフトウェア情報サービス協会(...

...

アリババのナレッジグラフが初めて公開: 1日あたり数千万のブロックデータ、数十億の完全インテリジェント監査

アリババのナレッジグラフの助けにより、アリババの電子商取引プラットフォームの管理と制御は、以前の「巡...

商用顔認識は一時停止できるのか?

顔認証を防ぐために、市民は営業所を訪れる際にヘルメットをかぶっている。「初の顔認証事件」で、裁判所は...

LSTM、GRU、ニューラルチューリングマシン: ディープラーニングで最も人気のあるリカレントニューラルネットワークの詳細な説明

リカレント ニューラル ネットワーク (RNN) は、ネットワークに追加の重みを追加してネットワーク...

柯潔はなぜ「負けてカッとなった」と言ったのか!人間対機械の第一ラウンドを説明する8つの質問

4時間以上の対局の末、柯潔はAlphaGoに0.25ポイント差で負けた。対局後、アルファ碁の指導に参...

多くの場所で顔認証の削除が通知されました!人工知能業界は衰退するのでしょうか?

[[356436]] 「ブラックテクノロジー」の顔スキャンマシンを大量に購入する人がいる一方で、顔...

AIは人間ではないため、米国特許庁はAIの発明の全てを認めない

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

...

ディープラーニングは自動運転車にとって何を意味するのでしょうか?

[[348074]]自動運転車でディープラーニングを使用すると、歩行者の行動を理解したり、最短ルー...

GNN初心者必読! Google Research が、SOTA グラフ ニューラル ネットワークをゼロから構築する方法を教えます

[[422426]]近年、ニューラル ネットワークは自然言語、画像、音声、その他のデータで大きな進歩...

顔認識技術の応用における認知的誤解

[[286435]]カメラはどこにでもあり、顔認識は生活のほぼあらゆる場面で使用されています。どのよ...