深度學習 六 優化

2021-08-28 05:32:22 字數 2742 閱讀 8253

1. 優化器(tensorflow)

1.1 tf.train.gradientdescentoptimizer --梯度下降

表示式:

# 傳入學習率,目標優化損失

tf.train.gradientdescentoptimizer(learning_rate).minimize(loss)

1.2 tf.train.momentumoptimizer--動量梯度下降

表示式:

# 優化損失函式

tf.train.momentumoptimizer(learning_rate).minimize(loss)

1.3 tf.train.adamoptimizer--自適應學習率變化

表示式:

# 自適應梯度下降

tf.train.adamoptimizer(learning_rate).minimize(loss)

1.4 總結:

a . tensorflow中的優化器

tf.train.gradientdescentoptimizer --

tf.train.adadeltaoptimizer --

tf.train.adagradoptimizer

tf.train.adagraddaoptimizer

tf.train.momentumoptimizer --

tf.train.adamoptimizer --

tf.train.ftrloptimizer

tf.train.proximalgradientdescentoptimizer

tf.train.proximaladagradoptimizer

tf.train.rmspropoptimizer     -- 

b. 各種優化器對比:

1)標準梯度下降法:

標準梯度下降先計算所有樣本彙總誤差,然後根據總誤差來更新權值

2)隨機梯度下降法:

隨機梯度下降隨機抽取乙個樣本來計算誤差,然後更新權值

3)批量梯度下降法:

批量梯度下降算是一種折中的方案,從總樣本中選取乙個批次(比如一共有10000個樣本,隨機選取100個樣本作為乙個batch),然後計算這個batch的總誤差,根據總誤差來更新權值。

2. 學習率動態變化

在模型不斷學習的過程中,訓練後期中模型的表現能力很強,此時應該降低學習率,使得模型能夠快速的接近目標。

學習率指數遞減:

# 學習率指數遞減

learning_rate = tf.train.exponential_decay(learning_rate,global_step,decay_steps,decay_rate)

'''引數說明:

learning_rate:學習率初始值,預設為0.1

global_step:當前訓練輪數,在定義時需要設定為不可訓練

decay_steps:批次大小

decay_rate:多少次更新一次學習率(總樣本/批次大小)

'''

3. 欠擬合與過擬合

1) 欠擬合

現象:模型不能夠捕捉資料的特徵,從而不能夠準確**

方法:① 新增特徵項,使得模型擁有更多了解資料的可能性;

② 減少正則化引數,構造複雜模型來**結果

2) 過擬合

現象:模型在訓練集上擁有非常好的表現,但在**集上表現不理想;

方法:① 增加資料集,降低模型的錯誤率;

② 正則化方法(代價函式增加正則項)

# 為引數w新增l2正則化項,命名為losses

tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))

# 計算損失

ce = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.arg_max(y_predict,1)))

# 新增正則化項,構成最終的模型損失

loss = ce + tf.add_n(tf.get_collection('losses'))

③ dropout(部分神經元工作)

# 在一層網路傳播中dropout應用

w1 = tf.variable(tf.truncated_normal([784,2000],stddev=0.1))

b1 = tf.variable(tf.zeros([2000])+0.1)

l1 = tf.nn.tanh(tf.matmul(x,w1)+b1)#啟用函式

l1_drop = tf.nn.dropout(l1,keep_prob)

# 注:在訓練中使用dropout,但在測試集上必須保證全部的神經元工作,即 keep_prob=1.0

深度學習六

接上 9.3 restricted boltzmann machine rbm 限制波爾茲曼機 假設有乙個二部圖,每一層的節點之間沒有鏈結,一層是可視層,即輸入資料層 v 一層是隱藏層 h 如果假設所有的節點都是隨機二值變數節點 只能取0或者1值 同時假設全概率分布p v,h 滿足boltzmann...

深度學習優化

二 損失函式 三 深度學習中遇到的問題 區域性最優 定義 對於目標函式f x 如果f x 在x上的值比在x鄰近的其他點的值更小,那麼f x 可能是乙個區域性最小值 local minimum 如果f x 在x上的值是目標函式在整個定義域上的最小值,那麼f x 是全域性最小值 global minim...

深度學習 優化方法

仍然是讀完deep learning之後的筆記和知識梳理,這些內容其實是偏理論層面的,後續的話可以結合 進行講解。dl關注的優化問題 尋找神經網路上的一組引數 顯著降低代價函式j j 通常包括整個訓練集上效能評估 er 經驗風險 和額外的正則化項 sr 結構風險 對於偏應用層面的可以直接看基本演算法...