ðïžPyroãšPyMCã®éã sdgãšvi
Pyro ãš PyMC3 ã¯ãäž¡æ¹ãšã確ççããã°ã©ãã³ã°ã®ããã® Python ã©ã€ãã©ãªã§ãããããã€ãã®éèŠãªéãããããŸããèæ¯ãšç®ç:
Pyro 㯠Uber AI Labs ã«ãã£ãŠéçºãããŸãããPyro ã¯ã深局åŠç¿ãšç¢ºççããã°ã©ã ã®äž¡æ¹ã«å¯Ÿå¿ããããã«èšèšãããŠãããããã«ãã£ãŠè€éãªç¢ºçã¢ãã«ãæ§ç¯ããããããå¹ççã«æšè«ããããšãã§ããŸãã
PyMC3 ã¯ãçµ±èšçã¢ããªã³ã°ãšãã€ãºæšè«ã«ç¹åããŠããŸããPyMC3ã¯ãMCMCïŒMarkov Chain Monte CarloïŒãµã³ããªã³ã°ã¢ã«ãŽãªãºã ãå€åæšè«ã䜿ã£ãŠããã€ãºçµ±èšã¢ãã«ã®æšè«ãè¡ãããšãã§ããŸãã
ã€ã³ã¿ãŒãã§ãŒã¹ãšæ©èœ:
Pyro ã¯ãPyTorch ãããŒã¹ã«ããŠãããPyTorch ã®æ©èœïŒäŸãã°ãèªå埮åïŒã掻çšããªããã確ççããã°ã©ã ãæ§ç¯ããããšãã§ããŸããPyro ã¯ããŠãŒã¶ãŒãç¬èªã®ç¢ºççããã°ã©ã ãå®çŸ©ãããããæé©åããããã®ããŒã«ãæäŸããŸãã
PyMC3 ã¯ãTheano ãããŒã¹ã«ããŠãããTheano ã®æ©èœã掻çšããŠãçµ±èšã¢ãã«ã®æ§ç¯ãšæšè«ãè¡ããŸããPyMC3 ã¯ããã€ãºçµ±èšã¢ãã«ãæ§ç¯ããããã®é«ã¬ãã«ã® API ãæäŸããMCMC ãµã³ããªã³ã°ãå€åæšè«ãè¡ãããšãã§ããŸãã
ããã©ãŒãã³ã¹:
Pyro ã¯ãPyTorch ã® GPU ãµããŒããå©çšããŠãé«éãªèšç®ãè¡ãããšãã§ããŸãã
PyMC3 ã¯ãTheano ã® GPU ãµããŒããå©çšããŠãé«éãªèšç®ãè¡ãããšãã§ããŸãããPyTorch ã® GPU ãµããŒãã»ã©å¹ççã§ã¯ãªããããããŸããã
ã³ãã¥ããã£ãšãµããŒã:
Pyro ã¯ãUber AI Labs ã«ãã£ãŠéçºãããŠãããã¢ã¯ãã£ããªéçºã³ãã¥ããã£ããããŸãã
PyMC3 ã¯ãé·ãééçºãããŠããã©ã€ãã©ãªã§ã倧ããªãŠãŒã¶ãŒã³ãã¥ããã£ãšè±å¯ãªããã¥ã¡ã³ãããããŸãã
埮ç©åãå€åçã«ã€ããŠæšè«ããããã®æ°åŠã§ããã®ãšåæ§ã«ã確çã¯äžç¢ºå®æ§ã®äžã§æšè«ããããã®æ°åŠã§ããã
確çããã°ã©ã ã¯ãéåžžã®æ±ºå®è«çãªèšç®ãšãããŒã¿ã®çæéçšãè¡šãã©ã³ãã ãªãµã³ããªã³ã°å€ãæ··ãããã®ã§ããã
確ççããã°ã©ã ã®çµæã芳å¯ããããšã§ãæšè«åé¡ãèšè¿°ããããšãã§ããã"ãã®ã©ã³ãã ãªéžæããã芳枬å€ãæã£ãå Žåãäœãçã§ãªããã°ãªããªãã"ãPPLã¯ãã¢ãã«ã®æå®ãçããã¹ãååããçããèšç®ããã¢ã«ãŽãªãºã ãšã®éã§ã確çã®æ°åŠã§ãã§ã«æé»ã®äºè§£ãšãªã£ãŠããé¢å¿äºã®åé¢ãæ瀺çã«åŒ·å¶ããã
Pyroã¯PythonãšPyTorchãããŒã¹ã«äœããã確ççããã°ã©ãã³ã°èšèªã§ãã
Pyroã®ããã°ã©ã ã¯åãªãPythonã®ããã°ã©ã ã§ãããäž»ãªæšè«æè¡ã¯ç¢ºçå€åæšè«ã§ãæœè±¡çãªç¢ºçèšç®ãPyTorchã®ç¢ºçåŸé éäžã§è§£ãå ·äœçãªæé©ååé¡ã«å€æãããããŸã§å°é£ã ã£ãã¢ãã«ãããŒã¿ã»ãããµã€ãºã«ç¢ºççææ³ãé©çšã§ããããã«ããŠããŸãã
åŒã«ãããæœåšå€æ°ã«å¯Ÿããååžãäºåååžãæœåšå€æ°ãäžãããããšãã®èŠ³æž¬å€æ°ã«å¯Ÿããååžã尀床ãšåŒã¶ã
Pyroã®æšè«ã¢ã«ãŽãªãºã ã¯ããããã°ã©ã ãéããå®è¡ãããŠã¢ãã«å ã®ãã¹ãŠã®pyro.sampleæã«æ°åŠçã«äžè²«ããå€ãå²ãåœãŠãã®ãä»äºã§ãã
PyTorchã®é åã¯PyTorch Tensor
PyTorchã¯Tensor (torch.Tensor) ãšããã¯ã©ã¹ãå®çŸ©ããæ°å€ã®å質ãªå€æ¬¡å ç©åœ¢é åãä¿åãæäœã§ããããã«ããŠããŸããPyTorchã®ãã³ãœã«ã¯NumPyã®é åã«äŒŒãŠããŸãããCUDA察å¿ã®NVIDIA GPUã§ãæäœããããšãã§ããŸãã
MCMCãšSDG
ãã€ãºããŒã¿è§£æïŒãã€ãºç·åœ¢ååž°ã¢ãã«ã®æšå®ãªã©ïŒãè¡ãã«ã¯ãéåžžãäœããã®åœ¢ã®ç¢ºççããã°ã©ãã³ã°èšèªïŒPPLïŒãå¿ èŠã«ãªããŸãã
PPL ã¯ãã«ã³ãé£éã¢ã³ãã«ã«ãæ³(MCMC)ãå®è£ ããŠããã芳枬ããŒã¿ãæ¡ä»¶ãšããŠããã©ã¡ãŒã¿ã®å°€åºŠãšäºåååžãæå³ããäºåŸååžãããµã³ãã«ãæœåºããæšè«ãè¡ãããšãã§ããŸãã
MCMCã¢ã«ãŽãªãºã ã¯ãäžè¬çã«èšã£ãŠãèšç®ã³ã¹ããé«ããäŸãã°ããã£ãŒããã¥ãŒã©ã«ãããã¯ãŒã¯ã®åŠç¿ã«çšããããæé©åã¢ã«ãŽãªãºã ïŒäŸïŒç¢ºççåŸé éäž(SDG)ïŒãšæ¯èŒãããšããããã®ã¢ã«ãŽãªãºã ã®å®è¡ããã·ã³ã®ã¯ã©ã¹ã¿ã«åæ£ãããããšã¯å®¹æã§ã¯ãããŸããã
ããæ°å¹Žãèšç®ã³ã¹ãã®ãããã©ã³ãã ãµã³ããªã³ã°ã«å€§ããäŸåããªãããã€ãºã¢ãã«ã®æšè«ãè¡ãæ°ããã¢ã«ãŽãªãºã ãéçºãããŠããããããã®ã¢ã«ãŽãªãºã ã¯å€åæšè«ïŒVI:Variational InterfaceïŒã¢ã«ãŽãªãºã ãšåŒã°ããã倧èŠæš¡ããªããŒã¿ã»ããã«æ¡åŒµã§ããå¯èœæ§ãæã€æåäŸãšããŠç€ºãããŠãã
MCMCïŒMarkov Chain Monte CarloïŒãšSGDïŒStochastic Gradient DescentïŒã¯ãäž¡æ¹ãšãæé©åã®åé¡ã解決ããããã®ã¢ã«ãŽãªãºã ã§ãããããããç°ãªãç®çãšæ¹æ³ã§äœ¿çšãããŸãã
ç®ç:
MCMC ã¯ã確çååžãããµã³ããªã³ã°ããããã®ã¢ã«ãŽãªãºã ã§ããMCMCã¯ãç¹å®ã®ç¢ºçååžããã©ã³ãã ãµã³ãã«ãçæããããšã§ããã®ååžã®ç¹æ§ïŒäŸãã°ãå¹³åãåæ£ïŒãæšå®ããŸããMCMCã¯ããã€ãºçµ±èšåŠã§ãã©ã¡ãŒã¿ã®äºåŸååžãããµã³ããªã³ã°ããéã«ãã䜿çšãããŸãã
SGD ã¯ãæé©åã¢ã«ãŽãªãºã ã®äžçš®ã§ããSGDã¯ãé¢æ°ã®æå°å€ïŒãŸãã¯æ倧å€ïŒãèŠã€ããããã«äœ¿çšãããŸããSGDã¯ãç¹ã«æ·±å±€åŠç¿ã§ãã¥ãŒã©ã«ãããã¯ãŒã¯ã®ãã©ã¡ãŒã¿ãæé©åããéã«ãã䜿çšãããŸãã
æ¹æ³:
MCMC ã¯ããã«ã³ãé£éã䜿çšããŠãç®çã®ç¢ºçååžããã®ãµã³ãã«ãçæããŸããMCMCã®ã¢ã«ãŽãªãºã ã®äžäŸã¯ãã¡ããããªã¹ã»ãã€ã¹ãã£ã³ã°ã¹ã¢ã«ãŽãªãºã ã§ãã
SGD ã¯ãåŸé éäžæ³ã®äžçš®ã§ããSGDã¯ãé¢æ°ã®åŸé ïŒã€ãŸããåŸæïŒãèšç®ããåŸé ã®éæ¹åã«ãã©ã¡ãŒã¿ãæŽæ°ããããšã§ãé¢æ°ã®æå°å€ã«é²ãã§ãããŸãã
䜿çšãããåé:
MCMC ã¯ããã€ãºçµ±èšåŠãçµ±èšç©çåŠãèšç®çç©åŠãªã©ã®åéã§åºã䜿çšãããŸãã
SGD ã¯ãæ©æ¢°åŠç¿ãç¹ã«æ·±å±€åŠç¿ã§åºã䜿çšãããŸãã
äž¡æ¹ã®ã¢ã«ãŽãªãºã ã¯ãããããç°ãªãåé¡ã解決ããããã«äœ¿çšãããŸããMCMCã¯ã確çååžããã®ãµã³ããªã³ã°ã«é©ããŠããã®ã«å¯ŸããSGDã¯ãé¢æ°ã®æé©åã«é©ããŠããŸãã
ãé¡ãèŽããŸã