成人免费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-07-24 08:04:24

神經網絡激活函數

2024-11-07 08:26:31

神經網絡激活函數信號

2024-12-02 01:10:04

神經網絡自然語言DNN

2024-11-15 13:20:02

2025-02-21 08:29:07

2024-10-28 00:38:10

2024-12-12 00:29:03

2024-09-20 07:36:12

2024-10-05 23:00:35

2024-07-17 09:32:19

2024-09-23 09:12:20

2024-12-03 08:16:57

2024-10-16 07:58:48

2024-08-01 08:41:08

2024-10-08 15:09:17

2024-10-08 10:16:22

2024-10-28 00:00:10

機器學習模型程度

2024-10-30 08:23:07

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99爱免费 | 国产伦精品一区二区三区高清 | 亚洲精品在线看 | 中文字幕 视频一区 | 欧美日韩电影免费观看 | 啪视频在线 | 国产不卡视频 | 韩国精品一区二区三区 | 日韩欧美操 | 亚洲综合久久精品 | 日韩在线视频免费观看 | 精品蜜桃一区二区三区 | 国产在线色| 黄视频网址| 秋霞电影院午夜伦 | 成人午夜网站 | 婷婷亚洲综合 | 欧美日韩在线观看一区二区三区 | 欧美一区二区三区在线看 | 精品国产久 | 黄色av免费网站 | 黄网站在线播放 | 国产精品成人在线观看 | 国产美女精品 | 国产精品片aa在线观看 | 综合久久久久久久 | 欧美日韩中文在线 | 天天干天天玩天天操 | 99在线精品视频 | 日韩一级| 国产在线精品一区二区三区 | 日本小电影在线 | 免费欧美 | 欧美日韩精品免费 | 久久av一区 | 中文一区| 国内精品久久精品 | 一区二区三区亚洲 | 亚洲精品在线免费观看视频 | 天天操妹子 | 久久久久久成人 |