Основы МЛП

  • Цель: создать ванильные нейронные сети (многослойный персептрон) для простых задач регрессии/классификации с помощью Keras.

Структуры МЛП

  • Каждая модель MLP состоит из одного входного слоя, нескольких скрытых слоев и одного выходного слоя.
  • Количество нейронов в каждом слое не ограничено.

  • Количество входных нейронов: 3
  • Количество скрытых нейронов: 4
  • Количество выходных нейронов: 2

  • Количество входных нейронов: 3
  • Количество скрытых нейронов: (4,4)
  • Количество выходных нейронов: 1

MLP для задач регрессии

  • Когда цель (y) непрерывна (реальна)
  • Для функции потерь и метрики оценки обычно используется среднеквадратическая ошибка (MSE).
from keras.datasets import boston_housing
(X_train,y_train),(X_test,y_test) = boston_housing.load_data()

Наборы данных из Кераса

Документ: https://keras.io/datasets/

print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)

1. Создание модели

  • созданный с последовательным классом
  • Изначально модель сама по себе пуста. Завершается «добавлением» дополнительных слоев и компиляцией
  • Документ: https://keras.io/models/sequential/
from keras.models import Sequential
model = Sequential()

1–1. Добавление слоев

  • Слой Keras можно добавить в модель
  • добавление слоев похоже на складывание блоков лего один за другим
  • Документ: https://keras.io/layers/core/
from keras.layers import Activation, Dense
# keras model witth two hidden layer with 10 neurons each
model.add(Dense(10,activation=None, input_shape = (13,))) # input layer => input_shape should be explicitly designated
model.add(Activation('sigmoid'))
model.add(Dense(10)) # Hidden layer => only output dimension should be designated
model.add(Activation('sigmoid'))
model.add(Dense(10))# Hidden layer => only output dimension should be designated
model.add(Activation('sigmoid'))
model.add(Dense(1)) # Output layer => output dimension = 1 since it is regression problem
# this is equivalent to the above code block
model.add(Dense(10, input_shape = (13,), activation= 'sigmoid'))
model.add(Dense(10, activation= 'sigmoid'))
model.add(Dense(10, activation= 'sigmoid'))
model.add(Dense(1))

1–2. Компиляция модели

  • Модель Кераса должна быть «скомпилирована» до обучения.
  • Должны быть обозначены виды потери (функция) и оптимизатор
*Doc (optimizers): https://keras.io/optimizers/
 
   *Doc (losses): https://keras.io/losses/
from keras import optimizers
sgd = optimizers.SGD(lr = 0.01) # stochastic gradient decent optimizer
model.compile(optimizer = sgd, loss = 'mean_squared_error', metrics = ['mse'])    # for regression problems, mean squared error (MSE) is often employed

Краткое описание модели

model.summary()

2. Обучение

  • модель с предоставленными обучающими данными
model.fit(X_train,y_train, batch_size =50, epochs =100, verbose =1 )

3. Оценка

  • Модель Keras можно оценить с помощью функции Assessment().
  • Результаты оценки содержатся в списке
  • Документ(метрики): https://keras.io/metrics/
results = model.evaluate(X_test,y_test)
print(model.metrics_names) # listt of metric the model is employing
print(results) # actual fig of metrics computed
print('loss: ', results[0])
print('mse: ',results[1])

Полный код по ссылке Google Colaboratory.