Pérdida y precisión: ¿son estas curvas de aprendizaje razonables?

Estoy aprendiendo redes neuronales y construí una simple en Keras para la clasificación del conjunto de datos de iris del repositorio de aprendizaje automático UCI. Usé una red de una capa oculta con 8 nodos ocultos. El optimizador Adam se usa con una tasa de aprendizaje de 0.0005 y se ejecuta durante 200 épocas. Softmax se utiliza en la salida con pérdida como crossentropía catódica. Estoy obteniendo las siguientes curvas de aprendizaje.

Como puede ver, la curva de aprendizaje para la precisión tiene muchas regiones planas y no entiendo por qué. El error parece estar disminuyendo constantemente, pero la precisión no parece estar aumentando de la misma manera. ¿Qué implican las regiones planas en la curva de aprendizaje de precisión? ¿Por qué la precisión no aumenta en esas regiones a pesar de que el error parece estar disminuyendo?

¿Es esto normal en el entrenamiento o es más probable que esté haciendo algo mal aquí?

dataframe = pd.read_csv("iris.csv", header=None)
dataset = dataframe.values
X = dataset[:,0:4].astype(float)
y = dataset[:,4]

scalar = StandardScaler()
X = scalar.fit,_transform(X)

label_encoder = LabelEncoder()
y = label_encoder.fit_transform(y)

encoder = OneHotEncoder()
y = encoder.fit_transform(y.reshape(-1,1)).toarray()

# create model
model = Sequential()
model.add(Dense(8, input_dim=4, activation='relu'))
model.add(Dense(3, activation='softmax'))

# Compile model
adam = optimizers.Adam(lr=0.0005, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='categorical_crossentropy',
              optimizer=adam, 
              metrics=['accuracy'])

# Fit the model
log = model.fit(X, y, epochs=200, batch_size=5, validation_split=0.2)

fig = plt.figure()
fig.suptitle("Adam, lr=0.0006, one hidden layer")

ax = fig.add_subplot(1,2,1)
ax.set_title('Cost')
ax.plot(log.history['loss'], label='Training')
ax.plot(log.history['val_loss'], label='Validation')
ax.legend()

ax = fig.add_subplot(1,2,2)
ax.set_title('Accuracy')
ax.plot(log.history['acc'], label='Training')
ax.plot(log.history['val_acc'], label='Validation')
ax.legend()

fig.show()

Respuestas a la pregunta(1)

Su respuesta a la pregunta