2. 가중치 규제 추가

  1. L1 규제(= Lasso Regression) : 가중치의 절대값에 비례하는 비용이 추가 (가중치의 L1 노름(norm))
  2. L2 규제(= Ridge Regression) : 가중치의 제곱에 비례하는 비용이 추가 (가중치의 L2 노름(norm))

<L1 노름>

Untitled

<L2 노름>

Untitled

※ L2 노름은 가중치의 파라미터를 모두 제곱하여 더한 후 이 값의 제곱근을 구한 것이므로, L2 규제에서 추가되는 비용은 정확히는 L2 노름의 제곱이다.

※ L2 규제는 신경망에서 **가중치 감쇠(weight decay)**라고도 부른다.

원본 모델 불러오기

from keras.datasets import imdb
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)
import numpy as np
from keras import models
from keras import layers

def vectorize_sequences(sequences, dimension=10000):
    results = np.zeros((len(sequences), dimension))
    for i, sequence in enumerate(sequences):
        results[i, sequence] = 1.
    return results
train_data = vectorize_sequences(train_data)

model = models.Sequential([
    layers.Dense(16, activation='relu'),
    layers.Dense(16, activation='relu'),
    layers.Dense(1, activation='sigmoid')])

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

history_original = model.fit(train_data, train_labels,
                             epochs=20, batch_size=512, validation_split=0.4)