Zero-based entry machine learning

一:機械学習とは何か、そしてなぜ機械学習が必要なのか

機械学習とは何か
2 つの例を見てみましょう。

私たちはどのようにして「猫」という動物を認識したのか

猫を見たことがなく(小さな赤ちゃんのように)、語彙に「猫」という言葉すらない人を想像してみてください。ある日、その人が毛むくじゃらの動物を見ます。

この時点では、それが何なのか分かりません。そこであなたは「猫」だと教えます。すると、赤ちゃんはこれが猫だと覚えるかもしれません。

しばらくして、またこの動物を見かけました。

あなたはこれも猫だと教えます。彼もまたこれが猫だと覚えました。

そしてさらにしばらく後、別の動物を見かけました。

この時、彼は自分から「猫」を見たと伝えます。

以上が、私たちが世界を理解するための基本的な方法、パターン認識です。人は多くの経験を通じて結論を導き出し、それが猫であると判断します。

このプロセスで、私たちはサンプル(さまざまな猫)に触れることで猫の特徴を学びます(人は読むことで学び、鳴くこと、耳が 2 つ、足が 4 本、尻尾が 1 つ、ひげがあることを観察して結論を導きます)。そうして猫が何かを認識できるようになるのです。

npm パッケージがテスト用パッケージかどうかをどのように判定するのか

友人のコードを掲載します。

SELECT * FROM
tianma.module_xx
WHERE
pt = TO_CHAR(DATEADD(GETDATE(), -1, 'dd'), 'yyyymmdd')
AND name NOT LIKE '%test%'
AND name NOT LIKE '%demo%'
AND name NOT LIKE '%test%'
AND keywords NOT LIKE '%test%'
AND keywords NOT LIKE '%test%'
AND keywords NOT LIKE '%demo%'
明らかに、判定方法はモジュールの name と keywords に test、demo、テストの 3 つの文字列が含まれているかどうかです。含まれていればテストモジュールとみなします。このルールをデータベースに伝え、データベースがテスト以外のモジュールをフィルタリングしてくれました。

猫かどうかを識別することも、モジュールがテスト用かどうかを識別することも、本質的には同じです。どちらも特徴を探しているのです。

猫の特徴:鳴く、耳 2 つ、足 4 本、尻尾 1 つ、ひげ
テストモジュールの特徴:test、demo、テスト
さらに特徴をプログラム的に表現します。

猫の特徴 Call: true, Ears: 2, Legs: 4, Tail: 1, Whiskers: 10
テストモジュールの特徴:test: count>0, demo: count >0, test: count > 0
これらの特徴があれば、人間も機械も猫やテストモジュールを正しく識別できます。

機械学習のシンプルな理解は、特徴と特徴の重みを通じてデータを分類することです。(より理解しやすくするため、こちらを参照してください:AiLearning/1. Machine Learning Basics.md at master apachecn/AiLearning GitHub)

なぜ機械による認識が必要なのか
理由は、ある分類タスクの特徴の数が膨大になると、if else のような単純な方法では分類が困難になるからです。たとえば、よく使われる商品レコメンデーションアルゴリズムでは、ある商品がユーザーに適しているかどうかを判断するために、数百から数千もの特徴の候補があります。

二:どのように機械をトレーニングし、モデルを獲得するのか
データ準備
データ準備は、機械学習タスク全体の時間の 75% 以上を占めることがあり、最も重要かつ最も困難な部分です。主に以下の作業が含まれます。

基礎データの収集
外れ値のクリーニング
特徴量エンジニアリングによる特徴の選定
データのラベリング
アルゴリズム準備
データに適合する関数を用意します:y=f(x)

たとえば、線形関数は一次元関数です:y=ax+b

アルゴリズム評価
見つかった a と b の値が適切かどうかを判断するには、評価関数が必要です。

評価関数は、トレーニングされたパラメータと実際の値の差(損失値)を数値化します。たとえば、次の図のように。

右側の青い線の方が実際のデータポイントにより近くなっています。

最も一般的な損失評価関数は平均二乗誤差関数です。予測値と実際の値の差の平方和を計算することで、予測値の質を判断します。

上図のように、サンプルの黄色い円の座標は以下の通りです。

[

[x1, y1],
[x2, y2],
[x3, y3],
[x4, y4],
[x5, y5],
[x6, y6]
],

青い線が予測する座標は以下の通りです。

[

[x1, y'1],
[x2, y'2],
[x3, y'3],
[x4, y'4],
[x5, y'5],
[x6, y'6]
],

すると、損失値は以下のようになります。

const cost = ((y'1-y1)^2 + (y'2-y2)^2 + (y'3-y3)^2 + (y'4-y4)^2 + (y'5-y5 )^2 + (y'6-y6)^2 ) / 6
アルゴリズムトレーニング
適切な a, b の値をどのように見つけるか:放物線の最下点

上記の線形関数を例に取ると、トレーニングアルゴリズムは実際には適切な a, b の値を探しています。数の大海原から a と b の値をランダムに探していては、決して見つからないでしょう。ここで勾配降下法を使って a と b の値を求める必要があります。

目標を改めて明確にします。上記の損失値の計算式を y=ax+b で置き換えます。

// function 2
const cost = (((a*x1+b)-y1)^2 + ((a*x2+b)-y2)^2 + ((a*x3+b)-y3)^2 + ((a* x4+b)-y4)^2 + ((a*x5+b)-y5)^2 + ((a*x6+b)-y6)^2 )/ 6
目標は cost を最小化する a と b の値のセットを見つけることです。この目標があれば、ずっと扱いやすくなります。

中学校で習った放物線関数、つまり一元二次方程式を覚えていますか:y = ax^2+bx+c

上記の cost 関数は長く見えますが、実はちょうど二次関数になっています。そのグラフはだいたいこのようになります。

最下点の a と b の値を見つければ、目標達成です。

どのようにして放物線の最下点に到達したかを知るのか:放物線の最下点での傾きは 0 です

a の値をランダムに 1 に初期化したとすると、現在の点は放物線の左上に位置し、最下点(最小コスト)からはまだ遠い状態です。

グラフを見ると、a の値を増やせば最下点に近づけることが分かります。しかし図を読めないコンピューターにはそれができません。ここで、本記事で最も複雑な数学知識を導入します:導関数です。ある点での接線の傾き値が、その点における放物線の導関数です。上図の最下点(傾きが 0 の地点)に示されています。

この導関数から、その位置での接線(赤い斜線)の傾きを計算できます。傾きが負であれば、a が小さすぎるので増やして最下点に近づく必要があります。逆に、傾きが正であれば、最下点を通り過ぎたことを意味するので、減らして最下点に近づく必要があります。

コスト関数の導関数をどのように求めるのか

展開せず、コードを見てください。キーワード:偏導関数、合成関数の微分

// function 3
// a パラメータの偏導関数
const costDaoA = (((a*x1+b)-y1)*2*x1 + ((a*x2+b)-y2)*2*x1 + ((a*x3+b)-y3)*2* x1 + ((a*x4+b)-y4)*2*x1 + ((a*x5+b)-y5)*2*x1 + ((a*x6+b)-y6)*2*x1 ) / 6

// b パラメータの偏導関数
const costDaoB = (((a*x1+b)-y1)*2 + ((a*x2+b)-y2)*2 + ((a*x3+b)-y3)*2 + ((a* x4+b)-y4)*2 + ((a*x5+b)-y5)*2 + ((a*x6+b)-y6)*2 )/ 6
つまり、a と b の値を costDaoA 関数に代入すれば傾きが得られ、それがパラメータ a をどのように調整して最下点に近づけるかをガイドします。

同様に、costDaoB はパラメータ b をどのように変更して最下点に近づくかをガイドします。

500 回ループさせましょう

このように 500 回サイクルを繰り返せば、ほぼ最下点に到達し、適切な a, b の値が得られます。

モデル獲得
a と b の値が得られたら、y=ax+b というモデルが完成します。このモデルで予測を行うことができます。

三:実践してみよう、簡単なものから始める:線形回帰
線形回帰とは何か
コオロギは涼しい天気よりも暑い天気の方がより頻繁に鳴くことは古くから知られています。温度と 1 分あたりの鳴き声回数の表を記録し、Excel で次の図を描きました(このケースは Google TensorFlow の公式チュートリアルからのものです)。

とても分かりやすいですね。これらの赤い点はほぼ一直線上に並んでいます。

これらのデータの分布は線形であると考え、この直線を引くプロセスが線形回帰です。この曲線を使えば、任意の温度に対する鳴き声回数を正確に予測できます。

ブラウザで線形回帰のデモを実行する
アドレス:Test Gradient Descent
https://jshare.com.cn/feeqi/CtGy0a/share?spm=ata.13261165.0.0.6d8c3ebfIOhvAq

可視化には Highcharts を使用しており、75% の時間を節約するために Highcharts のデフォルトデータポイントを直接使用しています。
https://www.highcharts.com.cn/demo/highcharts/scatter

トレーニングが完了すると、青い線が描画されてグラフに重ね描きされ、同時に各トレーニングでの a と b の値の損失率の推移も追加されます。機械学習 / 自然言語処理 / 画像処理 / データマイニング関連のバックグラウンドを持つ学生からの応募をお待ちしています。興味のある方は dehong.gdh@alibaba-inc.com まで履歴書をお送りください。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.