Плохо ли глубокое обучение при подборе простых нелинейных функций вне рамок обучения (экстраполяция)? - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь создать простую модель, основанную на глубоком обучении, для прогнозирования y=x**2 Но похоже, что глубокое обучение не способно выучить общую функцию вне рамок своего обучающего набора .

Интуитивно я могу подумать, что нейронная сеть может не соответствовать y = x ** 2, поскольку между входами нет умножения.

Обратите внимание, я не спрашиваю, как создать модель дляподходит x**2.Я уже достиг этого.Я хочу знать ответы на следующие вопросы:

  1. Является ли мой анализ правильным?
  2. Если ответ на 1 - да, то не ограничен ли объем предсказания глубокого обучения?
  3. Существует ли лучший алгоритм для прогнозирования таких функций, как y = x ** 2, внутри?и выходит за рамки данных об обучении?

Путь к завершению записной книжки: https://github.com/krishansubudhi/MyPracticeProjects/blob/master/KerasBasic-nonlinear.ipynb

учебный ввод :

x = np.random.random((10000,1))*1000-500
y = x**2
x_train= x

input data

обучающий код

def getSequentialModel():
    model = Sequential()
    model.add(layers.Dense(8, kernel_regularizer=regularizers.l2(0.001), activation='relu', input_shape = (1,)))
    model.add(layers.Dense(1))
    print(model.summary())
    return model

def runmodel(model):
    model.compile(optimizer=optimizers.rmsprop(lr=0.01),loss='mse')
    from keras.callbacks import EarlyStopping
    early_stopping_monitor = EarlyStopping(patience=5)
    h = model.fit(x_train,y,validation_split=0.2,
             epochs= 300,
             batch_size=32,
             verbose=False,
             callbacks=[early_stopping_monitor])


_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_18 (Dense)             (None, 8)                 16        
_________________________________________________________________
dense_19 (Dense)             (None, 1)                 9         
=================================================================
Total params: 25
Trainable params: 25
Non-trainable params: 0
_________________________________________________________________

Оценка на случайном наборе тестов

enter image description here

Глубокое обучение в этом примере не подходит для предсказания простой нелинейной функции.Но хорош в прогнозировании значений в выборочном пространстве обучающих данных.

1 Ответ

0 голосов
/ 15 декабря 2018
  1. Является ли мой анализ правильным?

Учитывая мои замечания в комментариях о том, что ваша сеть определенно не глубокая , давайте признаем, что ваш анализ действительно верный (в конце концов, ваша модель действительно работаетХорошая работа в рамках обучения ), чтобы перейти к вашему второму вопросу, который является интересным.

Если ответ на вопрос «1» - «да», то не слишком ли ограничена область прогнозирования глубокого обучения?

Ну, этот вопрос не совсем подходит для SO,поскольку точное значение «очень ограниченного», возможно, неясно ...

Итак, давайте попробуем перефразировать его: следует ли ожидать, что модели DL будут предсказывать такие числовые функции вне числовой области начему они были обучены?

Пример из другой области может быть полезным для понимания: предположим, что мы создали модель, способную обнаруживать и распознавать животных на фотографиях с очень высокой точностью (это не гипотетически; такие модели делаютдействительно существует);Должны ли мы жаловаться, когда одна и та же модель не может обнаруживать и распознавать самолеты (или деревья, холодильники и т. д. - назовите это) на этих же фотографиях?

Если поставить так, ответ ясен и очевиден нет - нам не следует жаловаться, и на самом деле мы, конечно, даже не удивлены такому поведению.

Для нас, людей, заманчиво думать, что такие модели должны быть способны экстраполировать , особенно в числовой области, поскольку это то, что мы делаем очень легко;но модели ML, хотя и исключительно хорошо умеют интерполировать , они с треском проваливаются в задачах экстраполяции, таких как та, что вы здесь представляете.«таких моделей ограничено областью их тренировочных наборов: мой пример модели, приведенной выше, сможет обобщать и распознавать животных на невидимых фотографиях, если эти животные находятся« между »(следите за цитатами)те, которые он видел во время тренировки;аналогичным образом, ваша модель хорошо справляется с прогнозированием значения функции для аргументов между образца, который вы использовали для обучения.Но ни в том, ни в другом случае ожидается, что эти модели выйдут за пределы своей области обучения (т. Е. Экстраполируют).Не существует «мира» для моей модели за пределами животных, и аналогично для вашей модели за пределами [-500, 500] ...

В качестве подтверждения рассмотрим самую последнюю статью Нейронно-арифметические логические единицы , DeepMind;цитата из резюме:

Нейронные сети могут научиться представлять и манипулировать числовой информацией, но они редко обобщаются вне диапазона числовых значений, встречающихся во время обучения.

См. Также соответствующий твит известного практикующего:

enter image description here

На ваш третий вопрос:

Есть ли лучший алгоритм для прогнозирования таких функций, как y = x**2, как внутри, так и вне области данных обучения?

Как должно быть ясно сейчас, это (горячий) область текущих исследований;см. выше статью для начала ...


Итак, модели DL ограничены?Обязательно - забудьте про страшные сказки об AGI в обозримом будущем.Вы ограничены, как вы выразились, очень ?Ну, я не знаю ... Но, учитывая их ограничение в экстраполяции, они полезны ?

Это, возможно, реальный вопрос интереса, и ответ, очевидно, - черт, да !

...