paint-brush
ຄວາມເຂົ້າໃຈ Stochastic Gradient ສະເລ່ຍໂດຍ@kustarev
31,726 ການອ່ານ
31,726 ການອ່ານ

ຄວາມເຂົ້າໃຈ Stochastic Gradient ສະເລ່ຍ

ໂດຍ Andrey Kustarev4m2024/06/06
Read on Terminal Reader
Read this story w/o Javascript

ຍາວເກີນໄປ; ອ່ານ

Gradient descent ແມ່ນການເພີ່ມປະສິດທິພາບທີ່ນິຍົມໃຊ້ສໍາລັບການກໍານົດຕໍາ່ສຸດທີ່ທົ່ວໂລກຂອງຫນ້າທີ່ຈຸດປະສົງທີ່ສະຫນອງໃຫ້. ສູດການຄິດໄລ່ໃຊ້ gradient ຂອງຟັງຊັນຈຸດປະສົງເພື່ອຂ້າມຄວາມຊັນຂອງຟັງຊັນຈົນກ່ວາມັນໄປຮອດຈຸດຕໍ່າສຸດ. Full Gradient Descent (FG) ແລະ Stochastic Gradient Descent (SGD) ແມ່ນສອງຕົວແປທີ່ນິຍົມກັນຂອງສູດການຄິດໄລ່. FG ໃຊ້ຊຸດຂໍ້ມູນທັງໝົດໃນລະຫວ່າງການເຮັດຊ້ຳແຕ່ລະຄັ້ງ ແລະໃຫ້ອັດຕາການລວມເຂົ້າກັນທີ່ສູງດ້ວຍຄ່າໃຊ້ຈ່າຍໃນການຄິດໄລ່ສູງ. ໃນແຕ່ລະຄັ້ງ, SGD ໃຊ້ຊຸດຂໍ້ມູນຍ່ອຍເພື່ອແລ່ນສູດການຄິດໄລ່. ມັນມີປະສິດຕິພາບຫຼາຍກວ່າເກົ່າ ແຕ່ມີການປະສົມປະສານທີ່ບໍ່ແນ່ນອນ. Stochastic Average Gradient (SAG) ແມ່ນການປ່ຽນແປງອື່ນທີ່ໃຫ້ຜົນປະໂຫຍດຂອງທັງສອງ algorithms ທີ່ຜ່ານມາ. ມັນໃຊ້ຄ່າສະເລ່ຍຂອງ gradients ທີ່ຜ່ານມາ ແລະຊຸດຍ່ອຍຂອງຊຸດຂໍ້ມູນເພື່ອໃຫ້ອັດຕາການລວມເຂົ້າກັນສູງດ້ວຍການຄິດໄລ່ຕໍ່າ. ສູດການຄິດໄລ່ສາມາດຖືກດັດແປງຕື່ມອີກເພື່ອປັບປຸງປະສິດທິພາບຂອງມັນໂດຍໃຊ້ vectorization ແລະ mini-batches.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - ຄວາມເຂົ້າໃຈ Stochastic Gradient ສະເລ່ຍ
Andrey Kustarev HackerNoon profile picture
0-item


Gradient descent ແມ່ນເຕັກນິກການເພີ່ມປະສິດທິພາບທີ່ນິຍົມທີ່ສຸດໃນການຮຽນຮູ້ເຄື່ອງຈັກ (ML). ສູດການຄິດໄລ່ຫຼຸດຜ່ອນຄວາມຜິດພາດລະຫວ່າງຄ່າທີ່ຄາດຄະເນໄວ້ກັບຄວາມຈິງພື້ນຖານ. ນັບຕັ້ງແຕ່ເຕັກນິກການພິຈາລະນາແຕ່ລະຈຸດຂໍ້ມູນເພື່ອເຂົ້າໃຈແລະຫຼຸດຜ່ອນຄວາມຜິດພາດ, ການປະຕິບັດຂອງມັນຂຶ້ນກັບຂະຫນາດຂໍ້ມູນການຝຶກອົບຮົມ. ເຕັກນິກເຊັ່ນ: Stochastic Gradient Descent (SGD) ຖືກອອກແບບມາເພື່ອປັບປຸງການປະຕິບັດການຄິດໄລ່ແຕ່ໃນຄ່າໃຊ້ຈ່າຍຂອງຄວາມຖືກຕ້ອງຂອງ convergence.


Stochastic Average Gradient ດຸ່ນດ່ຽງວິທີການຄລາສສິກ, ເອີ້ນວ່າ Full Gradient Descent ແລະ SGD, ແລະໃຫ້ຜົນປະໂຫຍດທັງສອງ. ແຕ່ກ່ອນທີ່ພວກເຮົາຈະສາມາດໃຊ້ algorithm ໄດ້, ພວກເຮົາທໍາອິດຕ້ອງເຂົ້າໃຈຄວາມສໍາຄັນຂອງມັນສໍາລັບການເພີ່ມປະສິດທິພາບຂອງຕົວແບບ.

ການເພີ່ມປະສິດທິພາບຈຸດປະສົງການຮຽນຮູ້ເຄື່ອງຈັກດ້ວຍການສືບເຊື້ອສາຍ

ທຸກໆ ML algorithm ມີຫນ້າທີ່ສູນເສຍທີ່ກ່ຽວຂ້ອງທີ່ມີຈຸດປະສົງເພື່ອຫຼຸດຜ່ອນຫຼືປັບປຸງການປະຕິບັດຂອງຕົວແບບ. ໃນທາງຄະນິດສາດ, ການສູນເສຍສາມາດຖືກກໍານົດເປັນ:


ມັນເປັນພຽງແຕ່ຄວາມແຕກຕ່າງລະຫວ່າງຜົນຜະລິດຕົວຈິງແລະການຄາດຄະເນ, ແລະການຫຼຸດຜ່ອນຄວາມແຕກຕ່າງນີ້ຫມາຍຄວາມວ່າຕົວແບບຂອງພວກເຮົາເຂົ້າມາໃກ້ກັບຄຸນຄ່າຂອງຄວາມຈິງ.


ສູດການຄິດໄລ່ການຫຼຸດຫນ້ອຍລົງໃຊ້ການສືບເຊື້ອສາຍ gradient ເພື່ອຜ່ານຟັງຊັນການສູນເສຍ ແລະຊອກຫາລະດັບຕໍາ່ສຸດທີ່ທົ່ວໂລກ. ແຕ່ລະຂັ້ນຕອນຜ່ານໄປກ່ຽວຂ້ອງກັບການອັບເດດນ້ຳໜັກຂອງລະບົບເພື່ອປັບແຕ່ງຜົນຜະລິດ.


ການສືບເຊື້ອສາຍ Gradient ທຳມະດາ

ສູດການຄິດໄລ່ gradient descent ທຳມະດາໃຊ້ຄ່າສະເລ່ຍຂອງ gradient ທັງໝົດທີ່ຄຳນວນໃນທົ່ວຊຸດຂໍ້ມູນທັງໝົດ. ວົງຈອນຊີວິດຂອງຕົວຢ່າງການຝຶກອົບຮົມດຽວມີລັກສະນະດັ່ງຕໍ່ໄປນີ້:



ສົມຜົນການປັບປຸງນ້ໍາຫນັກມີລັກສະນະດັ່ງຕໍ່ໄປນີ້:

ບ່ອນທີ່ W ເປັນຕົວແທນຂອງນ້ໍາຫນັກຕົວແບບແລະ dJ/dW ແມ່ນມາຈາກການທໍາງານຂອງການສູນເສຍທີ່ກ່ຽວຂ້ອງກັບນ້ໍາຫນັກຕົວແບບ. ວິທີການແບບດັ້ງເດີມມີອັດຕາການລວມກັນສູງແຕ່ກາຍເປັນລາຄາແພງໃນຄອມພິວເຕີ້ເມື່ອຈັດການກັບຊຸດຂໍ້ມູນຂະຫນາດໃຫຍ່ທີ່ປະກອບດ້ວຍຫຼາຍລ້ານຈຸດຂໍ້ມູນ.

Stochastic Gradient Descent (SGD)

ວິທີການ SGD ຍັງຄົງຄືກັນກັບ GD ທໍາມະດາ, ແຕ່ແທນທີ່ຈະໃຊ້ຊຸດຂໍ້ມູນທັງຫມົດເພື່ອຄິດໄລ່ gradients, ມັນໃຊ້ຊຸດນ້ອຍໆຈາກວັດສະດຸປ້ອນ. ວິທີການດັ່ງກ່າວມີປະສິດທິພາບຫຼາຍ ແຕ່ອາດຈະໃຊ້ຫຼາຍເກີນຂອບເຂດທົ່ວໂລກ ເນື່ອງຈາກການເຮັດຊ້ຳແຕ່ລະຄັ້ງໃຊ້ພຽງແຕ່ສ່ວນຫນຶ່ງຂອງຂໍ້ມູນເພື່ອການຮຽນຮູ້.

Stochastic Gradient ສະເລ່ຍ

ວິທີການ Stochastic Average Gradient (SAG) ໄດ້ຖືກນໍາສະເຫນີເປັນພື້ນທີ່ກາງລະຫວ່າງ GD ແລະ SGD. ມັນເລືອກຈຸດຂໍ້ມູນແບບສຸ່ມແລະປັບປຸງມູນຄ່າຂອງມັນໂດຍອີງໃສ່ gradient ຢູ່ທີ່ຈຸດນັ້ນແລະສະເລ່ຍນ້ໍາຫນັກຂອງ gradients ທີ່ຜ່ານມາເກັບຮັກສາໄວ້ສໍາລັບຈຸດຂໍ້ມູນສະເພາະນັ້ນ.


ຄ້າຍຄືກັນກັບ SGD, SAG ແບບຈໍາລອງທຸກບັນຫາເປັນຈໍານວນຈໍາກັດຂອງ convex, ຫນ້າທີ່ແຕກຕ່າງກັນ. ໃນເວລາ iteration ໃດ, ມັນໃຊ້ gradients ໃນປັດຈຸບັນແລະສະເລ່ຍຂອງ gradients ທີ່ຜ່ານມາສໍາລັບການປັບປຸງນ້ໍາ. ສົມຜົນມີຮູບແບບດັ່ງຕໍ່ໄປນີ້:



ອັດ​ຕາ​ການ​ລວມ​

ລະຫວ່າງສອງສູດການຄິດໄລ່ທີ່ນິຍົມ, gradient ເຕັມ (FG) ແລະ stochastic gradient descent (SGD), FG algorithm ມີອັດຕາການລວມກັນທີ່ດີກວ່ານັບຕັ້ງແຕ່ມັນໃຊ້ຊຸດຂໍ້ມູນທັງຫມົດໃນລະຫວ່າງແຕ່ລະ iteration ສໍາລັບການຄິດໄລ່.

ເຖິງແມ່ນວ່າ SAG ມີໂຄງສ້າງຄ້າຍຄືກັນກັບ SGD, ອັດຕາການລວບລວມຂອງມັນແມ່ນທຽບກັບແລະບາງຄັ້ງດີກວ່າວິທີການ gradient ເຕັມ. ຕາຕະລາງ 1 ຂ້າງລຸ່ມນີ້ສະຫຼຸບຜົນໄດ້ຮັບຈາກການທົດລອງຂອງ Schmidt ແລະ. al .

ທີ່ມາ: https://arxiv.org/pdf/1309.2388

ການ​ດັດ​ແກ້​ເພີ່ມ​ເຕີມ​

ເຖິງວ່າຈະມີການປະຕິບັດທີ່ຫນ້າຕື່ນຕາຕື່ນໃຈ, ການດັດແປງຫຼາຍໆຄັ້ງໄດ້ຖືກສະເຫນີໃຫ້ກັບ SGD algorithm ຕົ້ນສະບັບເພື່ອຊ່ວຍປັບປຸງການປະຕິບັດ.


  • Re-weighting in Early Iterations: SAG convergence ຍັງຄົງຊ້າໃນໄລຍະສອງສາມຄັ້ງທໍາອິດນັບຕັ້ງແຕ່ algorithm normalizes ທິດທາງທີ່ມີ n (ຈໍານວນທັງຫມົດຂອງຈຸດຂໍ້ມູນ). ນີ້ສະຫນອງການຄາດຄະເນທີ່ບໍ່ຖືກຕ້ອງຍ້ອນວ່າ algorithm ຍັງບໍ່ທັນເຫັນຈຸດຂໍ້ມູນຫຼາຍ. ການແກ້ໄຂແນະນໍາການປົກກະຕິໂດຍ m ແທນທີ່ຈະເປັນ n, ບ່ອນທີ່ m ແມ່ນຈໍານວນຈຸດຂໍ້ມູນທີ່ເຫັນຢ່າງຫນ້ອຍຫນຶ່ງຄັ້ງຈົນກ່ວາ iteration ໂດຍສະເພາະນັ້ນ.
  • Mini-batches: ວິທີການ Stochastic Gradient ໃຊ້ mini-batches ເພື່ອປະມວນຜົນຂໍ້ມູນຫຼາຍຈຸດພ້ອມກັນ. ວິທີການດຽວກັນສາມາດຖືກນໍາໃຊ້ກັບ SAG. ນີ້ອະນຸຍາດໃຫ້ສໍາລັບ vectorization ແລະຂະຫນານສໍາລັບການປັບປຸງປະສິດທິພາບຄອມພິວເຕີ. ມັນຍັງຊ່ວຍຫຼຸດຜ່ອນການໂຫຼດຫນ່ວຍຄວາມຈໍາ, ເປັນສິ່ງທ້າທາຍທີ່ໂດດເດັ່ນສໍາລັບລະບົບ SAG.
  • ການທົດລອງຂະຫນາດຂັ້ນຕອນ: ຂະຫນາດຂັ້ນຕອນທີ່ໄດ້ກ່າວມາກ່ອນຫນ້ານີ້ (116L) ໃຫ້ຜົນໄດ້ຮັບທີ່ຫນ້າປະຫລາດໃຈ, ແຕ່ຜູ້ຂຽນໄດ້ທົດລອງຕື່ມອີກໂດຍໃຊ້ຂະຫນາດຂັ້ນຕອນຂອງ 1L. ສຸດທ້າຍໄດ້ສະຫນອງການ convergence ດີກວ່າ. ຢ່າງໃດກໍຕາມ, ຜູ້ຂຽນບໍ່ສາມາດນໍາສະເຫນີການວິເຄາະຢ່າງເປັນທາງການຂອງຜົນໄດ້ຮັບການປັບປຸງ. ພວກເຂົາເຈົ້າສະຫຼຸບວ່າຂະຫນາດຂັ້ນຕອນຄວນໄດ້ຮັບການທົດລອງເພື່ອຊອກຫາຫນຶ່ງທີ່ດີທີ່ສຸດສໍາລັບບັນຫາສະເພາະ.


ຄວາມຄິດສຸດທ້າຍ

Gradient descent ແມ່ນການເພີ່ມປະສິດທິພາບທີ່ນິຍົມໃຊ້ສໍາລັບການກໍານົດຕໍາ່ສຸດທີ່ທົ່ວໂລກຂອງຫນ້າທີ່ຈຸດປະສົງທີ່ສະຫນອງໃຫ້. ສູດການຄິດໄລ່ໃຊ້ gradient ຂອງຟັງຊັນຈຸດປະສົງເພື່ອຂ້າມຄວາມຊັນຂອງຟັງຊັນຈົນກ່ວາມັນໄປຮອດຈຸດຕໍ່າສຸດ.

Full Gradient Descent (FG) ແລະ Stochastic Gradient Descent (SGD) ແມ່ນສອງຕົວແປທີ່ນິຍົມກັນຂອງສູດການຄິດໄລ່. FG ໃຊ້ຊຸດຂໍ້ມູນທັງໝົດໃນລະຫວ່າງການເຮັດຊ້ຳແຕ່ລະຄັ້ງ ແລະໃຫ້ອັດຕາການລວມເຂົ້າກັນທີ່ສູງດ້ວຍຄ່າໃຊ້ຈ່າຍໃນການຄິດໄລ່ສູງ. ໃນແຕ່ລະຄັ້ງ, SGD ໃຊ້ຊຸດຂໍ້ມູນຍ່ອຍເພື່ອແລ່ນສູດການຄິດໄລ່. ມັນມີປະສິດຕິພາບຫຼາຍກວ່າເກົ່າ ແຕ່ມີການປະສົມປະສານທີ່ບໍ່ແນ່ນອນ.


Stochastic Average Gradient (SAG) ແມ່ນການປ່ຽນແປງອື່ນທີ່ໃຫ້ຜົນປະໂຫຍດຂອງທັງສອງ algorithms ທີ່ຜ່ານມາ. ມັນໃຊ້ຄ່າສະເລ່ຍຂອງ gradients ທີ່ຜ່ານມາ ແລະຊຸດຍ່ອຍຂອງຊຸດຂໍ້ມູນເພື່ອໃຫ້ອັດຕາການລວມເຂົ້າກັນສູງດ້ວຍການຄິດໄລ່ຕໍ່າ. ສູດການຄິດໄລ່ສາມາດຖືກດັດແປງຕື່ມອີກເພື່ອປັບປຸງປະສິດທິພາບຂອງມັນໂດຍໃຊ້ vectorization ແລະ mini-batches.