Какой тип нейронной сети для не классифицируемых задач - PullRequest
0 голосов
/ 08 сентября 2018

Я новичок в машинном обучении, и я пытаюсь построить сеть, которая не будет предсказывать метку для данного ввода. Вместо этого следует угадать результат в диапазоне значений, например:

a_old = [5.5, 3.4 , 1.1] , x = 1.732 , y = 2.223 , z = -1.444 
=======> a_new = [6.6 , 5.1, 0.9] 

Сеть должна предсказать a_new, но a_new - это три дим-вектора, и его диапазон значений огромен, поэтому я не могу просто создать 10 ^ 15 различных меток для его классификации.

Какой тип нейронной сети мне нужен для такого рода проблем. Это вообще возможно?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

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

model = Sequential()
model.add(Dense(150, input_dim=n, kernel_initializer='glorot_uniform', activation='relu'))
model.add(Dense(30, kernel_initializer='glorot_uniform', activation='relu'))
model.add(Dense(1, kernel_initializer='glorot_uniform', activation='linear'))
model.compile(loss='mse', optimizer=optimizers.adam(lr=0.01))
0 голосов
/ 10 сентября 2018

Хотя комментарий @josef morgen имеет больше смысла, если вы хотите сделать это через нейронную сеть, нет никаких причин, почему это невозможно, нейронная печать на самом деле не печатает метки, она печатает значения для каждый класс, и мы максимизируем их, чтобы получить предсказанную метку (я говорю о случае простых классификационных задач)

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

Для вашего конкретного случая я предлагаю вам взять данные в том же формате и использовать среднеквадратическую ошибку в качестве вашей потери. Должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...