
6.4 正则化
189
但是相应地,抑制过拟合的技巧也很重要。
6.4.1
过拟合
发生过拟合的原因,主要有以下两个。
•
模型拥有大量参数、表现力强。
•
训练数据少。
这里,我们故意满足这两个条件,制造过拟合现象。为此,要从
MNIST
数据集原本的60000 个训练数据中只选定 300个,并且,为了增加网
络的复杂度,使用7 层网络(每层有 100 个神经元,激活函数为
ReLU
)。
下面是用于实验的部分代码(对应文件在
ch06/overfit_weight_decay.py
中)。首先是用于读入数据的代码。
(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True)
#
为了再现过拟合,减少学习数据
x_train = x_train[:300]
t_train = t_train[:300]
接着是进行训练的代码。和之前的代码一样,按
epoch
分别算出所有训
练数据和所有测试数据的识别精度。
network = MultiLayerNet(input_size=784, hidden_size_list=[100, 100, 100,
100, 100, 100], output_size=10)
optimizer = SGD(lr=0.01) #
用学习率为
0.01
的
SGD
更新参数
max_epochs = 201
train_size = x_train.shape[0]
batch_size = 100
train_loss_list ...