数学の教育を受けずにニューラルネットワークを研究することは理にかなっていますか?


7

現代の機械学習テクノロジーとツール(例:TensorFlow、Theanoなど)を考えると、エントリのしきい値は最近低くなっているようで、Pythonなどでプログラミングして興味深いものを構築するのに十分です。この点をサポートするもう1つの情報源は、CourseraのMachine Learning Specializationであり、FAQに次のように記載されています。

どのような背景知識が必要ですか?

コンピュータプログラミングの経験が必要です。この専門分野のほとんどの割り当ては、Pythonプログラミング言語を使用します。この専門分野認定は、スキルをデータサイエンスと機械学習に拡大したい科学者やソフトウェア開発者向けに特別に設計されていますが、基本的な数学とプログラミングのスキルを持ち、データからインテリジェンスを引き出すことに興味がある人に適しています。

一方、他にもたくさんのオンラインコース(たとえば、Costraでのスタンフォード機械学習や、UdacityでのGoogleのディープラーニング)や、数学が満載のS.ヘイキン、ニューラルネットワーク:包括的な財団などの古典的な本があります。。私は大学で数年間、統計、行列、積分などを含めて数学を勉強していましたが、あまりにも長い間使われていないので、これらの方程式を見ただけでは絶望感を覚えます。Knuthによる具象数学でさえ、非常に遅いペースで認識されているので、それを完了するのは不可能のようです。

したがって、次の質問が発生します。

  1. 数学の知識は浅いがプログラミングスキルのある人がニューラルネットワーク/機械学習の研究に飛び込むのは理にかなっていますか。
  2. 高レベルのツールのみを使用して、atariプレイしているような、この分野で興味深いプロジェクトを構築することは可能ですか?

それとも、時間がかかりすぎて、自分自身を奮闘させたり、他のことをしたりしない方が良いでしょうか?

回答:


5

それはあなたの仕事のタイプに依存します:

数学が必要なのは、適用されたサイエンスの役割で作業している場合、つまり、既知のことを手で試してみる場合、つまり、単語の埋め込みを試す場合、CNNを使用する場合があり、結果が良いかどうかを確認します。

一方、テキストマイニングの場合、研究者として最終的に単語埋め込みを表す新しい方法を見つけたり、既存の単語埋め込み自体を改善したりするには、多くの数学が必要です。

一方、機械学習または機械学習エンジニアのソフトウェアエンジニアとして働いている場合は、物事を行うための既存の知識を使用してモデルをトレーニングし、パフォーマンスを向上させるためにモデルを調整する必要があります。

研究とエンジニアリングの間にはトレードオフがあります。より多くの研究に向かってより多くの数学ですが、より工学に向かってより少ない数学とより多くの生産におけるシステムのパフォーマンス。

説明するもう1つの例は、チャットボットの場合です。数学のバックグラウンドを持つリサーチサイエンティストは、LSTMの仕組みや使用方法などの新しいモデルの論文を書く必要があります。応用科学者は、まずLSTMでチャットボットを構築するなどのビジネス上の問題を試し、それがラボでどのように機能したかを論文で公開します。機械学習エンジニアは、応用科学者がエンジニアリング作業のために公開した概念を再現します(つまり、紙の数学を理解し、コードでそれを再現する必要があります、それだけです)。

これが機械学習における数学の知識の要件に関して役立つことを願っています


3

Googleはコースを受講しています 従業員をトレーニングするためディープラーニングの。それらのほとんどがあなたが説明する状況(数学の経験はあまりないが、ソフトウェアのスキルは優れている)であることを考えると、数学に秀でることなくディープラーニングから利益を得ることができることの証明だと思います。

現在、多くのクールなディープラーニングプロジェクトに多数のツールとサンプルコードがオンラインで提供されているため、簡単に始めて、それらを試すことができます。たとえば、テンソルフローがあります、バックプロパゲーションアルゴリズムがどのように機能するかについての多くの知識をすでに必要としないなどのディープラーニング/理論の知識をさらに必要としない、その上に構築されたさらに単純なレイヤーがあります。

独自のものを構築したい場合は、それらのプロジェクトのサブセットに大量のデータと大量の計算能力が必要になる場合があることを覚えておく必要があります。(たとえば、MITの機械学習クラスでは、多くの学生があなたが言及したatariプロジェクトを複製したいと思っていましたが、TAはGoogleレベルの計算能力の不足のためにそうしないように提案しました)。

1〜2日間の労力でできることは次のとおりです。

  • 独自の比較的シンプルなアーキテクチャを構築します。
  • 関心のあるデータセットで(オンラインコードを使用して)複雑なアーキテクチャをトレーニングします。

最後に、最先端の性能を超える新しいクールなアーキテクチャを作成したい場合は、その背後にある数学を十分に理解していなければ、これは難しいでしょう。


3

私は計算神経科学の博士号取得候補者であり、この種のソフトウェアやその他のものを毎日使用しています。また、多くの学生がこの分野でプロジェクトに参加しています。だから私は少し経験があります。

数学の知識は浅いがプログラミングスキルのある人がニューラルネットワーク/機械学習の研究に飛び込むのは理にかなっていますか。

はい、そうです。Kerasのような高レベルの抽象化を使用して、すぐに始めることができます。私の意見では、それを使用するためにANNの正確なダイナミクスを知る必要はありません。

すべてと同様に、それはあなたと投資したい時間と労力に大きく依存します。基本を理解するには少し数学が必要だと思います。例はニューラルネットの活性化関数です。ます。それらは重要な役割を果たしますが、理解するのは簡単です。

あなたがそれの深みに到達し、それがどのようにそしてなぜ機能するかを本当に理解したいなら、かなり広範な数学のスキルが必要になります。それを回避する方法はありません。つまり、高度な確率論、高度な計算、高度な代数です。たとえば、バックプロパゲーションアルゴリズムを見てみましょう。機械学習の数学について詳しくは、このブログ投稿をご覧ください。

高度なツールのみを使用して、アタリを演奏するようなこの分野で興味深いプロジェクトを構築することは可能ですか?

はい、そうです。これを可能にする多くの優れたツールがあります。もちろん、何か新しいものをプログラムしようとしたらすぐにすぐに、たとえばニューラルネットワークやアルゴリズムを変更して改善または高速化したい場合は、すぐに限界に達します。

Atariについては、この素晴らしいブログ投稿を読むことをお勧めします。それはあなたがそれを実装できるほど詳細にすべてを説明しますが、それを理解するのに十分浅いです。

他の答えに追加してみましょう。私は、数学の基礎知識は低くてもプログラミングのスキルは優れている学生を見てきました。彼らはすべて、しっかりした機械学習パイプラインを実装、テスト、実行することができました。ここでパイプラインとは、システム全体のデータ収集、前処理、トレーニング、評価を意味します。

だから、はい、あなたはそれを行うことができます。


1

答えをニューラルネットワークに限定します。

数学の知識は浅いがプログラミングスキルのある人がニューラルネットワーク/機械学習の研究に飛び込むのは理にかなっていますか。

それは合理的かつ可能です。この結論を裏付けるいくつかの理由を次に示します。

  1. ニューラルネットワークは私たちの脳の機能に触発されています。したがって、ニューロン、接続、アクティブ化など、多くの概念はよく知られており、理解しやすいものです。これにより、ニューラルネットワークの導入がスムーズで刺激的なものになり、数学を必要としません。

  2. ニューラルネットワークの基本的な操作は、そのサイズに関係なく、簡単に理解できます:前方通過、あるレベルから別のレベルに流れる信号、ニューロンの活性化など。ここではそれほど多くの計算は必要ありません。シグモイド。

  3. ニューラルネットワークをトレーニングするための最も基本的なアルゴリズム(バックプロパゲーションなど)の基礎となる数学は複雑ではありません。合計、対数、乗算、除算です。そして、具体的な意味を持つ値を計算します:エラーコスト、勾配など。他の一部のML手法では、意味がそれほど明確または直感的でない中間値(多くの場合は行列)の計算が必要です。

  4. それは、より洗練された数学ではないことがよくありますが、正則化、事前トレーニング、ドロップアウトなどのより高度なトピックに飛び込むための基本を理解し、経験します。

明確にするために、より複雑なネットワークアーキテクチャと、ニューラルネットワークをトレーニングするための数学的に要求の厳しいアルゴリズムがあります。また、逆伝播に関連する計算は単純ですが、その計算は微積分学を勉強しなかった人にとっては複雑です。それでも、より複雑なアルゴリズムの導出または存在の難しさは、ニューラルネットワークの研究が不合理であることを意味しません。これらの問題は、ニューラルネットワークの理解を深め、実用化することを妨げるものではありません。

高度なツールのみを使用して、アタリを演奏するようなこの分野で興味深いプロジェクトを構築することは可能ですか?

近年、ニューラルネットワーク(特にディープラーニング)への関心が高まっています。これにより、多くの優れたツールとライブラリが作成されました。これらのいくつかは、Google、Microsoft、NVidiaなどの工場からのものです。間違いなく、これらの品質は興味深いプロジェクトを作成するのに十分です。より難しいと証明できるのは、ネットワークをトレーニングするために適切な量の品質データを取得することです(そのようなデータが現在利用できない場合)。


1
答えてくれてありがとう。現場での経験はどのようなもので、NNはどのように使用しますか。また、高レベルのツールのみを使用して構築された特定のプロジェクト、または数学を深く掘り下げることなく人々によって構築された特定のプロジェクトを知っていますか?
Queeq、2016年

1

場合によります。私は、バックプロパゲーションアルゴリズムを理解していると思います。これは、ほとんどのNNアーキテクチャ、CNNおよびRNNで使用されているため、バックプロパゲーションを知っていればそれほど難しくありません。

一方、Theano / Tensorflowは、基本的に行列/テンソル計算を書くためのDSLであり、かなり数学的に重く、低レベルです(実際の数学演算を書き留め、fittransform/ predictapiを使用するだけではありません)。

一方、Kerasとscikit-learnがあります。これらは高レベルのAPIのみを持ち、それほど多くの配管を必要としません。

特に、中Kerasあなたはpretrainedたいくつかのモデルを使用するか、いくつかの問題のために仕事に知られている事前定義されたアーキテクチャを持つことができます。

もちろん、数学の知識がなければ、ブラックボックスモデルで問題が発生する可能性がありますが、何かで機能しているように見えるものを他のものに適用したい場合は、たとえば、このシンプルなプロジェクト

TensorFlow使用したディープラーニングのクリエイティブアプリケーションも興味がある可能性があります。これは技術者以外のユーザーを対象としているようです(技術的な背景がなくて学習できるかどうかはわかりませんが、少なくとも多くのすばらしい例が含まれています)。


-3

ニューラルネットワークの本質はグラフです。グラフは数学の一部かもしれませんが、それらの概念は関係自体と同じくらい古いですとものです。

学習が複雑であることが必要である場合、秩序だった複雑さの可能性はありそうもないので、脳はおそらくまったく進化していなかっただろう。

それでは、質問する必要があります。学習できる最も単純なマシンは何ですか?しかし、もちろん、それは認識論的な質問を引き起こします:学習とは何か?

学習は、記憶を形成する2つの新しい状態の並列です。そしてそこにあなたはAIの基礎を持っています:メモリ。


1
これは実際には他の回答を追加したり、実際に質問に直接対処したりするものではありません。
Nick Cox
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.