Bir takip gelince Benim sinir ağı bile Öklid mesafe öğrenemez Hatta daha ve tek relu için (rastgele ağırlığı) tek relu eğitmek çalıştı basitleştirilmiş. Bu, en basit ağdır ve yine de birleşemediği zamanın yarısıdır.
İlk tahmin hedefle aynı yönde ise, hızlı bir şekilde öğrenir ve doğru 1 ağırlığına yaklaşır:
İlk tahmin "geriye" ise, sıfır ağırlıkta sıkışır ve asla daha düşük kayıp bölgesine geçmez:
Nedenini anlamıyorum. Gradyan iniş, küresel minimadaki kayıp eğrisini kolayca takip etmemeli midir?
Örnek kod:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, ReLU
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
batch = 1000
def tests():
while True:
test = np.random.randn(batch)
# Generate ReLU test case
X = test
Y = test.copy()
Y[Y < 0] = 0
yield X, Y
model = Sequential([Dense(1, input_dim=1, activation=None, use_bias=False)])
model.add(ReLU())
model.set_weights([[[-10]]])
model.compile(loss='mean_squared_error', optimizer='sgd')
class LossHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.losses = []
self.weights = []
self.n = 0
self.n += 1
def on_epoch_end(self, batch, logs={}):
self.losses.append(logs.get('loss'))
w = model.get_weights()
self.weights.append([x.flatten()[0] for x in w])
self.n += 1
history = LossHistory()
model.fit_generator(tests(), steps_per_epoch=100, epochs=20,
callbacks=[history])
fig, (ax1, ax2) = plt.subplots(2, 1, True, num='Learning')
ax1.set_title('ReLU learning ReLU')
ax1.semilogy(history.losses)
ax1.set_ylabel('Loss')
ax1.grid(True, which="both")
ax1.margins(0, 0.05)
ax2.plot(history.weights)
ax2.set_ylabel('Weight')
ax2.set_xlabel('Epoch')
ax2.grid(True, which="both")
ax2.margins(0, 0.05)
plt.tight_layout()
plt.show()
Yanlılık eklersem benzer şeyler olur: 2D kayıp işlevi pürüzsüz ve basittir, ancak relu baş aşağı başlarsa, daire etrafında döner ve sıkışır (kırmızı başlangıç noktaları) ve degradeyi en aza indirmez (gibi) mavi başlangıç noktaları için geçerlidir):
Çıkış ağırlığı ve yanlılığı da eklersem benzer şeyler olur. (Soldan sağa veya aşağıdan yukarıya, ancak ikisini birden çevirmeyecektir.)