Эта проблема:
В большинстве учебников по нейронным сетям нейронные сети объединяют функции, используя, y = WX + B или y = W’X + B, однако в реализациях tenorflow и theano нейронные сети реализованы как y = XW + B. Я потратил много времени, исследуя причину этого несоответствия, и пришел к следующему. TL; DR: я думаю, что это проблема реализации, вычисление производных для y = XW + B проще, чем y = WX + B
Теоретически W’X + B (или WX + B) - это то, как математика нейронных сетей представлена в книгах и т. Д., Что эквивалентно XW + B (транспонирование). Однако при вычислении производных эти две формулировки не эквивалентны. Обратите внимание, что WX + B - вектор, и мы берем его производную по матрице (W). Производная вектора по матрице дает тензор. Этот тензор вычисляется путем взятия каждого элемента в y, взятия его производной с каждым элементом в W и сохранения этой информации в элементе i X j X k трехмерного тензора, где i - индекс элемента в y, а j и k - индексы элементов в W. Таким образом, этот тензор приводит к вычислению дополнительных матриц, которые необходимо вычислить и сохранить. Уравнение 74 в матричной кулинарной книге, https://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3274/pdf/imm3274.pdf.
Используя XW + B, произвести производную функции по каждому элементу в W намного проще. Это просто X с некоторыми нулевыми элементами. Нет необходимости вычислять транспонирование данных и хранить тензорные производные, и когда бы вы ни захотели, вы можете вычислить производную, взяв матрицу весов размера и поместив каждый элемент в нее равным входному X с некоторыми элементами, равными нулю.
Я думаю, что это основная причина использовать XW + B против WX + B. Ниже приведен вывод производной для y = XW и WX (отклонение отброшено). Я думаю, что реализация XW лучше подходит для пакетов numpy и python, поэтому используется XW вместо WX. Пожалуйста, не стесняйтесь добавлять больше. Если вы согласны или не согласны или имеете какое-либо другое мнение, пожалуйста, не стесняйтесь добавлять дополнительную информацию.
Для y = XW
Для y = WX