å®å
ïŒ

åŸïŒ

èå³ããããŸããïŒ ãããããŸãæåã«ã
t-SNE
t-SNEã¯éåžžã«äžè¬çãªã¢ã«ãŽãªãºã ã§ãããããŒã¿ã®æ¬¡å
ãå°ããããŠèŠèŠåã容æã«ããŸãã ãã®ã¢ã«ãŽãªãºã ã¯ãããŒã¿éã®éèŠãªé¢ä¿ãç¶æããªãããæ°çŸã®æž¬å®å€ããã£ã2ã€ã«ãŸãšããããšãã§ããŸãããªããžã§ã¯ããå
ã®ç©ºéã«è¿ãã»ã©ãçž®å°ãããæ¬¡å
ã®ç©ºéã«ããããããã®ãªããžã§ã¯ãéã®è·é¢ã¯å°ãããªããŸãã t-SNEã¯ãå°èŠæš¡ããã³äžèŠæš¡ã®å®ããŒã¿ã»ããã§é©åã«æ©èœãã倿°ã®ãã€ããŒãã©ã¡ãŒã¿ãŒèšå®ãå¿
èŠãšããŸããã ã€ãŸãã100,000ãã€ã³ããååŸããŠããã®éæ³ã®ãã©ãã¯ããã¯ã¹ãééããããšãåºåã«çŸããæ£åžå³ã衚瀺ãããŸãã
ã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã®åéããã®å
žåçãªäŸã次ã«ç€ºããŸãã Jan LekunïŒ
ãšã©ãŒã®éäŒææ³ã«ãããã¥ãŒã©ã«ãããã¯ãŒã¯ã®ãã¬ãŒãã³ã°ã¢ã«ãŽãªãºã ã®äœæè
ã®1人-çŸä»£ã®æ·±å±€åŠç¿ã®åºç€ïŒãªã©ã«ãã£ãŠäœæããã
MNISTãšåŒã°ããæåãªããŒã¿ã»ããããããŸãã å€ãã®å Žåãç§åŠçç ç©¶ã ãã§ãªãããã¥ãŒã©ã«ãããã¯ãŒã¯ã«é¢é£ããã¢ã€ãã¢ãè©äŸ¡ããããã®æ®éçãªããŒã¿ã»ãããšããŠäœ¿çšãããŸãã MNISTã¯70,000 28x28ã®çœé»ç»åã§ãã ãããã¯ãããããã»ã°ã¡ã³ã[0ã9]ããã®ææžãæ°åã®ã¹ãã£ã³ã§ãã MNISTã®ã
ç¡éã® ãã»ãããååŸããæ¹æ³ã¯ãããŸããããã®ãããã¯ããéžââè±ããŸããã
ãããã£ãŠãMNISTãµã³ãã«ã«ã¯æ¬¡ãå«ãŸããŸãã

眲åãã784次å
ã®ãã¯ãã«ãšããŠè¡šãããšãã§ããŸãã ãã¯ãã«ã¯ç·åœ¢ã§ããããã®è§£éã§ã¯åã
ã®ãã¯ã»ã«éã®äœçœ®é¢ä¿ã¯å€±ãããŸãããããã§ãæçšã§ãã 784Dã§ããŒã¿ã»ãããã©ã®ããã«èŠããããæ³åããããšãããšãç¹å¥ãªèšç·Žãåããæ°åŠè
ã§ãªããšå€¢äžã«ãªããŸãã æ®éã®äººã¯ã3Dã2DããŸãã¯1D次å
ã®æ
å ±ã®ã¿ãæ¶è²»ã§ããŸãã æé»çã«ãå¥ã®æ¬¡å
-æéã远å ã§ããŸããã3Dã³ã³ãã¥ãŒã¿ãŒã®ãã£ã¹ãã¬ã€ã100 Hzã®åšæ³¢æ°ã§ç»åãæŽæ°ãããšããçç±ã ãã§èª°ããèšãããšã¯ã»ãšãã©ãããŸããã ãããã£ãŠã784åã®æž¬å®å€ã2ã€ã«
衚瀺ããæ¹æ³ãç¥ã£ãŠãããšããã§ãããã äžå¯èœã«èãããŸããïŒ äžè¬çã«ã¯ããã§ãã
ãã£ãªã¯ã¬ã®åçã
äœçšããŸããã©ã®ãããªãããã³ã°ãéžæããªãããè¡çªãé¿ããããšã¯ã§ããŸããã
3Dã€ãªã¥ãŒãžã§ã³-> Shadowmaticã® 2Dãããžã§ã¯ã·ã§ã³å¹žããªããšã«ã次ã®ä»®å®ãç«ãŠãããšãã§ããŸãã
- åæã®å€æ¬¡å
空éã¯çã§ã ãã€ãŸãããµã³ãã«ã§åäžã«æºããããããšã¯ã»ãšãã©ãããŸããã
- ç¹ã«ååšããªãããšãç¥ã£ãŠããã°ãæ£ç¢ºãªãããã³ã°ãèŠã€ããå¿
èŠã¯ãããŸããã 代ããã«ãä¿èšŒãããæ£ç¢ºãªè§£ãæã¡ãæåŸ
ãããçµæãè¿äŒŒããå¥ã®åé¡ã解決ã§ããŸãã ããã¯ãJPEGå§çž®ã®åçã飿³ãããŸããçµæã¯ãŸã£ããåãã§ã¯ãããŸããããç»åã¯å
ã®ç»åãšéåžžã«ãã䌌ãŠããŸãã
質åãçºçããŸãïŒãã©ã°ã©ã2ã§æãè¿äŒŒããåé¡ã¯äœã§ããïŒ æ®å¿µãªããããæè¯ããšãããã®ã¯ãããŸããã æ¬¡å
åæžã®å質ã¯äž»èгçã§ãããæçµçãªç®æšãããã³ã¯ã©ã¹ã¿ãªã³ã°æ¹æ³ãéžæãããšãã«ãã£ãŠç°ãªããŸãã
sklearnãšã¯ç°ãªãã¯ã©ã¹ã¿ãªã³ã°ã¢ã«ãŽãªãºã t-SNEã¯ãåã蟌ã¿ã°ã©ãã¢ã«ãŽãªãºã ãšåŒã°ããå¯èœæ§ã®ããæ¬¡å
åæžã¢ã«ãŽãªãºã ã®1ã€ã§ãã éèŠãªèãæ¹ã¯ããé¡äŒŒãé¢ä¿ãç¶æããããšã§ãã
èªåã§è©ŠããŠã¿ãŠãã ãã ã
ãããã¯ãã¹ãŠäººå·¥çãªäŸã§ãããåªããŠããŸãããååã§ã¯ãããŸããã ã»ãšãã©ã®å®éã®ããŒã¿ã»ããã¯ãåé圢ã®ã¯ã©ã¹ã¿ãŒãæã€ã¯ã©ãŠãã«äŒŒãŠããŸãã ããšãã°ãMNISTã¯æ¬¡ã®ããã«ãªããŸãã
t-SNEãé©çšããåŸã®MNISTã©ã€ã³ããã°ã©ãã³ã°
次ã«ãæ¥ã«æ¹åãå€ããŠã
ç·åœ¢èšç»æ³ ïŒLPïŒã®æŠå¿µãçè§£ããŸãããã ç³ãèš³ãããŸããããããã¯æ°ãããã¶ã€ã³ãã¿ãŒã³ãJavascriptãã¬ãŒã ã¯ãŒã¯ããŸãã¯ã¹ã¿ãŒãã¢ããã§ã¯ãããŸããã ããã¯æ°åŠã§ãïŒ
ã¹ã«ã©ãŒç©ãæå°åããŸã
ãããŠ
ã«äŸåããç·åœ¢äžçåŒã®ã·ã¹ãã ãèæ
®ãã
ãããã³ãã®ãã¹ãŠã®åº§æšãè² ã§ã¯ãªããšããèŠä»¶ã LPã¯ãåžæé©åã®çè«ã§ããç ç©¶ãããŠãããããã¯ã§ãã ãåç¥ã®ããã«ããã®åé¡ã¯
匱å€é
åŒæéã§è§£æ±ºã§ããŸã-éåžžã¯
ãããã§
nã¯å€æ°ã®æ°ïŒã¿ã¹ã¯ãã£ã¡ã³ã·ã§ã³ïŒã§ãã ããããç·åœ¢æéã§å®è¡ãããè¿äŒŒã¢ã«ãŽãªãºã ããããŸãã ãããã®ã¢ã«ãŽãªãºã ã¯è¡åä¹ç®ã䜿çšãã广çã«äžŠååã§ããŸãã ããã°ã©ããŒã®æ¥œåïŒ
é©ãã»ã©å€ãã®ã¿ã¹ã¯ãLPã«æžããããšãã§ããŸãã ããšãã°ã
茞éã®åé¡ãèããŠã¿ãŸãããã
茞éã¿ã¹ã¯ïŒåºçºç¹ïŒSïŒããã³æ¶è²»ç¹ïŒDïŒåºçºç¹ãšæ¶è²»ç¹ã¯çãããªãå ŽåããããŸãã æ¶è²»ã®åãã€ã³ãã«ã¯ãäžå®éã®ååãå¿
èŠã§ãã ååºçºå°ç¹ã«ã¯éããããªãœãŒã¹ããããããã€ãã®æ¶è²»å°ç¹ã«é¢é£ä»ããããŠããŸãã äž»ãªã¿ã¹ã¯ã¯æ¬¡ã®ãšããã§ããåãšããž
ãã®äŸ¡å€ããã
ãããã£ãŠãæå°éã®ã³ã¹ãã§äŸçµŠã®ååžãèŠã€ããå¿
èŠããããŸãã
å³å¯ã«èšãã°
æåŸã®æ¡ä»¶ã¯ãåºçºç¹ã§ååãçµäºããããååã®éèŠããªããªãããšãæå³ããŸãã ãã
ãåŒ
8ã¯æ¬¡ã®ããã«æ£èŠåããã³ç°¡ç¥åã§ããŸãã
ãåºè·ããšãæ¶è²»ãããåå°ãã«çœ®ãæãããšã
ã ãŒããŒã®ã¿ã¹ã¯ïŒ
Earth Mover's Distance ãEMDïŒã«ç§ãã¡ãå°ããŸãïŒããã»ããã®ããŒãããå¥ã®ã»ããã«å°çããã©ãã°ããããã«å¿
èŠãªäœæ¥ãæå°éã«æããŸãã ããã§ãå°é¢ã«ç©Žãæãå¿
èŠãããå Žåã®å¯ŸåŠæ¹æ³ãããããŸããã
ã¢ãŒã¹ã ãŒããŒã®è·é¢ãåºçºããšãæ¶è²»ããããã¹ãã°ã©ã ãã«çœ®ãæãããšãããã£ãŒãã©ãŒãã³ã°åãã®æä»£ã®ç»åãæ¯èŒããæãäžè¬çãªæ¹æ³ãåŸãããŸãïŒ
èšäºäŸ ïŒã ãã®æ¹æ³ã¯ã絶察å€ã®éãã ãã§ãªããå Žæã®éããèæ
®ãããããåçŽãªL2ãããåªããŠããŸãã
EMDã¯ããŠãŒã¯ãªããè·é¢ããããã¹ãã°ã©ã ã®æ¯èŒã§åªããŠããŸããåºçºããšãæ¶è²»ããåèªã«çœ®ãæãããšã
word Mve 's Distanceã«
å°éããŸããããã¯ã
word2vecã䜿çšããŠåèªã®ãã¯ãã«è¡šçŸãååŸãã2ã€ã®æã®æå³ãæ¯èŒãã广çãªæ¹æ³ã§ãã
ã¯ãŒãã ãŒããŒã®è·é¢ãæ¡ä»¶
5ã8ãç·©åãã
8ãæããŠã
äžçåŒ
6ãš
7ãæ¹çšåŒã«å€æãããããã«å¯Ÿç§°ãªäžçåŒã远å ãããšãç·åœ¢å²ãåœãŠåé¡LAPãåŸãããŸãã
茞éã®åé¡ãšã¯å¯Ÿç
§çã«ãæã
ã¯ããã蚌æããããšãã§ããŸã
x_ {ij} \ in \ {0,1 \} -ãœãªã¥ãŒã·ã§ã³ã¯åžžã«ãã€ããªã§ãã èšãæããã°ãåºçºå°ããã®ãã¹ãŠã®ååãæ¶è²»å°ã«è¡ãããã©ãã«ãè¡ããŸããã
t-SNEã©ãã
æåã®ã»ã¯ã·ã§ã³ããçè§£ããããã«ãt-SNEã¯ãå¹³é¢äžã®ãã¹ãŠã®ã¢ã«ãŽãªãºã ãšåæ§ã«ãåºåã«æ£ä¹±å³ãçæããŸãã ããã¯ããŒã¿ã»ããã調æ»ããã¿ã¹ã¯ã«ã¯çæ³çã§ãããå
ã®å³ãæ£ããã°ãªããã«é
眮ããå¿
èŠãããå ŽåããããŸãã ããšãã°ããã®ãããªã¹ã¿ã€ãªã³ã°ã¯ãœãŒã¹{d}ã«å¿
èŠã§ã...çç±ã¯ããã«ããããŸãã
æ£ããã°ãªãããããã®ä»£ããã«t-SNEãé©çšããåŸãMNISTã®æ°å€ã瀺ããŸãã ããã¯ã©ã®ããã«èŠãããã§ãïŒ
t-SNEã®åŸã®ââMNISTæ°åããŸãæç¢ºã§ã¯ãããŸããã ããã§ãLAPãçºçããŸããt-SNEãµã³ãã«ãšã°ãªããããŒãéã®ãŠãŒã¯ãªããè·é¢ã®ãã¢ãšããŠã³ã¹ããããªãã¯ã¹ãå®çŸ©ããã°ãªãããšãªã¢ãããŒã¿ã»ããã®ãµã€ãºã«èšå®ããŸãã
ããããŠãã®çµæãåé¡ã解決ããŸãã ããããã©ã®ããã«ïŒ ã¢ã«ãŽãªãºã ã«ã€ããŠã¯ãŸã 話ããŠããŸããã
Joncker-Volgenantã¢ã«ãŽãªãºã
ã·ã³ãã¬ãã¯ã¹æ³ã§å§ãŸããéåžžã«è€éãªããŒã«ã§çµããæ±çšã®ç·åœ¢æé©åã¢ã«ãŽãªãºã ãéåžžã«å€æ°ããããšã
ããããŸãã ç¹å®ã®ã¿ã¹ã¯çšã«ç¹å¥ã«èšèšãããã¢ã«ãŽãªãºã ã¯ãããã€ãã®å¶éããããŸãããéåžžãã¯ããã«é«éã«åæããŸãã
ãã³ã¬ãªãŒã®ã¢ã«ãŽãªãºã ã¯ã1950幎代ã«éçºãããç¹æ®ãªæ¹æ³ã®1ã€ã§ãã ãã®è€éãã¯
ã çè§£ãšå®è£
ãéåžžã«ç°¡åã§ãããããå€ãã®ãããžã§ã¯ãã§äººæ°ããããŸãã ããšãã°ãåœŒã¯æè¿
sipyã®äžéšã«ãªã
ãŸãã ã æ®å¿µãªããã倧éã®ããŒã¿ã§ã¯é«éã«åäœãããscipyãªãã·ã§ã³ã¯
ç¹ã«äœéã§ãã 2500æéã®MNISTãµã³ãã«ãåŠçããã®ã«1æéåŸ
ã¡ãŸããããPythonã¯ãŸã 被害è
ãæ¶åããŠããŸããã
Jonker-VolgenantïŒJVïŒã¢ã«ãŽãªãºã ã¯ã1987幎ã«éçºãããæ¹è¯ãããã¢ãããŒãã§ãããŸããæçã®æ¡åŒµåè·¯ã®ééã«åºã¥ããŠããããã®è€éãããã¥ãŒããã¯ã§ãããããã€ãã®ããªãã¯ã䜿çšããŠèšç®è² è·ãåçã«åæžããŸãã JVãå«ãå€ãã®ã°ã©ãäœæã¢ã«ãŽãªãºã ã®ããã©ãŒãã³ã¹ã¯ã
Discrete Applied Mathematicsã«ãã2000幎ã®èšäºã§åºç¯ã«æ€èšãããŸããã çµè«ã¯æ¬¡ã®ãšããã§ãã
ãJVã¯ãã¹ãŠã®ã¯ã©ã¹ïŒã¿ã¹ã¯-èè
泚ïŒã§è¯å¥œã§å®å®ããå¹³åããã©ãŒãã³ã¹ãåããŠãããããã¯ã©ã³ãã ã¿ã¹ã¯ãšç¹å®ã¿ã¹ã¯ã®äž¡æ¹ã«æé©ãªã¢ã«ãŽãªãºã ã§ããã
ãã ããJVã«ã¯æ¬ ç¹ããããŸãã 圌ã¯ãã³ã¹ããããªãã¯ã¹å
ã®èŠçŽ ã®ãã¢ã®éãã«éåžžã«å¯å®¹ã§ãã ããšãã°ããã€ã¯ã¹ãã©ã¢ã«ãŽãªãºã ã䜿çšããŠã°ã©ãã§æçãã¹ãæ€çŽ¢ãããã®ã°ã©ãã«éåžžã«é¡äŒŒãã2ã€ã®ã³ã¹ãã衚瀺ãããå Žåãã¢ã«ãŽãªãºã ã¯ç¡éã«ãŒãã«å
¥ããªã¹ã¯ãè² ããŸãã ãã€ã¯ã¹ãã©ã®ã¢ã«ãŽãªãºã ãããèŠããšãæµ®åå°æ°ç¹å€ã®ç²ŸåºŠã®éçã«éãããšãã²ã©ãããšãèµ·ããããšãããããŸãã éåžžã®æ¹æ³ã¯ãã³ã¹ããããªãã¯ã¹ã«å€§ããªæ°ãæããããšã§ãã

ããã«ãããããããç§ã®ãããªæ ãè
ã®ãšã³ãžãã¢ã«ãšã£ãŠJVã§æãé
åçãªã®ã¯Python 2ããã±ãŒãžã§ããããã¯CïŒ
pyLAPJVã®ã¢ã«ãŽãªãºã ã®
å€ä»£ã®å®è£
ã®ã©ãããŒã§ãã ãã®Cã³ãŒãã¯ã1996幎ã«MagicLogic Optimizationã®ããã«
Roy Jonkerã«ãã£ãŠæžãããŸããã pyLAPJVããµããŒããããªããªã£ããšããäºå®ã«å ããŠã
ãã«ãªã¯ãšã¹ãïŒ2ã§ä¿®æ£ããå°ããªããŒã¿åºåã®åé¡ããããŸãã Cã³ãŒãã¯ä¿¡é Œã§ããŸããããã«ãã¹ã¬ãããŸãã¯SIMDåœä»€ã䜿çšããŸããã ãã¡ãããJVã¯æ¬è³ªçã«ã·ã³ã°ã«ã¹ã¬ããã§ããã䞊ååããã®ã¯ããã»ã©ç°¡åã§ã¯ãªãããšãçè§£ããŠããŸããã
AVX2ã䜿çšããŠãæãé«äŸ¡ãªã¹ããŒãžïŒæ¡åŒµãã§ãŒã³ã®åæïŒãæé©åããŠãã»ãŒ2åé«éåããŸããã ãã®çµæãPython 3ã®
src-d / lapjvããã±ãŒãžãMITã©ã€ã»ã³ã¹ã®äžã§å©çšå¯èœã«ãªããŸããã
æ¡åŒµãã§ãŒã³ã®åæžã¯ãåºæ¬çã«é
åå
ã®æå°èŠçŽ ãš2çªç®ã®æå°èŠçŽ ãèŠã€ããããšã§ãã åçŽã«èãããŸãããå®éã«ã¯ãæé©åãããŠããªãCã³ãŒãã¯20è¡ããããŸãã AVXããŒãžã§ã³ã¯4å倧ãããªã£ãŠããŸããåSIMDããã»ããµãšã¬ã¡ã³ãã«æå°å€ãéä¿¡ãã
ãã¬ã³ããå®è¡ããŠãããSamsungã®
libSoundFeatureExtractionã§äœæ¥äžã«åŠãã ä»ã®SIMDãã©ãã¯ããžãã¯ã¹ãã«ãé©çšããŸãã
template <typename idx, typename cost> __attribute__((always_inline)) inline std::tuple<cost, cost, idx, idx> find_umins( idx dim, idx i, const cost *assigncost, const cost *v) { cost umin = assigncost[i * dim] - v[0]; idx j1 = 0; idx j2 = -1; cost usubmin = std::numeric_limits<cost>::max(); for (idx j = 1; j < dim; j++) { cost h = assigncost[i * dim + j] - v[j]; if (h < usubmin) { if (h >= umin) { usubmin = h; j2 = j; } else { usubmin = umin; umin = h; j2 = j1; j1 = j; } } } return std::make_tuple(umin, usubmin, j1, j2); }
2ã€ã®é£ç¶ããæå°å€ãC ++ãèŠã€ããã³ãŒãã衚瀺 template <typename idx> __attribute__((always_inline)) inline std::tuple<float, float, idx, idx> find_umins( idx dim, idx i, const float *assigncost, const float *v) { __m256i idxvec = _mm256_setr_epi32(0, 1, 2, 3, 4, 5, 6, 7); __m256i j1vec = _mm256_set1_epi32(-1), j2vec = _mm256_set1_epi32(-1); __m256 uminvec = _mm256_set1_ps(std::numeric_limits<float>::max()), usubminvec = _mm256_set1_ps(std::numeric_limits<float>::max()); for (idx j = 0; j < dim - 7; j += 8) { __m256 acvec = _mm256_loadu_ps(assigncost + i * dim + j); __m256 vvec = _mm256_loadu_ps(v + j); __m256 h = _mm256_sub_ps(acvec, vvec); __m256 cmp = _mm256_cmp_ps(h, uminvec, _CMP_LE_OQ); usubminvec = _mm256_blendv_ps(usubminvec, uminvec, cmp); j2vec = _mm256_blendv_epi8( j2vec, j1vec, reinterpret_cast<__m256i>(cmp)); uminvec = _mm256_blendv_ps(uminvec, h, cmp); j1vec = _mm256_blendv_epi8( j1vec, idxvec, reinterpret_cast<__m256i>(cmp)); cmp = _mm256_andnot_ps(cmp, _mm256_cmp_ps(h, usubminvec, _CMP_LT_OQ)); usubminvec = _mm256_blendv_ps(usubminvec, h, cmp); j2vec = _mm256_blendv_epi8( j2vec, idxvec, reinterpret_cast<__m256i>(cmp)); idxvec = _mm256_add_epi32(idxvec, _mm256_set1_epi32(8)); } float uminmem[8], usubminmem[8]; int32_t j1mem[8], j2mem[8]; _mm256_storeu_ps(uminmem, uminvec); _mm256_storeu_ps(usubminmem, usubminvec); _mm256_storeu_si256(reinterpret_cast<__m256i*>(j1mem), j1vec); _mm256_storeu_si256(reinterpret_cast<__m256i*>(j2mem), j2vec); idx j1 = -1, j2 = -1; float umin = std::numeric_limits<float>::max(), usubmin = std::numeric_limits<float>::max(); for (int vi = 0; vi < 8; vi++) { float h = uminmem[vi]; if (h < usubmin) { idx jnew = j1mem[vi]; if (h >= umin) { usubmin = h; j2 = jnew; } else { usubmin = umin; umin = h; j2 = j1; j1 = jnew; } } } for (int vi = 0; vi < 8; vi++) { float h = usubminmem[vi]; if (h < usubmin) { usubmin = h; j2 = j2mem[vi]; } } for (idx j = dim & 0xFFFFFFF8u; j < dim; j++) { float h = assigncost[i * dim + j] - v[j]; if (h < usubmin) { if (h >= umin) { usubmin = h; j2 = j; } else { usubmin = umin; umin = h; j2 = j1; j1 = j; } } } return std::make_tuple(umin, usubmin, j1, j2); }
AVX2åœä»€ã䜿çšããŠæé©åããã2ã€ã®é£ç¶ããæå°å€ãèŠã€ããç§ã®ã©ãããããã§ã¯ãlapjvã2500ã®MNISTãµã³ãã«ã5ç§ã§ããã¯ããŸããããã«ãããŸã-貎éãªçµæïŒ
t-SNEåŸã®MNISTã®å²ãåœãŠå²ãåœãŠããŒãããã¯
ãã®æçš¿ãæºåããããã«ãç§ã¯
Jupiter Notebookã䜿çšããŸããïŒãœãŒã¹ã¯
ãã¡ã ïŒã
ãããã«
t-SNEã§åŠçãããµã³ãã«ãæ£ããã°ãªããã«çœ®ã广çãªæ¹æ³ããããŸãã
src-d / lapjvã§å®è£
ãããJonker-Volgenantã¢ã«ãŽãªãºã ã䜿çšããŠãå²ãåœãŠåé¡ïŒLAPïŒã解決ããããšã«åºã¥ããŠããŸãã ãã®ã¢ã«ãŽãªãºã ã¯ã10,000ãµã³ãã«ãŸã§ã¹ã±ãŒãªã³ã°ã§ããŸãã
ãããä»äºã«æ¥ãŠãããŸãããïŒ :)wunderfund.ioã¯ã
é«é »åºŠã¢ã«ãŽãªãºã ååŒãæ±ãè¥ã財å£ã§ãã é«é »åºŠååŒã¯ãäžçäžã®æé«ã®ããã°ã©ããŒãšæ°åŠè
ã«ããç¶ç¶çãªç«¶äºã§ãã ç§ãã¡ã«åå ããããšã§ãããªãã¯ãã®é
åçãªæŠãã®äžéšã«ãªããŸãã
ç±å¿ãªç ç©¶è
ãããã°ã©ããŒåãã«ãè峿·±ãè€éãªããŒã¿åæãšäœé
å»¶ã®éçºã¿ã¹ã¯ãæäŸããŠããŸãã æè»ãªã¹ã±ãžã¥ãŒã«ãšå®å䞻矩ããªããããæææ±ºå®ãè¿
éã«è¡ããã宿œãããŸãã
ããŒã ã«åå ïŒ
wunderfund.io