GMO Developers Day 2020 https://www.gmo.jp/developersday/
ࡾ༔հ / Pepabo R&D Institute, GMO Pepabo, Inc.2020.07.28 GMO Developers DayͳΊΒ͔ͳγεςϜͷ࣮ݱʹ͚ͯ
View Slide
1SJODJQBMFOHJOFFS:VTVLF.*:",&!NPOPDISPNFHBOF1FQBCP3%*OTUJUVUF (.01FQBCP *ODIUUQTCMPHNPOPDISPNFHBOFDPN
1. ͡Ίʹ2. ͳΊΒ͔ͳγεςϜ3. ͳΊΒ͔ͳγεςϜͷ࣮ݱʹ͚ͯ4. ·ͱΊ3࣍
1.͡Ίʹ
5ϖύϘݚڀॴ(ུশʮϖύݚʯ)ɺࣄۀΛࠩผԽͰ͖Δٕज़Λ࡞Γग़ͨ͢ΊʹʮͳΊΒ͔ͳγεςϜʯͱ͍͏ίϯηϓτͷԼͰݚڀ։ൃʹऔΓΉ৫Ͱ͢ɻ❝ϖύϘݚڀॴʹ͍ͭͯhttp://rand.pepabo.com/
6ΞΧσϛοΫͳਫ४ʹ͓͚Δ৽نੑɾ༗ޮੑɾ৴པੑΛٻ͢ΔݚڀΛߦ͏ͱͱʹɺݚڀ։ൃٕͨ͠ज़Λ࣮ࡍͷγεςϜͱ࣮ͯ͠ɾఏڙ͢Δ͜ͱΛ௨ͯ͠ɺࣄۀͷʹߩݙ͠·͢ɻ❝ϖύϘݚڀॴʹ͍ͭͯhttp://rand.pepabo.com/
7ϖύݚͱαʔϏεͷؔࣄۀΛࠩผԽ͢ΔͨΊʹɺݚڀॴͱαʔϏεͷ࿈ܞ͕ॏཁݚڀ ։ൃӡ༻αʔϏεͷ՝ͷڞ༗ݚڀʹΑΔ՝ղܾݚڀՌಋೖ࣌ͷαʔϏεͱͷ࿈ܞݚڀ։ൃ݁ՌΛଈ࣌αʔϏεʹಋೖ͢ΔΈͱɺಋೖޙͷϑΟʔυόοΫʹΑΔαΠΫϧͷߴԽʹΑͬͯɺݚڀ։ൃͷߴԽͱࣄۀͷࠩผԽʹͭͳ͛Δࣄۀ෦
2.ͳΊΒ͔ͳγεςϜ
9ϖύϘݚڀॴ(ུশʮϖύݚʯ)ɺࣄۀΛࠩผԽͰ͖Δٕज़Λ࡞Γग़ͨ͢ΊʹʮͳΊΒ͔ͳγεςϜʯͱ͍͏ίϯηϓτͷԼͰݚڀ։ൃʹऔΓΉ৫Ͱ͢ɻ❝ϖύϘݚڀॴʹ͍ͭͯhttp://rand.pepabo.com/
• զʑ͕ৗͰ৮ΕΔγεςϜɺར༻ӡ༻ʹ͓͚Δ༷ʑͳোนʢΰπΰπʣʹຬͪ͋;Ε͍ͯΔɻ• → ྫʣར༻ऀͷ໌ࣔతͳࢦࣔɺӡ༻ऀͷஅߋ৽ͷհࡏ10എܠ• ͜ΕΒͷোนΛऔΓআ͖ɺར༻ӡ༻ͷշద͞ͷ্ʹͭͳ͛ΔͨΊʹɺར༻ऀͷίϯςΩετʹج͖ͮ࠷దʹৼΔ͏ʮͳΊΒ͔ͳγεςϜʯΛ࣮ݱ͢Δɻ
• ʮͳΊΒ͔ͳγεςϜʯͱɺใγεςϜͷ͜ͱΛ͍͏ͷΈͳΒͣɺޓ͍ʹӨڹΛٴ΅͠߹͏ܧଓతͳؔʹ͋Δར༻ऀʢϢʔβʔ͓Αͼ։ൃӡ༻ऀʣͱใγεςϜͱ͔ΒͳΔ૯ମͱͯ͠ͷγεςϜ11ͳΊΒ͔ͳγεςϜ<>܀ྛ݈ଠ ࡾ༔հ দຊ྄հ ͳΊΒ͔ͳγεςϜΛࢦͯ͠ ϚϧνϝσΟΞɺࢄɺڠௐͱϞόΠϧʢ%*$0.0ʣγϯϙδϜ # +VM<><><>υϛχΫɾνΣϯ(SBQIJDTGPS'VOEBNFOUBM*OGPSNBUJDTΛվมͯ͠࡞
1. ར༻ऀͱใγεςϜͱ͕ܧଓతͳؔΛऔΓ࣋ͭաఔʹ͓͍ͯɺར༻ऀͦΕͧΕʹݻ༗ͷίϯςΩετΛݟग़ͨ͠Γɺ৽ͨͳίϯςΩετΛग़ͨ͠ΓͰ͖Δ͜ͱ2. ཁ݅1.Λɺར༻ऀʹΑΔ໌ࣔతͳૢ࡞Λ՝͢͜ͱͳ࣮͘ݱͰ͖Δ͜ͱ3. ཁ݅1.͓Αͼ2.ʹΑͬͯಘΒΕͨίϯςΩετʹج͖ͮɺใγεςϜ͕ར༻ऀʹରͯ͠࠷దͳαʔϏεΛࣗಈతʹఏڙͰ͖Δ͜ͱ12ͳΊΒ͔ͳγεςϜͷཁ݅• ࣗಈ͔ͭܧଓతʹར༻ऀͷঢ়گΛѲ͠ɺదԠతʹৼΔ͏ใγεςϜ
• ͳΊΒ͔ͳγεςϜΛ࣮ݱ͢ΔͨΊɺ༷ʑͳαʔϏεɺϨΠϠʹ͓͍ͯҎԼͷςʔϚͷͱɺݚڀ։ൃΛਐΊ͍ͯΔ[*]• FastContainer: ԠతͰঢ়ଶมԽͷૉૣ͍γεςϜج൫ٕज़• ΦʔτεέʔϦϯά: ଟڥͰͷӡ༻ੑΛߟྀͨࣗ͠దԠܕ੍ޚܥ• ͳΊΒ͔ͳϚονϯά: จ຺ʹԠͨ͡ਪનख๏ͷ࠷దԽ• ߦಈݕ: ଟ໘తͳಛྔʹجͮ͘ਫ਼៛ͳߦಈੳ• ͳΊΒ͔ͳηΩϡϦςΟ: ಁաతͳηΩϡϦςΟ্Λ࣮ݱ͢Δ։ൃख๏13ͳΊΒ͔ͳγεςϜʹ͚ͯ<>ϖύϘݚڀॴݚڀ։ൃՌIUUQTSBOEQFQBCPDPNBSDIJWF
3.ͳΊΒ͔ͳγεςϜͷ࣮ݱʹ͚ͯ
ݚڀίϯηϓτ- ใγεςϜͷࣗదԠ -
• ଟ༷͔ͭܧଓతʹมԽ͢ΔڥͷதͰɺใγεςϜ͕ܧଓతʹػೳ͢ΔʹɺͦͷߏϩδοΫΛߋ৽͠มԽʹै͢Δඞཁ͕͋Δ• → ྫʣใγεςϜͷෛՙঢ়گɺར༻ऀͷߦಈͷมԽ• ͜Ε·Ͱɺ͜ͷैɺӡ༻ҡ࣋ۀͱͯ͠ӡ༻ऀ͕୲͖ͬͯͨ16ใγεςϜͱڥมԽ
• ଟ༷͔ͭܧଓతʹมԽ͢ΔڥͷதͰɺใγεςϜ͕ܧଓతʹػೳ͢ΔʹɺͦͷߏϩδοΫΛߋ৽͠มԽʹै͢Δඞཁ͕͋Δ• → ྫʣใγεςϜͷෛՙঢ়گɺར༻ऀͷߦಈͷมԽ• ͜Ε·Ͱɺ͜ͷैɺӡ༻ҡ࣋ۀͱͯ͠ӡ༻ऀ͕୲͖ͬͯͨ17ใγεςϜͱڥมԽ• ਓखʹΑΔڥͷมԽݕใγεςϜͷߋ৽ɺैͷ࣌ؒࠩΛ͏• ݁Ռͱͯ͠ɺ҆ఆੑར༻ऀͷຬͷԼɺӡ༻ऀͷෛ୲ͷ૿ՃΛট͘
• ैདྷͷӡ༻ҡ࣋ͷऔΓΈͰɺใγεςϜΛڥͷมԽʹରԠͤ͞ΔͨΊɺਓʹΑΔܦݧଇஅͱ෦తͳࣗಈԽʹཹ·͍ͬͯΔ• → ྫʣܦݧଇʹΑΔᮢઃఆɺԽͨ͠ར༻ऀͷߦಈୡʹΑΔஅ18ڥมԽʹࣗΒదԠ͢ΔใγεςϜʹ͚ͯ• ਓʹΑΔஅߋ৽ͷఔΛࣗಈԽ͠ɺใγεςϜࣗମ͕ڥมԽΛଊ͑มԽʹै͢ΔదԠతͳΈͷݚڀ• ͳΒͼʹ࣮ӡ༻ͷద༻ݚڀίϯηϓτ
ΦʔτεέʔϦϯάख๏
• ใγεςϜͷӡ༻ʹ͓͍ͯɺॲཧੑೳΛอͪͭͭඞཁ࠷খݶͷαʔόΛ༻͍Δ͜ͱͰӡ༻ίετΛ੍ޚ͢Δ͜ͱॏཁ• มಈ͢Δαʔόधཁʹै͢ΔͨΊΦʔτεέʔϦϯάػೳΛಋೖ20എܠ• ॲཧੑೳΛอͭඞཁ࠷খݶͷαʔόܦݧͱಓͳνϡʔχϯάͰݸผʹٻΊΔ͕ɺใγεςϜͷมߋཧରͷ૿Ճʹै͍ࠔʹͳΔ• ·ͨɺͷࢉग़ʹΦʔτεέʔϦϯάͷ࣮ߦ࣌ͷ࣌ؒࠩͷߟྀඞཁӡ༻্ͷ՝
• ܧଓతʹมߋ͞Ε͏ΔෳͷใγεςϜʹରͯ͠ɺΕߟྀͨ͠ΦʔτεέʔϦϯάͷ࠷దͳ݅Λܧଓͯ͠ٻΊΔ͜ͱ͕ӡ༻ͷෛ୲• ใγεςϜΛߏ͢ΔαʔόͷॲཧੑೳΛࣗಈͰѲ͠ɺใγεςϜͷॲཧੑೳΛอͭඞཁ࠷খݶ͔ͭΕΛߟྀͨ͠αʔόΛࢉग़͍ͨ͠• αʔόͷॲཧੑೳΛ࣮ߦ࣌ʹࣗಈ͔ͭܧଓతʹਪఆ͠ɺΦʔτεέʔϦϯάͷΕߟྀͨ͠࠷దͳαʔόΛࢉग़͢Δ੍ޚܥ21ݚڀͷతͱఏҊͷࠎࢠ
• ଟڥͰͷӡ༻ੑΛߟྀͨࣗ͠దԠܕΦʔτεέʔϦϯά੍ޚܥ[2]22ఏҊख๏ (Kaburaya AutoScaler)<>ࡾ༔հ ܀ྛ݈ଠ ,BCVSBZB"VUP4DBMFSଟڥͰͷӡ༻ੑΛߟྀͨࣗ͠దԠܕΦʔτεέʔϦϯά੍ޚܥ Πϯλʔωοτͱӡ༻ٕज़γϯϙδϜจू QQ /PW
• ଟڥͰͷӡ༻ੑΛߟྀͨࣗ͠దԠܕΦʔτεέʔϦϯά੍ޚܥ• M: αʔόॲཧੑೳΛɺ୯Ґ࣌ؒ͋ͨΓͷॲཧͷ্ݶ͔ΒٻΊΔ• D: ༧ΊఆΊͨΕظؒʹର͠ɺݱࡏͷཁٻॲཧͱαʔόॲཧੑೳ͔Βෆ͢Δͱߟ͑ΒΕΔະॲཧཁٻΛٻΊΔ• F: ݱࡏͷॲཧཁٻʹະॲཧཁٻΛՃ͑ɺαʔόॲཧੑೳ͔ΒඞཁͳαʔόΛࢉग़23ఏҊख๏ (Kaburaya AutoScaler)
24ఏҊख๏ͷධՁʢγϛϡϨʔγϣϯʣαʔόੑೳʢॲཧ্ݶʣͷਪఆධՁෛՙ࣌Ұ࣌తʹαʔό͋ͨΓͷෛՙ͕ߴ·Δෛՙ૿Ճ࣌Ͱ҆ఆͯ͠ਪఆʢ࣮ઢʣɻαʔόͷैੑධՁ੨ઢͷཧαʔόʹैɻΕΛߟྀ͠ɺఆ͞ΕΔະॲཧͷཁٻΛॲཧՄೳͳαʔόΛೖɻະॲཧཁٻͷղফ݁ՌͷධՁΕʹΑΓੵ࣮ͨ͠ઢͷະॲཧཁٻΛଈ࣌ղফɻഁઢΕରࡦΛ͠ͳ͍߹ͷਪҠɻ
ਪનγεςϜ
26എܠ• ใγεςϜʹ͓͚ΔใաଟΛղܾ͢ΔɺਪનγεςϜͷಋೖ• → ͳΜΒ͔ͷํࡦʢ= ਪનख๏ʣʹج͖ͮଟͷબࢶ͔Βར༻ऀ͕ڵຯΛ࣋ͭͷΛఏҊ͢ΔγεςϜ• ӡ༻ऀʹͱͬͯɺޮՌతͳʮਪનख๏ʯͷબ͕ॏཁ• ޮՌతͳਪનख๏ঢ়گʹΑͬͯҟͳΔ• ͔͠͠ͳ͕Βɺ࣮ڥͰͷܧଓతͳਪનख๏ͷධՁʹػձଛࣦ͕͏ӡ༻্ͷ՝
• ਪનख๏ͷ༏ྼଟ͘ͷཁҼ͔ΒͳΔঢ়گʢ=จ຺ʣʹΑͬͯࠨӈ͞ΕΔ• ޮՌతͳਪનख๏Λػձଛࣦ͕ͳ͍Α͏ʹจ຺ʹԠ͍͚͍ͯͨ͡• ࣄલʹఆΊͨจ຺͝ͱʹਪનख๏ͷબΛࣗಈ͔ͭܧଓతʹ࠷దԽ͢ΔϝλਪનγεςϜ• → ࠷ળͳਪનख๏ͷબΛଟόϯσΟοτͱΈͳͯ͠ղ͘27ݚڀͷతͱఏҊͷࠎࢠ
• ʮʯͱݺΕΔෳͷީิ͔ΒಘΒΕΔใुΛ࠷େԽ͢Δ• ϓϨΠϠʔҰͷࢼߦͰ1ͭͷΛબ͠ɺใुΛಘΔ• ͦΕͧΕͷ͋Δใुʹै͍ใुΛੜ• ͨͩ͠ɺϓϨΠϠʔ͜ͷใुΛࢼߦͷ݁Ռ͔Βਪଌ͢Δඞཁ͕͋Δ28ଟόϯσΟοτ• ϓϨΠϠʔ͋Δ࣌ͷͷධՁʹج͖ͮʮ׆༻ʯͱʮ୳ࡧʯΛฒߦͯ͠ߦ͏• ͜ͷτϨʔυΦϑΛղফ͢ΔͨΊʹ༷ʑͳղ๏͕ఏҊ͞Ε͍ͯΔ
ଟόϯσΟοτͱͷใुͷ֬29Arm0Arm1Arm2User(s) Systemਪఆͨ֬͠ਅͷ֬RecommendClick
• จ຺͝ͱʹਪનख๏ͷબΛࣗಈ͔ͭܧଓతʹ࠷దԽ͢ΔϝλਪનγεςϜ[3]• จ຺͝ͱͷ࠷ળͳબΛɺઢܗͳଟόϯσΟοτͷղ๏Ͱ͋ΔLinear Thompson SamplingΛ༻͍ͯղ͘• จ຺ͱͯ͠ɺᶃใγεςϜͷ࣌ؒͷܦաɺᶄਪનରͷಛੑͷࠩҟΛѻ͏• จ຺͝ͱʹબͨ͠ਪનख๏ͱ͜Εʹର͢Δར༻ऀͷԠΛه͠ɺબͷվળʹ༻͍Δ30ఏҊγεςϜ (Synapse)<>ࡾ༔հ ็߃ݑ 4ZOBQTFจ຺ʹԠͯ͡ܧଓతʹਪનख๏ͷબΛ࠷దԽ͢ΔਪનγεςϜ ిࢠใ௨৴ֶձจࢽ% 7PM+% /P QQ /PW UPBQQFBS
31ఏҊγεςϜ (Synapse)
• ࣮αʔϏεͷӡ༻σʔλΛ༻͍ͨγϛϡϨʔγϣϯʹ͓͍ͯɺจ຺Λߟྀ͠ͳ͍ͷͱൺֱͯ͠ɺྦྷੵΫϦοΫ͕2%্͢Δ͜ͱΛ֬ೝ[3]• ֘γεςϜ࣮αʔϏεͰՔಇɾܧଓతʹධՁத• ࠓޙɺऔΓѻ͑Δจ຺ɺਪનख๏Λ͍͛ͯ͘[4][5]• ߹ΘͤͯɺڥมԽͷैੑΛ্͍ͤͯ͘͞[6]32ఏҊγεςϜͷධՁ<>ࡒେՆɼࡾ༔հɼ&$αΠτʹ͓͚ΔӾཡཤྺΛ༻͍ͨߪങʹܨ͕ΔߦಈͷมԽݕग़ɼݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ *05ɼWPM*05ɼQQrɼ<>ଜ໋ɼࡾ༔հɼϋϯυϝΠυ࡞Λରͱͨ͠&$αΠτʹ͓͚Δ୯ޠͷग़ݱසΛ༻͍ͨك᧵ͷݕग़ɼݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ *05ɼWPM*05ɼQQrɼ<>ࡾ༔հɼ܀ྛ݈ଠɼඇఆৗͳଟόϯσΟοτʹ͓͚ΔมԽݕग़ΞϓϩʔνͷઢܗϞσϧͷ֦ுɼݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ *05ɼWPM*05ɼQQrɼ+VMZ
4.·ͱΊ
• ར༻ऀͷίϯςΩετʹج͖ͮ࠷దʹৼΔ͏ʮͳΊΒ͔ͳγεςϜʯΛհͨ͠• ͜ͷ࣮ݱʹ͚ͨݚڀࣄྫͱͯ͠ɺଟڥͰͷӡ༻ੑΛߟྀͨ͠ΦʔτεέʔϦϯά੍ޚܥΛհͨ͠• ݚڀͳΒͼʹαʔϏεͷಋೖࣄྫͱͯ͠ɺจ຺ʹԠͨ͡ਪનख๏ͷ࠷దԽΛߦ͏ਪનγεςϜΛհͨ͠• ࠓޙɺ͜ΕΒΛؚΊͨݚڀ։ൃͷҰͷൃలΛ௨ͯ͠ʮͳΊΒ͔ͳγεςϜʯΛ࣮ݱ͍ͯ͘͠34·ͱΊ
ݚڀһɺੵۃతʹืूதʂhttps://rand.pepabo.com/
ิࢿྉ
• ͝ͱʹෳͷจ຺͕͋Γɺจ຺ʹԠͯ͡ใु͕ܾ·ΔଟόϯσΟοτͷઃఆ• ຊݚڀใࠂͰɺจ຺ɺෳͷཁҼͷύϥϝʔλͷΈ߹ΘͤͰදݱ͞Εͨঢ়ଶͷ͜ͱΛࢦ͢• → ཁҼύϥϝʔλͷ͕{0,1}ͷ߹ɺจ຺ཁҼ ʹରͯ͠ ύλʔϯd 2d37ઢܗͳଟόϯσΟοτ• ઢܗͳଟόϯσΟοτͷղ๏Ͱɺจ຺ͷ֬Ͱͳ͘ɺཁҼ͝ͱͷʢઢܗύϥϝʔλʣΛਪఆ͢Δ͜ͱͰ֤จ຺ʹ͓͚ΔใुΛ༧͢Δ
ઢܗͳଟόϯσΟοτ38Arm0Arm1Arm2User(s) Systemਪఆͨ֬͠ਅͷ֬RecommendClickContext = 0 Context = 0
ઢܗͳଟόϯσΟοτ39Arm0Arm1Arm2User(s) Systemਪఆͨ֬͠ਅͷ֬RecommendClickContext = 1 Context = 1