Плохо ли глубокое обучение подбирать простые нелинейные функции за пределами области обучения (экстраполяция)?

Я пытаюсь создать простую модель, основанную на глубоком обучении, для прогнозирования 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

входные данные

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

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
_________________________________________________________________

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

введите описание изображения здесь

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


person Krishan Subudhi    schedule 15.12.2018    source источник
comment
Слишком простая двухуровневая сеть вряд ли может считаться моделью глубокого обучения; еще в 80-е годы самой элементарной нейронной сетью считалась трехслойная ...   -  person desertnaut    schedule 15.12.2018
comment
@desertnaut Я пробовал добавлять слои, но прогноз оказался хуже. Я читал и наблюдал, чем проще задачи, тем меньше должен быть слой. Но это нейронная сеть, и я предполагаю, что, несмотря на то, что она базовая, она все еще квалифицируется как глубокое обучение. Если вы можете сделать прогноз, используя более глубокую сеть, поделитесь, пожалуйста, моделью.   -  person Krishan Subudhi    schedule 15.12.2018
comment
Термины «нейронная сеть» и «глубокое обучение» являются не синонимами, и, как я уже сказал, двухслойная сеть по определению является неглубокой (т.е. не глубокой), и даже спорно, является ли это собственно нейронной сетью (ожидается как минимум один скрытый слой, поверх входного и выходного); примеры аппроксимации функций см. в моих ответах здесь и здесь   -  person desertnaut    schedule 15.12.2018
comment
Возможный дубликат нейронной сети для предсказания n-го квадрата   -  person Agnius Vasiliauskas    schedule 15.12.2018


Ответы (1)


  1. Верен ли мой анализ?

Учитывая мои замечания в комментариях о том, что ваша сеть определенно не глубокая, давайте признаем, что ваш анализ действительно верен (в конце концов, ваша модель, похоже, действительно хорошо справляется в рамках своей обучающей области < / em>), чтобы перейти к вашему второму интересному вопросу.

  1. Если ответ на 1 положительный, то не очень ли ограничен объем прогнозирования глубокого обучения?

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

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

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

Таким образом, ответ - ясный и очевидный нет - мы не должны жаловаться, и на самом деле мы, конечно, даже не удивлены таким поведением в первую очередь.

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

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

Для подтверждения рассмотрите недавнюю статью Neural Arithmetic Logic Units от DeepMind; цитата из аннотации:

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

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

введите описание изображения здесь

Переходя к третьему вопросу:

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

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


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

Возможно, это настоящий интересный вопрос, и ответ очевиден - черт возьми, да!

person desertnaut    schedule 15.12.2018