成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

終于把神經網絡中的正則化技術搞懂了!!

人工智能
模型在訓練過程中會定期在驗證集上進行評估,如果驗證集上的損失開始增大(即驗證集的性能變差),則認為模型可能已經過擬合。早停法會在驗證損失不再下降時停止訓練,以防止模型繼續在訓練集上過度擬合。

大家好,我是小寒

今天給大家分享神經網絡中常用的正則化技術。

神經網絡中的正則化技術是用于防止模型過擬合的一系列方法

過擬合通常發生在模型在訓練數據上表現得很好,但在測試數據上表現不佳,這意味著模型在訓練過程中學習到了數據中的噪聲或細節,而非通用的模式。

神經網絡中常用的正則化技術包括

  • 早停法
  • L1 和 L2 正則化
  • Dropout
  • 數據增強
  • 添加噪聲
  • Batch Normalization

早停法

早停法是一種簡單但非常有效的正則化技術。

模型在訓練過程中會定期在驗證集上進行評估,如果驗證集上的損失開始增大(即驗證集的性能變差),則認為模型可能已經過擬合。

早停法會在驗證損失不再下降時停止訓練,以防止模型繼續在訓練集上過度擬合。

圖片

import tensorflow as tf

# Creating a simple neural network model
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(64, activatinotallow='relu', input_shape=(100,)),
    tf.keras.layers.Dense(32, activatinotallow='relu'),
    tf.keras.layers.Dense(1, activatinotallow='sigmoid')
])

# Compile the model
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Using EarlyStopping callback
early_stopping = tf.keras.callbacks.EarlyStopping(
    mnotallow='val_loss',  # Monitoring validation loss
    patience=5,  # Number of epochs with no improvement to wait before stopping
    restore_best_weights=True  # Restores the weights of the best epoch
)

# Train the model with early stopping
model.fit(X_train, y_train, validation_split=0.2, epochs=100, callbacks=[early_stopping])

L1 和 L2 正則化

L1正則化

import tensorflow as tf
from tensorflow.keras import regularizers

# Creating a simple neural network model with L1 regularization
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(64, activation='relu', input_shape=(100,),
                          kernel_regularizer=regularizers.l1(0.01)),  # L1 Regularization
    tf.keras.layers.Dense(32, activation='relu',
                          kernel_regularizer=regularizers.l1(0.01)),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

# Compile the model
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Summary of the model
model.summary()

L2正則化

L2 正則化則在損失函數中加入權重平方和作為懲罰項,其公式為

正則化通過懲罰大權重的參數,迫使權重的分布更加均勻,防止模型對訓練數據中的特定特征過于敏感。

它不會像L1那樣產生稀疏解,但可以有效控制模型的復雜度。

import tensorflow as tf
from tensorflow.keras import regularizers

# Creating a neural network model with L2 regularization
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(64, activation='relu', input_shape=(100,),
                          kernel_regularizer=regularizers.l2(0.01)),  # L2 Regularization
    tf.keras.layers.Dense(32, activation='relu',
                          kernel_regularizer=regularizers.l2(0.01)),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

# Compile the model
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Summary of the model
model.summary()

Dropout

Dropout 是一種非常流行的正則化方法,尤其在深度神經網絡中。

訓練過程中,Dropout 隨機地“關閉”一部分神經元及其連接,使得網絡在每次訓練迭代中只使用部分神經元進行前向傳播和反向傳播。

Dropout 可以防止神經元之間的共適應性,提高網絡的泛化能力。

圖片圖片


import tensorflow as tf

# Creating a neural network model with Dropout
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(128, activatinotallow='relu', input_shape=(100,)),
    tf.keras.layers.Dropout(0.5),  # 50% Dropout
    tf.keras.layers.Dense(64, activatinotallow='relu'),
    tf.keras.layers.Dropout(0.5),  # 50% Dropout
    tf.keras.layers.Dense(10, activatinotallow='softmax')
])

# Compile the model
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# Summary of the model
model.summary()

數據增強

數據增強是通過對訓練數據進行一些隨機變換(如旋轉、翻轉、縮放、裁剪等),人為地擴充數據集的規模,使模型能夠看到更多的“不同”的數據,從而減少過擬合。

這些變換不會改變數據的標簽,但會增加訓練數據的多樣性,迫使模型對不同的輸入具有更強的魯棒性。

圖片圖片


from tensorflow.keras.preprocessing.image import ImageDataGenerator

# Create an ImageDataGenerator with augmentation
datagen = ImageDataGenerator(
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest'
)

# Example of applying the augmentation to an image
# Assuming 'images' is a numpy array of images
augmented_images = datagen.flow(images, batch_size=32)

# Use the augmented data for training
model.fit(augmented_images, epochs=10)

添加噪聲

在訓練過程中,向輸入或隱藏層的神經元加入隨機噪聲,以增強模型的魯棒性。

例如,可以向輸入數據中加入高斯噪聲或其他分布的噪聲。

這樣模型可以在面對真實數據中的擾動或噪聲時表現得更好,從而提升泛化能力。

圖片圖片


Batch Normalization

批歸一化(Batch Normalization)也是一種廣泛使用的正則化技術,它的主要目的是解決訓練過程中的“內部協變量偏移”,即網絡的每一層輸入分布在訓練過程中不斷變化的問題。

BN 將每一批數據的輸入進行歸一化,使得輸入數據的均值為0,方差為1,然后再對其進行縮放和平移:

責任編輯:武曉燕 來源: 程序員學長
相關推薦

2024-09-12 08:28:32

2024-10-17 13:05:35

神經網絡算法機器學習深度學習

2024-11-07 08:26:31

神經網絡激活函數信號

2024-07-24 08:04:24

神經網絡激活函數

2024-12-02 01:10:04

神經網絡自然語言DNN

2024-10-28 00:38:10

2024-11-15 13:20:02

2024-09-20 07:36:12

2024-12-12 00:29:03

2025-02-21 08:29:07

2024-10-05 23:00:35

2024-07-17 09:32:19

2024-09-23 09:12:20

2024-10-16 07:58:48

2024-12-03 08:16:57

2024-08-01 08:41:08

2024-10-08 15:09:17

2024-10-08 10:16:22

2025-01-20 09:21:00

2024-10-28 15:52:38

機器學習特征工程數據集
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 夜夜久久| 中文av电影 | 久久久久久国产精品免费免费狐狸 | 午夜一区| 亚洲一区三区在线观看 | 国产aⅴ精品 | 亚洲欧美日本在线 | 国产免费一级片 | 手机av在线 | 久久黄视频 | 欧美日韩中文字幕 | 免费看黄视频网站 | 日韩三级 | 一级片免费在线观看 | 夜夜草天天草 | 国产精品日日做人人爱 | 91最新入口| 黑色丝袜三级在线播放 | 欧美成人自拍 | 亚洲每日更新 | 久久久久久一区 | 中文字幕在线不卡 | 成人av鲁丝片一区二区小说 | 亚洲 中文 欧美 日韩 在线观看 | 自拍视频国产 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 成人欧美一区二区三区 | 91高清免费观看 | 天天欧美| 国产精品日韩 | 伊人久久精品 | 日韩av一区二区在线观看 | 久久999| 91精品在线看 | 久草在线 | 国产免费福利小视频 | 精品一区久久 | 亚洲精品视频在线看 | 午夜天堂精品久久久久 | 久草免费在线视频 | 成人不卡视频 |