ANN - Низкая производительность - PullRequest
0 голосов
/ 07 марта 2020

Я новичок в нейронных сетях, и я только что определил мою первую искусственную нейронную сеть следующим образом:

model = Sequential()
model.add(Dense(25,input_dim = 20, activation = 'relu'))
model.add(Dense(50,activation='relu'))
model.add(Dense(10,activation='relu'))
model.add(Dense(20,activation='relu')) 
model.add(Dense(4,activation='softmax'))

Поэтому у нее есть 4 скрытых слоя (первый работает как входной) и выходной слой.

Затем я скомпилировал модель с использованием оптимизатора Адама с коэффициентом обучения 0,2 и категорической кроссентропией, потому что я имею дело с проблемой мультикласса. Смотри ниже:

adam = optimizers.Adam(lr = 0.2)
model.compile(loss='categorical_crossentropy', optimizer= adam, metrics=['accuracy'])

При проверке производительность модели (точность и потеря) довольно низкая. Ниже приведены результаты: enter image description here

Пожалуйста, просмотрите результаты с уменьшенной скоростью обучения до lr = 0,001:

enter image description here

Пожалуйста, см. Информацию о наборе данных ниже:

    RangeIndex: 2000 entries, 0 to 1999
Data columns (total 21 columns):
battery_power    2000 non-null int64
blue             2000 non-null int64
clock_speed      2000 non-null float64
dual_sim         2000 non-null int64
fc               2000 non-null int64
four_g           2000 non-null int64
int_memory       2000 non-null int64
m_dep            2000 non-null float64
mobile_wt        2000 non-null int64
n_cores          2000 non-null int64
pc               2000 non-null int64
px_height        2000 non-null int64
px_width         2000 non-null int64
ram              2000 non-null int64
sc_h             2000 non-null int64
sc_w             2000 non-null int64
talk_time        2000 non-null int64
three_g          2000 non-null int64
touch_screen     2000 non-null int64
wifi             2000 non-null int64
price_range      2000 non-null int64
dtypes: float64(2), int64(19)

Набор данных нормализован и применено кодирование One Hot для атрибута price_range, который содержит 4 метки.

1 Ответ

1 голос
/ 07 марта 2020

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

  1. Недостаточно примеров для сложности проблемы в предоставленном наборе данных. Также убедитесь, что данные представляют проблему как в обучающем, так и в тестовом наборах - попробуйте выполнить перекрестную проверку в k-кратном масштабе для этой цели.
  2. Шумные данные - если ваш набор данных допускает ошибки в маркировке данных или неправильные значения атрибутов это может вызвать проблему при обучении модели.

Редактировать: Как отметил д-р Х. Лектер в комментарии, проблема также может быть вызвана отсутствием локальных минимумов для схождения, вызванные иногда большими значениями скорости обучения. Вы можете попытаться уменьшить значение скорости обучения, чтобы решить ее и сходиться. Также может помочь различное количество слоев и узлов в каждом слое. Это общие решения для таких случаев, как у вас, но если это не root причины - не могли бы вы предоставить больше информации о проблеме?

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