質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

3回答

4187閲覧

機械学習のための数学はどこまで理解すべき?

majo

総合スコア14

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

4クリップ

投稿2017/07/09 23:08

編集2022/01/12 10:55

はじめに・現状

機械学習の勉強を始めました。ゆくゆくは深層学習に進みたいと思っています。
勉強を始めて3週間程度経ちました。はじめは「Pythonのライブラリを使って機械学習を試してみよう」という程度で困ることはなかったのですが、少し先に進み「誤差逆伝播法を自分で計算してみよう」というところで計算が複雑すぎてつまずいてしまいました。

解説を見ながら計算式を一つ一つ丁寧に追いかければ、答えには行き着くかもしれません。
しかし計算が複雑で、とても自分一人で計算ができるとは思えませんし、そもそも式を覚えるのが苦痛です。

現在は、以下の動画で学習をしています。挫折しかけていますが…

ゼロから作るニューラルネットワーク【Python 3 + NumPyでバックプロップを徹底マスター】
https://www.udemy.com/neuralnet/

式はどこまで必要なのか

機械学習や深層学習を扱うにあたり、どの程度まで計算方法を理解できている必要があるのでしょうか。
どうせ最終的にはライブラリやAPIを叩くだけでしょ?計算式なんて理解する必要はないのでは?
と思ってしまいます。

とはいえ機械学習の参考書を見ると数式だらけです。

機械学習に出てくる計算式は、どこまで理解して、どの程度使えるようになれば良いのでしょうか。
(もちろん、誤差逆伝播法くらい自分で計算できて当たり前!無理ならやめてしまえ!などと言われれば必死に頑張るのですが…)

renin👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

いつかは必要になる日が来ると思いますが、「機械学習を勉強」の段階ではそこまで式を覚える必要はないと思います。

しかし計算が複雑で、とても自分一人で計算ができるとは思えませんし、そもそも式を覚えるのが苦痛です。

短期目標としてなにをしたいのか次第ではないでしょうか。

ライブラリを駆使するだけでそれなりの結果が出せて、機械学習がなにをするものなのか理解できれば、まずは十分、というときに数式の理解で挫折してしまうのはもったいないことだと思います。

どうせ最終的にはライブラリやAPIを叩くだけでしょ?計算式なんて理解する必要はないのでは?

そのうち、学習の精度を上げたいとか、そもそも分類器が何をしているのか理解したいとか、ディープラーニングをお仕着せのライブラリを使うだけでなくカスタマイズしたい、となってきたら、アルゴリズムの理解が必要になるかもしれません。機械学習のアルゴリズム理解は数式理解なしにはできないかもしれません。ですが、必要性が分かれば勉強する気になるかもしれません。

投稿2017/07/09 23:18

shimizukawa

総合スコア1847

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_Victorique__

2017/07/10 00:29

何がしたいかによりますよね。 困ったらその都度学べば良いんじゃないですかね?
majo

2017/07/10 10:25

ありがとうございます。 そもそもの話なのですが、数式を理解していなくてもTensorFlowやChainerなどのライブラリを使いこなすことは可能なのでしょうか。 目的として、さすがにライブラリを自作するようなことは想定していませんが、 「機械学習/深層学習できます!」と会社で宣言するには、カスタマイズとは言わずとも、せめて適切な設定値を見つけるくらいのことはできないと…と思っています。 (カスタマイズという言葉が出てきましたが、もしかして機械学習の世界では、ライブラリをカスタマイズすることが当たり前なのでしょうか?)
shimizukawa

2017/07/10 10:50

使いこなす、がどのレベルの話なのかによると思います。数式を理解している人の方が道具の使い方についての理解も速いでしょうし。ライブラリに与えるパラメータ自体が、元々の理論(数式)に関連する値なので、「このCっていうパラメータちょっと大きくしてみよう」と言ったときに、それがどういう意味なのかを数式無しで理解するのは難しいかもしれません。 仕事で機械学習できる、と言ったときに、なにかの問題を機械学習で解決できるという意味になると思いますが、その「できる」にも色々な段階があって、「ライブラリをインストールしてIrisを分類した」「数式は分からないけど仕事のデータを分類できた」「数式が分かるのでより精度高い分類ができる」「データに見合った特徴量を設計できる」「論文の数式をプログラムに実装できる」などさまざまです。数式が分からなくてもある程度のところまで可能にしてくれるのがライブラリの凄いところで、要求がその範囲に収まっていれば、数式を知らなくてもだれでもある程度の結果は出せると言えそうです。 「機械学習/深層学習できます!」と会社で宣言するには、人に教えられるだけの知識が必要ではないでしょうか。教えるためには聞かれたときに答えられる = 仕組みを理解している必要があるので、数式の理解は必須、とも言えます。
guest

0

それでも基礎を固めてからのほうがいいと思いますよ。

誤差逆伝搬法はそんなに難しいものではありません。ニューラルネットワークにおける基本的な概念の一つです。ぜひ自力でかけるようになってください。

例えば、以下の質問に答えることができますか?

・学習率ってなにですか?モーメンタムとは?
・AdamとSGDって何が違うんですか?
・損失関数とは?
・どのように、MSEとCross Entropyをつかいわけるのですか?

基礎ができてから応用に進む方が良いですよ。

投稿2017/07/15 09:54

MasashiKimura

総合スコア1150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shimizukawa

2017/07/16 00:44

異論ないです。人によって全体像を先に把握すると効率良く勉強できる人と、ゴールが遠くても1歩ずつ理解して固めていくと効率が良い人と居ると思うので、自分にどちらの学び方が合っているか知っておくと良いですよね。
guest

0

勉強の仕方については向き、不向きがあると思うので、一概にこうとは言えませんが、私の場合は理論を先に勉強すべきだと思います。
ただ、

機械学習や深層学習を扱うにあたり、どの程度まで計算方法を理解できている必要があるのでしょうか。
どうせ最終的にはライブラリやAPIを叩くだけでしょ?計算式なんて理解する必要はないのでは?
と思ってしまいます。

とのことですが、あなたの言うことは正しいと思います。
ライブラリ使えば計算式を理解しなくても使えるようにはなると思います。
およそ、ドキュメントを読めば、どこが凄いのかとかは書いてあると思います。
ただ、本質的に何が凄いのかとか応用利用を考えると少しでも理解しておくことが望ましいと思います。

例えば、正則化の話。
統計学とか機械学習の本を買えばおそらく前半10%以内に回帰の話と合わせて間違いなく載っているテーマかと思いますが、この正則化のエッセンスは簡単な数学ですが、ある程度どんな分野でも応用可能な話です。

なので、間違いなくある程度は勉強しておいたほうが良いと思います。
ただ、あまり深みに入って意味不明と頭を悩ませるぐらいなら、今の自分の限界と思って、他のことを勉強したり、実際にライブラリを使って遊んでみたりしたほうが、良いと思いますよ。

あと、ここからは蛇足です。
私見になりますが、誤差逆伝播法はそこそこ難しい数学だと思います。
例えば、同じく機械学習分野で出てくるカーネル法などと同じくらい難しいと思います。
ただ、機械学習の分野ではこれらを遥かに超えるほど難しい数学が求められることがままあります。

例えば、EM法やポリシーベースの強化学習のように「ただ」使うだけであれば、そう難しくないものでも、数学的にはlogの積分が難しいからKLダイバーシティを導入して、logの中に積分を突っ込んでしまうとかそういうアプローチが秘められていたりします。(もちろん、KLダイバーシティそのものにも数学的バックグラウンドがあったりと話し始めると結構深くなってきます。)

この辺りの話は確かに、あなたが仰るとおり解説を見ながら計算式を一つ一つ丁寧に追いかければ理解できなくはありません。
ただ、これはこれで一苦労ですし、それに説明してもらっても?となることも珍しくはありません。

本当の意味で機械学習の勉強をしようとするとどこまでも深い話に突っ込んでしまう傾向にあります。

ただ、これらを知っていると前述の通り、「応用」することができるようになるのでライブラリが使えるからOKかどうかはご自身のやりたいことの範囲で考えてください。

例えば、機械学習を扱う研究者になりたいのであれば避けては通れない道ですが、エンジニアであれば、ケースバイケースで不要なこともあります(いろんなことができるエンジニアと一点特化のエンジニアどちらが求められるかの問題です)。また、趣味の範囲であれば、それこそあなたの裁量次第かと。

投稿2017/08/15 15:19

elda

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問