Używam TensorFlow do eksperymentów głównie z sieciami neuronowymi. Chociaż przeprowadziłem już dość eksperymentów (problem XOR, MNIST, niektóre rzeczy związane z regresją ...), mam problem z wybraniem „właściwej” funkcji kosztu dla konkretnych problemów, ponieważ ogólnie można mnie uznać za początkującego.
Przed przyjściem do TensorFlow kodowałem niektóre w pełni połączone MLP i niektóre sieci rekurencyjne samodzielnie za pomocą Pythona i NumPy, ale przede wszystkim miałem problemy, w których wystarczający był prosty błąd kwadratu i prosty gradient.
Ponieważ jednak TensorFlow oferuje całkiem sporo samych funkcji kosztów, a także tworzenie niestandardowych funkcji kosztów, chciałbym wiedzieć, czy istnieje jakiś samouczek dla funkcji kosztów w sieciach neuronowych? (Już zrobiłem około połowy oficjalnych samouczków TensorFlow, ale tak naprawdę nie wyjaśniają, dlaczego do określonych problemów wykorzystywane są określone funkcje kosztów lub uczniowie - przynajmniej nie dla początkujących)
Aby podać kilka przykładów:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(y_output, y_train))
Wydaje mi się, że stosuje ona funkcję softmax na obu wejściach, tak że suma jednego wektora wynosi 1. Ale czym dokładnie jest entropia krzyżowa z logami? Myślałem, że sumuje wartości i oblicza entropię krzyżową ... więc jakiś pomiar metryczny ?! Czy nie byłoby tak samo, gdybym znormalizował dane wyjściowe, podsumował je i wziął do kwadratu błąd? Dodatkowo, dlaczego jest to używane np. Do MNIST (lub nawet o wiele trudniejszych problemów)? Kiedy chcę sklasyfikować jak 10, a może nawet 1000 klas, czy sumowanie wartości całkowicie nie niszczy informacji o tym, która klasa faktycznie była wynikiem?
cost = tf.nn.l2_loss(vector)
Po co to? Myślałem, że utrata L2 jest właściwie kwadratem błędu, ale API TensorFlow mówi, że jego wejście to tylko jeden tensor. W ogóle nie ma pomysłu ?!
Poza tym dość często widziałem to dla entropii krzyżowej :
cross_entropy = -tf.reduce_sum(y_train * tf.log(y_output))
... ale dlaczego to jest używane? Czy strata w entropii krzyżowej nie jest matematycznie następująca:
-1/n * sum(y_train * log(y_output) + (1 - y_train) * log(1 - y_output))
Gdzie jest (1 - y_train) * log(1 - y_output)
część w większości przykładów TensorFlow? Nie brakuje?
Odpowiedzi: Wiem, że to pytanie jest dość otwarte, ale nie spodziewam się uzyskać 10 stron z każdą szczegółową funkcją każdego problemu / kosztu. Potrzebuję tylko krótkiego podsumowania, kiedy użyć której funkcji kosztu (ogólnie lub w TensorFlow, nie ma dla mnie większego znaczenia) i wyjaśnienia na ten temat. I / lub niektóre źródła dla początkujących;)