[深さ学習]3ニューラルネットワーク

18264 ワード

1.マグネトロン

  • ニューラルネットワークを構成する最も基本的な構造
  • ニューロンとシナプス
  • ニューロン:神経系を構成する細胞
  • ナプキン:ニューロンとニューロンを接続(刺激を入力することで他のニューロンに情報を伝える)
  • 入力
  • :複数の刺激からなる
  • 入力は、標準値(すべてではない)
  • に達するか超えなければならない.
  • スーパーコンデンサ:最小ニューラルネットワーク単位
  • 、入力値とアクティブ化関数によって出力値を次の単位に伝達

    1)重み付け、重み付け、買手、アクティブ化関数


  • ろんりかいふく
    y=ax+b勘定科目の勘定科目y=wx+b(wは重み、bはバイヤー)
  • 重み付け:
  • 買手(バイアス):オフセット
  • 重み付け和(重み付け和):入力値xに重み付けwを乗算し、顧客bに
  • を乗算する.
  • アクティブ化関数(アクティブ化):重み付け和の結果から0と1
  • を判断する.

    *光ファイバの制限



    1本の
  • 直線で色を区別できない
  • *XOR問題

  • ラスタ:コンピュータの2つのデジタル値、すなわち0と1を入力し、1つの値を出力回路

  • AND,OR演算:単一直線区分結果値
  • XOR:不可分
  • 2)多層マグネトロン


  • 座標平面自体を変更すればよい
  • XORトラブルシューティング:1回に2つのホストを計算
  • 非表示レイヤ
  • 非表示レイヤがツイストプレーンを生成した結果
  • <1>多層マグネトロン設計

  • パーセプトロンは、重み付けとバイヤー
  • をチベット層に送信した.
  • 非表示レイヤに収集された値は信号関数(σ)
  • 結果を最終値に送信
  • ノード(ノード):隠蔽層の中間局(n 1,n 2)に集まる
  • 単一ファイバの値の計算
    n1 = σ(x1w11 + x2w21+b1)
    n2 = σ(x1w12 + x2w22 + b2)
  • 出力レイヤの値の計算
  • 1台あたり
  • の重量とお客様


  • <2>XORトラブルシューティング






    2479172 n 1 gate:AND gateの正逆値出力ボックスnND(負AND)Gate
  • n2 gate : OR gate
  • y gate : AND gate
  • <3>コード

    import numpy as np
    
    w11 = np.array([-2,-2])
    w12 = np.array([2,2])
    w2 = np.array([1,1])
    
    b1 = 3
    b2 = -1
    b3 = -1
    
    def MLP(x,w,b): #퍼셉트론 함수
        y = np.sum(w*x)+b
        if y <= 0:
            return 0
        else:
            return 1
            
    def NAND(x1, x2):
        return MLP(np.array([x1,x2]), w11, b1)
    
    def OR(x1, x2):
        return MLP(np.array([x1, x2]), w12, b2)
    
    def AND(x1, x2):
        return MLP(np.array([x1, x2]), w2, b3)
    
    def XOR(x1, x2):
        return AND(NAND(x1,x2), OR(x1,x2))
     
    for x in [(0, 0), (1, 0), (0, 1), (1, 1)]:
        y = XOR(x[0], x[1])
        print("입력 값: " + str(x) + " 출력 값: " + str(y))
    def MLP2(x, w, b):
        ws = x.dot(w) + b
        return ws > 0
    
    w1 = np.array([[-0.5,0.5],[-0.5,0.5]])
    w2 = np.array([0.5,0.5])
    
    b1 = np.array([0.7,-0.2])
    
    b2 = np.array([-0.7])
    
    X = np.array([(0, 0), (1, 0), (0, 1), (1, 1)])
    for x in X:
        n = MLP2(x, w1, b1)
        y = MLP2(n, w2, b2)
    
        print("입력 값: " + str(n) + " 출력 값: " + str(y))

    3)誤差逆伝搬(逆伝搬)

  • ニューラルネットワーク内部重み付け補正
  • 傾斜降下法の拡張概念
  • 多層ファイバネットワークにおける最適化プロセス
  • 任意重み付け声明後,結リンゴ値を用いて誤差を求める.誤差は最小点に移動し続けます
  • 誤差最小点:
  • 1ππ単層ファイバ:入力層、出力層のみからなる

    2階建て▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼96
  • プロセス
    24791721ℋ任意の初期重み付け(W)後の計算結果(y)
  • 計算結果と期待値との誤差はを求める.
    24791723σチルトダウン法により、前方重み付け値を誤差が小さくなる方向に更新する
  • は、傾斜0の方向に
  • 移動する.
  • の重みから傾斜を減算と、重みは一定の状態
  • に保たれる.
    誤差が小さくならないまで、上記の手順を繰り返します.

    アルゴリズム#アルゴリズム#



    1π環境変数:入力値、目標結果値を含むデータセット、学習率などを指定します.また,アクティブ化関数,重みなども宣言した.
    2朕運行神経ネットワーク:初期値を入力し、関数と重み付けを活性化して欠品値を発生する
    3ππ結果を実際の値と比較する:測定誤差
    4朕は逆伝播を実行する:出力層と非表示層の重みを修正する
    5π▼▼出力結果

    2.深い学習

  • 多層ファイバ+誤差逆伝搬=ニューラルネットワーク
  • ニューラルネットワークを構築すれば、人工知能の性能は向上しますか?
  • に行かない

    1)傾斜消失問題と活性化関数


  • 傾斜消失問題(消失勾配)
  • の重みを変更するには微分(傾斜)
  • が必要です.
  • 層を増加させると、逆伝搬による傾斜値が徐々に小さくなり、第1層に到達すると傾斜が消失する.
    勘定科目の勘定科目としては、信号関数が使用されます.微分値が1未満のため、乗算を続行すると0に近づきます.
  • 複数のアクティブ化関数の導入

    24791721π超共通接線関数
  • 信号関数範囲拡張:-1~1拡張
  • は依然として1未満の値
  • が存在する.
    24791722υυυυυυυ関数
  • 信号関数の代替:最も一般的な
  • x<0:すべての値が0で、
  • x>0:すべての値がy=x
    勘定科目の勘定科目の微分値は1です.
    АААААААААААААА
  • 24791723πソフトプラス関数
  • レイリー関数変形
  • はリリルが0になった瞬間
  • を緩和した.

    2)高級傾斜降下法

  • 傾斜降下:重み付け更新のためにデータ全体を微分する必要があるため、計算量は非常に大きい.
    プレミアムチルトダウン法登場2479182

    <1>確率傾斜降下法


    すべてのデータではなく、ランダムに抽出されたデータの一部を使用するため、更新をより迅速かつ頻繁に行うことができます.
  • 傾斜降下法:計算量が多すぎるため速度が遅い;最適解が見つかるまで最適化過程は
  • を停止しない.
  • は速度が速く、最適値
  • に近い.

    <2>運動量

  • 傾斜降下法による弾性増加
  • のチルトダウン法によりチルトを求める、誤差補正を行う前に、前の補正値と方向(+,-)を参照し、一定割合の値
  • のみを同一方向に補正.
  • 、すなわち、次の値を一定の割合でのみ決定し、慣性効果を生じる.
  • <3>深さ学習駆動のための高度な傾斜降下法


    3-1)確率傾斜降下法(SSG)

  • 概要:
  • ランダムに抽出されたデータをより頻繁に、より迅速に更新する方法
  • 効果:速度向上
  • ケラス用法:keras.optimizers.SGD(lr=0.1)
  • 3-2)「親」(Momentum)

  • 概要:
  • 慣性方向を考慮しながら振動と幅を低減
  • 効果:精度向上
  • ケラス用法:keras.optimizers.SGD(lr=0.1, momentum=0.9)
  • 3-3)ネストロフ基準(NAG)

  • 概要:データムを移動する方向に移動してからランプを計算します.
  • 不要な移動を削減
  • 効果:精度向上
  • ケラス用法:keras.optimizers.SGD(lr=0.1, momentum=0.9, nesterov=True)
  • 3-4)Adagrad

  • 概要:変数の更新が頻繁である場合、学習を減らすことによって移動速度
  • を調整することができる.
  • 効果:歩幅サイズが
  • 改善
  • ケラス用法:keras.optimizers.Adagrad(lr=0.01, epsilon=1e-6)
  • :epsilon、rho、減衰などのパラメータを変更せずに直接使用するを参照してください.АААААААААААААА
  • 3-5)RMSProp

  • 概要:アダグラード歩幅感度
  • を改善
  • 効果:歩幅サイズが
  • 改善
  • ケラス用法:keras.optimizers.RMSProp(lr=0.01, rho=0.9, epsilon=1e-6, decay=0.0)
  • 3-6)アダム(Adam)

  • 概要:モダン+アルム濃縮コーヒー
  • 効果:精度とステップサイズの向上
  • ケラス用法:keras.optimizers.Adam(lr=0.01, beta_1 = 0.9, beta_2=0.999, epsilon=1e-6, decay=0.0)