AI:機械学習のモデルをどのように訓練しますか?

4828 ワード

1.Training:モデルのトレーニングはどうすればいいですか?
機械学習の一般的なトレーニングプロセスを理解すると、ラベルのサンプルがあることによって、すべての重みWeightと偏差Biasの理想値を調整(学習)し、確定する。
訓練の目標:損失関数を最小化する
(損失関数はすぐに紹介します。)
マシン学習アルゴリズムは訓練の過程で、複数のサンプルを検査し、最大限に損失を減らすモデルを探してみます。目標は損失(Loss)を最小化することです。
在这里插入图片描述
上の図は一般的なモデルトレーニングの一般的なプロセス(試行錯誤過程)です。
  • モデル:1つまたは複数の特徴を入力として返し、出力として予測(y')を返します。簡略化のために、1つの特徴を採用して予測モデルに戻ることを考慮してもよく、以下の式(bはbias、wはweight)
  • である。
    在这里插入图片描述
  • は損失を計算します。損失関数を通して、このパラメータ(bias、weight)の下のlossを計算します。
  • は、パラメータの更新を計算します。損失関数の値を検出し、パラメータのbias、weightのような新しい値を生成して、損失を最小にします。
  • 例えば,勾配降下法を用いて,全データセットwの可能な値の損失関数を計算することによって収束点を見出すために,この方法は効率が低すぎる。したがって,勾配によって損失のより小さい方向を見出し,反復することができる。
    TensorFlowコードクリを挙げて、上の式に対応してコードの中でこの線形モデルを定義します。
    
    y_output = tf.multiply(w,x) + b
    このモデルが住宅価格の予測に適用されると仮定すれば、y_Outputは予測の住宅価格で、xは入力の住宅の特徴値(住宅の位置、面積、階など)です。
    2.Loss Function:損失と損失関数
    損失は単一サンプルに対してモデル予測の正確さを示す数値表現である。
    モデルの予測が完全に正確であれば、損失はゼロであり、そうでなければ損失は大きい。
    トレーニングモデルの目標はすべてのサンプルから平均損失の「小さい」セットの重みと偏差を見つけることである。
    損失関数のターゲット:予測値と真実値の差を正確に見つける
    在这里插入图片描述
    図の赤い矢印は損失を表し、青い線は予測を表します。明らかに左モデルの損失が大きいです。右モデルの損失は小さいです。
    lossを決定するには、モデルは損失関数loss functionを定義しなければならない。例えば、線形回帰モデルは一般的に二乗誤差を損失関数として用い、論理回帰モデルは対数損失関数を用いる。
    正確な損失関数は、予測値を真実の値にずっと近づける効果を果たすことができ、予測値と真実値が等しい場合、loss値が最小となる。
    TensorFlowコードのクリを挙げて、コードの中で損失loss_を定義します。priceは住宅価格の予測時のlossを表しています。最小二乗法を損失関数として使用します。
    
    loss_price = tr.reduce_sum(tf.pow(y_real - y_output), 2)
    ここですrealは真実の値を表しています。Outputはモデル出力値(上式のy')を表しています。この差は負の値があるので、誤差に対して二乗を行います。具体的には最小二乗式を検索できます。
    3.Graadient Descent:勾配降下法
    勾配の低下を理解することは、山頂で一番速いスピードで下山することです。
    例えば、道士が山を下りて、どのように頂上で一番短い道を探して下山しますか?そして一番短い道の方向を確定します。
    原理的に凸形の問題は一番いい解を求めます。一番低いのは一つだけです。つまり、傾斜がちょうど0の位置しか存在しません。この最小値は損失関数の収束である。
    在这里插入图片描述
    全データセットの可能な値ごとの損失関数を計算することによって,収束点を見出す方法は効率が低すぎる。勾配降下法と呼ばれる機械学習の分野で非常に人気のあるより良い機構を研究した。
    グラジエント法の目標:グラジエントの一番速い方向を探します。
    勾配降下法の最初の段階は開始値(始点)を選択するためである。出発点は重要ではない。したがって、多くのアルゴリズムは直接に0に設定したり、ランダムに1つの値を選択したりします。以下の図は、0より少し大きい起点を選んだことを示しています。
    在这里插入图片描述
    そして,勾配降下法アルゴリズムは出発点における損失曲線の勾配を計算する。簡単に言えば、勾配は偏り導関数のベクトルである。どの方向の距離目標が「より近い」か「より遠い」かを知ることができます。損失は単一重みに対する勾配(図に示すように)は導関数に等しいことに注意してください。
    勾配はベクトルですので、以下の2つの特徴があります。
  • 方向
  • サイズ
  • 勾配は損失関数における成長の最も急激な方向を常に指し示している。勾配降下アルゴリズムは負の勾配の方向に沿って一歩前進し,損失を早く低減する。
    損失関数曲線上の次の点を決定するために,勾配降下法アルゴリズムは,勾配の大きさの一部を始点と加算する。
    在这里插入图片描述
    その後,勾配降下法はこのプロセスを繰り返し,徐々に最低点に近づく(方向が見つかりました
  • ランダム勾配降下法SGD:データが大きすぎて、一つのBatchが大きすぎて、反復は一つのサンプル(Batchは1)だけで、各batchの一つのサンプルがランダムに選択されていることをランダムに表しています。
  • 4.Learning Rate:学習速度
    例えば上の下山問題では、毎回下山の歩幅が長い。
    勾配ベクトルは方向と大きさを持つので、勾配降下法のアルゴリズムは学習速度(ステップサイズとも呼ばれることがある)というスカラーを勾配で掛けて、次の点の位置を決定する。これは超パラメータで、AIアルゴリズムのレートを調整します。
    例えば、勾配強度が2.5で学習速度が0.01である場合、勾配降下アルゴリズムは、前の点0.025から次の点として位置を選択する。
    超パラメータは、マシン学習アルゴリズムにおいて、プログラミング者が調整するためのつまみです。ほとんどのマシンでプログラミングを学ぶ人はかなりの時間をかけて学習速度を調整します。選択した学習速度が小さすぎると、長すぎる学習時間がかかります。
    在这里插入图片描述
    上の栗に続いて、勾配低下コードは以下の通りです。
    
    train_step = tf.train.GradientDescentOptimizer(0.025).minimize(loss_price)
    ここで勾配降下学習率を0.025に設定します。Gradient Descent Optimizer()はランダム勾配降下アルゴリズムです。priceは上の損失関数で得られたlossです。
    モデル、損失関数、勾配降下関数があれば、モデルの訓練段階ができます。
    
    Session = tf.Session()
    Session.run(init)
    for _ in range(1000):
    	Session.run(train_step, feed_dict={x:x_data, y:y_data}) 
    ここではforで固定のtrining回数を設定することができます。条件は損失関数の値が設定値より低い場合もあります。
    x_data y_dataは訓練用の実際のデータであり、x yは入出力のplacholderである(コードの詳細はTensorFlow API文書を参照)。
    5.拡張:BP神経ネットワークトレーニングプロセス
    BP(BackPropagation)ネットワークのトレーニングは、逆伝搬アルゴリズムのプロセスであり、データ情報の順方向伝搬と誤差Errorの逆伝搬の二つのプロセスからなる。
    逆伝搬アルゴリズムは神経ネットワークアルゴリズムの核心であり、その数学原理はチェーン式の導波法則である。
  • 順方向伝播過程:
  • 入力層は入力データを受信することにより、中間層(各隠れ層)ニューロンに伝達され、各ニューロンはデータ処理変換を行い、最後の隠蔽層を通じて出力層に伝達される。
  • 逆伝搬プロセス:
  • 正方向伝播後、真の値と出力によって誤差Errに値し、Errが設定値より大きい場合、実際の出力と期待出力の差が大きすぎる場合、誤差逆伝搬段階に入る。
    Errrは出力層を通して、誤差勾配が低下するように、上述のランダム勾配降下法SGDのように、各層パラメータ(Weightsのような)を逆方向に修正し、隠蔽層、入力層を層毎に反転させる。
    出力の誤差が所定値に減少するまで、順方向、逆方向に伝搬することにより、最大トレーニング回数に到達する。
    在这里插入图片描述
    ここでAIについて:どのようにマシン学習のモデルを訓練するかについての文章を紹介します。あなたのために役に立つと信じています。もっと多くの関連マシン学習の内容は私達の以前の文章を検索してください。または次の関連記事を引き続き閲覧してください。これからもよろしくお願いします。