Rumah  >  Artikel  >  Peranti teknologi  >  Terangkan dan tunjukkan strategi penyusunan Keciciran

Terangkan dan tunjukkan strategi penyusunan Keciciran

王林
王林ke hadapan
2024-01-22 18:12:191074semak imbas

Terangkan dan tunjukkan strategi penyusunan Keciciran

Keciciran ialah strategi penyelarasan yang mudah dan berkesan yang digunakan untuk mengurangkan pemasangan berlebihan rangkaian saraf dan meningkatkan keupayaan generalisasi. Idea utama adalah untuk membuang sebahagian daripada neuron secara rawak semasa proses latihan supaya rangkaian tidak terlalu bergantung kepada output mana-mana satu neuron. Penjatuhan rawak mandatori ini membolehkan rangkaian mempelajari perwakilan ciri yang lebih mantap. Dengan Tercicir, rangkaian saraf menjadi lebih teguh, boleh menyesuaikan diri dengan data baharu dengan lebih baik dan mengurangkan risiko overfitting. Kaedah regularisasi ini digunakan secara meluas dalam amalan dan telah ditunjukkan dapat meningkatkan prestasi rangkaian saraf dengan ketara.

Keciciran ialah teknik regularisasi yang biasa digunakan yang digunakan untuk mengurangkan overfitting rangkaian saraf. Ia melakukan ini dengan menetapkan secara rawak output beberapa neuron kepada 0 dengan kebarangkalian tertentu pada setiap sampel latihan. Khususnya, Keciciran boleh dilihat sebagai pensampelan rangkaian saraf secara rawak beberapa kali. Setiap pensampelan menjana subrangkaian berbeza di mana beberapa neuron diabaikan buat sementara waktu. Parameter dikongsi antara sub-rangkaian ini, tetapi oleh kerana setiap sub-rangkaian hanya melihat output subset neuron, mereka mempelajari perwakilan ciri yang berbeza. Semasa proses latihan, Dropout boleh mengurangkan saling kebergantungan antara neuron dan menghalang neuron tertentu daripada terlalu bergantung kepada neuron lain. Ini membantu meningkatkan keupayaan generalisasi rangkaian. Dan semasa menguji, Dropout tidak lagi berfungsi. Untuk memastikan nilai jangkaan tetap, output semua neuron didarab dengan nisbah tetap. Ini menghasilkan rangkaian yang meratakan output semua subrangkaian semasa latihan. Dengan menggunakan Dropout, overfitting boleh dikurangkan dengan berkesan dan prestasi serta keupayaan generalisasi rangkaian saraf boleh dipertingkatkan.

Kelebihan Keciciran ialah ia dapat mengurangkan risiko keterlaluan pemasangan dan meningkatkan prestasi generalisasi rangkaian saraf. Dengan membuang beberapa neuron secara rawak, Dropout boleh mengurangkan sinergi antara neuron, dengan itu memaksa rangkaian untuk mempelajari perwakilan ciri yang lebih mantap. Selain itu, Dropout juga boleh menghalang penyesuaian bersama antara neuron, iaitu, menghalang neuron tertentu daripada berfungsi hanya dengan kehadiran neuron lain, dengan itu meningkatkan keupayaan generalisasi rangkaian. Dengan cara ini, rangkaian saraf lebih mampu menyesuaikan diri dengan data yang tidak kelihatan dan lebih teguh kepada data yang bising. Oleh itu, Dropout adalah kaedah regularisasi yang sangat berkesan dan digunakan secara meluas dalam pembelajaran mendalam.

Walau bagaimanapun, walaupun Dropout digunakan secara meluas dalam rangkaian neural dalam untuk meningkatkan keupayaan generalisasi model dan mengelakkan overfitting, ia juga mempunyai beberapa kelemahan yang perlu diberi perhatian. Pertama, Keciciran akan mengurangkan kapasiti berkesan rangkaian saraf. Ini kerana semasa proses latihan, output setiap neuron ditetapkan kepada 0 dengan kebarangkalian tertentu, sekali gus mengurangkan keupayaan ekspresif rangkaian. Ini bermakna rangkaian mungkin tidak dapat mempelajari corak dan perhubungan yang kompleks dengan secukupnya, mengehadkan prestasinya. Kedua, Dropout memperkenalkan sejumlah bunyi bising, yang mungkin mengurangkan kelajuan latihan dan kecekapan rangkaian. Ini kerana dalam setiap sampel latihan, Dropout akan membuang sebahagian neuron secara rawak, menyebabkan algoritma perambatan belakang rangkaian terganggu, sekali gus meningkatkan kerumitan dan overhed masa latihan. Selain itu, Dropout memerlukan kaedah pemprosesan khas untuk mengendalikan sambungan antara lapisan yang berbeza dalam rangkaian untuk memastikan ketepatan dan kestabilan rangkaian. Memandangkan Dropout membuang beberapa neuron, sambungan dalam rangkaian akan menjadi jarang, yang mungkin membawa kepada struktur rangkaian yang tidak seimbang, seterusnya menjejaskan prestasi rangkaian. Secara ringkasnya, untuk mengatasi masalah ini, penyelidik telah mencadangkan beberapa kaedah Keciciran yang lebih baik. Satu pendekatan ialah menggabungkan Keciciran dengan teknik regularisasi lain, seperti regularisasi L1 dan L2, untuk meningkatkan keupayaan generalisasi rangkaian. Dengan menggunakan kaedah ini bersama-sama, anda boleh mengurangkan risiko overfitting dan meningkatkan prestasi rangkaian pada data yang tidak kelihatan. Di samping itu, beberapa kajian telah menunjukkan bahawa kaedah berasaskan Keciciran boleh meningkatkan lagi prestasi rangkaian dengan melaraskan kadar Keciciran secara dinamik. Ini bermakna semasa proses latihan, kadar Keciciran boleh dilaraskan secara automatik mengikut situasi pembelajaran rangkaian, dengan itu mengawal tahap overfitting dengan lebih baik. Melalui kaedah Keciciran yang dipertingkatkan ini, rangkaian boleh meningkatkan prestasi generalisasi dan mengurangkan risiko overfitting sambil mengekalkan kapasiti yang berkesan.

Di bawah ini kami akan menggunakan contoh mudah untuk menunjukkan cara menggunakan regularisasi Dropout untuk meningkatkan prestasi generalisasi rangkaian saraf. Kami akan menggunakan rangka kerja Keras untuk melaksanakan model perceptron berbilang lapisan (MLP) berasaskan Dropout untuk mengklasifikasikan digit tulisan tangan.

Pertama, kita perlu memuatkan set data MNIST dan praproses data. Dalam contoh ini, kami akan menormalkan data input kepada nombor nyata antara 0 dan 1 dan menukar label output kepada pengekodan satu panas. Kodnya adalah seperti berikut:

import numpy as np
from tensorflow import keras

# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

# 将输入数据归一化为0到1之间的实数
x_train = x_train.astype(np.float32) / 255.
x_test = x_test.astype(np.float32) / 255.

# 将输出标签转换为one-hot编码
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)

Seterusnya, kami mentakrifkan model MLP berdasarkan Dropout. Model ini terdiri daripada dua lapisan tersembunyi dan lapisan keluaran, setiap lapisan tersembunyi menggunakan fungsi pengaktifan ReLU, dan lapisan Keciciran digunakan selepas setiap lapisan tersembunyi. Kami menetapkan kadar keciciran kepada 0.2, yang bermaksud menjatuhkan 20% neuron secara rawak pada setiap sampel latihan. Kodnya adalah seperti berikut:

# 定义基于Dropout的MLP模型
model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=[28, 28]),
    keras.layers.Dense(128, activation="relu"),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(64, activation="relu"),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10, activation="softmax")
])

最后,我们使用随机梯度下降(SGD)优化器和交叉熵损失函数来编译模型,并在训练过程中使用早停法来避免过拟合。代码如下:

# 定义基于Dropout的MLP模型
model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=[28, 28]),
    keras.layers.Dense(128, activation="relu"),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(64, activation="relu"),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10, activation="softmax")
])

在训练过程中,我们可以观察到模型的训练误差和验证误差随着训练轮数的增加而减小,说明Dropout正则化确实可以减少过拟合的风险。最终,我们可以评估模型在测试集上的性能,并输出分类准确率。代码如下:

# 评估模型性能
test_loss, test_acc = model.evaluate(x_test, y_test)

# 输出分类准确率
print("Test accuracy:", test_acc)

通过以上步骤,我们就完成了一个基于Dropout正则化的多层感知机模型的构建和训练。通过使用Dropout,我们可以有效地提高模型的泛化性能,并减少过拟合的风险。

Atas ialah kandungan terperinci Terangkan dan tunjukkan strategi penyusunan Keciciran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:163.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam