¾î´Àµ¡ ¡°¹Ø¹Ù´ÚºÎÅÍ ½ÃÀÛÇÏ´Â µö·¯´× ½Ã¸®ÁÀÇ ¼¼¹øÂ° Ã¥ÀÌ ¹ß°£µÇ¾ú´Ù. ¹Ø¹Ù´Ú ½Ã¸®Áî´Â µö·¯´×À» ¿¬±¸, ÇнÀÇÏ´Â À̵éÀÌ À̱¸µ¿¼ºÀ¸·Î ±ØÂùÇÏ´Â µö·¯´× ÀÔ¹®¼ÀÌ´Ù.
°³ÀÎÀûÀ¸·Î ¾ËÆÄ°í µîÀå ÀÌÈÄ 2017³â óÀ½À¸·Î ±¸¸ÅÇÑ µö·¯´× ¼ÀûÀÌ ¡°¹Ø¹Ù´ÚºÎÅÍ ½ÃÀÛÇÏ´Â µö·¯´×¡± Àε¥, ÀÌ Ã¥ ´öºÐ¿¡ ¿ªÀüÆÄÀÇ ´Ë¿¡¼ ¹þ¾î³¯ ¼ö ÀÖ¾ú±â¿¡ Áö±Ýµµ ±íÀº ¾ÖÁ¤À» °®°í Àִ åÀÌ´Ù. ±×¶§´Â ½Ã¸®Áî·Î °è¼Ó ³ª¿ÃÁÙ ¸ô¶ú´Âµ¥ °á±¹ 3±Ç±îÁö ³ª¿Ô´Ù.
À̹ø µµ¼ 3±ÇÀº ¾î¶² ¹Ø¹Ù´ÚÀ» ±¸ÇöÇÏ°Ô µÉ±î? ±×°ÍÀº ¹Ù·Î
DeZero
¶ó´Â À̸§À» °¡Áø µö·¯´× ÇÁ·¹ÀÓ¿öÅ© ÀÌ´Ù.
ÅÙ¼Ç÷ο쳪 ÆÄÀÌÅäÄ¡ °°Àº ÈǸ¢ÇÑ µö·¯´× ÇÁ·¹ÀÓ¿öÅ©°¡ ÀÌ¹Ì Á¸ÀçÇϴµ¥ ±»ÀÌ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸µé Çʿ䰡 ÀÖÀ»±î¶ó´Â Àǹ®ÀÌ »ý±æ ¼öµµ ÀÖ´Ù. ±×·³¿¡µµ ÀÌ Ã¥À» ¹Ýµå½Ã Àоî¾ß ÇÒ ÀÌÀ¯´Â ¹«¾ùÀϱî? ´ëÇ¥ÀûÀ¸·Î ´ÙÀ½ 2°¡Áö ÀÌÀ¯¸¦ µé°í ½Í´Ù.
SOTA ¿¬±¸ ¹× °³¹ß Çù¾÷
¿¬±¸ ¸®ÅÍ·¯½Ã
´É·Â ÃֽŠAI ±â¼úÀ» Ȱ¿ëÇÏ¿© ¼ºñ½º¸¦ °³¹ßÇϴ ȸ»çÀϼö·Ï
SOTA±Þ ³í¹®À» ºü¸£°Ô ÀÌÇØÇϰí ÄÚµå·Î ±¸ÇöÇÏ´Â ´É·Â
ÀÌ ¸Å¿ì Áß¿äÇÏ´Ù. ¿¬±¸ °á°ú¸¦ ±¸Çöü·Î ¸¸µå´Â ´ëÇ¥ÀûÀÎ »çÀÌÆ®·Î paperswithcode¸¦ ¿¹·Î µé ¼ö Àִµ¥ ÃÖÀü¼±¿¡ À§Ä¡ÇÑ ±â¼úÀÎ ¸¸Å ŸÀÎÀÇ ¿¬±¸ °á°ú¸¦ ºü¸£°Ô ÇØ¼®ÇÏ¿© ±¸ÇöÇϰíÀÚÇÏ´Â ¼ºñ½º¿¡ ºü¸£°Ô ³ìÀÏ ¼ö ÀÖ´Â Ä¿¹Â´ÏÄÉÀÌ¼Ç ´É·Â ȤÀº ¸®ÅÍ·¯½Ã´Â ¸Å¿ì Áß¿äÇÑ ´É·ÂÀÌ´Ù.
¶ÇÇÑ ½º½º·ÎÀÇ ¿¬±¸¸¦ ÄÚµå·Î ±¸ÇöÇÏ°í °ËÁõÇÏ´Â °úÁ¤Àº
¿¬±¸ÀÇ ÀÌÇØ ¼öÁØ
ÀÚü¸¦ ³ôÀÏ ¼ö ÀÖÀ½°ú µ¿½Ã¿¡
´Ù¸¥ÀÌ¿ÍÀÇ ÀÇ»ç¼ÒÅëÀ» Çâ»ó
½Ãų ¼ö ÀÖ°í
°´°üÈ
ÇÒ ¼ö ÀÖ´Ù.
¿¬±¸ ¸®ÅÍ·¯½Ã¿Ü¿¡µµ ½ÇÁ¦ ¼ºñ½º¸¦ ±¸ÇöÇÒ ¶§ÀÇ Ä¿¹Â´ÏÄÉÀ̼ǵµ Áß¿äÇÑ ºÎºÐÀÌ´Ù. ¶Ù¾î³ ¾ÆÀ̵ð¾î°¡ ÀÖÀ½¿¡µµ ÆÀ ³» ¼öÁØ ³ôÀº Äڵ带 ÀÌÇØÇÏÁö ¸øÇØ
¹ÎÆó ÄÚµå
¸¦ ÀÛ¼ºÇѴٰųª,
¹Ì·¡¿¡ ¿¹±âÄ¡ ¸øÇÑ ¿À·ù¸¦ ¾ç»êÇÒ ¼ö ÀÖ´Â °¡´É¼ºÀ» °¡Áø ÄÚµå
¸¦ ÁÖÀÔÇÑ´Ù¸é ÇâÈÄ ¼ºñ½º ǰÁú°ú ÀÏÁ¤¿¡ ¸·´ëÇÑ ÁöÀåÀ» ÃÊ·¡ÇÒ ¼ö ÀÖ´Ù.
º» µµ¼¸¦ ÅëÇØ µö·¯´× ÇÁ·¹ÀÓ¿öÅ© ³»ºÎ ±¸Çö ¸ÅÄ¿´ÏÁòÀ» È®½ÇÈ÷ ÀÌÇØÇÑ´Ù¸é ½Ç ¼ºñ½º °³¹ß¿¡ ÀÖ¾î ¼öÁسôÀº Çù¾÷À» ÅëÇÑ ¼ºñ½º ±¸ÇöÀº ¹°·Ð ´Ù¸¥ ¿¬±¸ °á°ú¸¦ ºü¸£°í ½±°Ô ºÐ¼®ÇÏ¿© ÁÁÀº ÀλçÀÌÆ®¸¦ ³ìÀÏ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù.
ÇÁ·ÎÁ§Æ®
¼³°è-±¸Çö ´É·Â
Çâ»ó µö·¯´× ºÐ¾ß ¿Ü¿¡µµ ÀÌ Ã¥¿¡´Â ÆÄÀ̽ãÀ» Ȱ¿ëÇÑ ´ë±Ô¸ð ÇÁ·ÎÁ§Æ® ¼³°è ±â¹ýÀ» ´Ù·ç°í ÀÖ´Ù. º¯¼ö¿Í ÇÔ¼ö¸¦ ±»ÀÌ Variable, FunctionÀ̶ó´Â Ŭ·¡½º·Î Ãß»óÈÇÏ¿© Ãâ¹ßÇϴµ¥¼
°´Ã¼ÁöÇâ
¿¡ ¼ûÀº öÇÐÀ» ÀÌÇØÇÒ ¼ö ÀÖ´Ù.
Define-by-Run(µ¿Àû °è»ê ±×·¡ÇÁ), °íÂ÷¹ÌºÐ, Computational Graphs¸¦ Á÷Á¢ ±¸ÇöÇÏ¸ç ¿Ö °³¹ßÀÚµéÀÌ ÅÙ¼Ç÷οì 1.x ¹öÀüº¸´Ù ÆÄÀÌÅäÄ¡¿¡ ¿±¤Çß´ÂÁö, ÅÙ¼Ç÷οì 2.xÀÇ ÃâÇöÀÌ ÇÊ¿¬ÀûÀ̾ú´ÂÁö ±ú´Ý´Â °ÍÀº ½Åȣź¿¡ ºÒ°úÇÏ´Ù.
ÅÙ¼Ç÷δ ¹öÀü 1.x¿¡¼ äÅÃÇÑ µ¶ÀÚÀûÀÎ ÇÁ·Î±×·¡¹Ö ¾ð¾î Domain Specific Language (DSL)À» »ç¿ëÇÑ Á¤Àû °è»ê ±×·¡ÇÁ ±â´ÉÀ» º¸¸ç À߸øµÈ ¼³°è°¡ °¡Á®¿À´Â ¿©ÆÄ¸¦ ´ë±Ô¸ðÀÇ ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÏÁö ¾Ê¾Æµµ °£Á¢ÀûÀ¸·Î³ª¸¶ Á÷Á¢ ´«À¸·Î È®ÀÎÇÏ°í ½Ç°¨ÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
À̸¦ ÅëÇØ µ¿Àû
Define-by-Run
¹æ½Ä(ÅÙ¼Ç÷οìÀÇ °æ¿ì Eager ExecutionÀ̶ó ÁöĪ) ¸ÅÄ¿´ÏÁò°ú ÀÚµ¿ ¹ÌºÐÀÇ ¸ÅÄ¿´ÏÁò ±×¸®°í À̸¦ Áö¿øÇϱâ À§ÇÑ ¼³°è ±â¹ýÀ» ¹è¿ï ¼ö Àִµ¥ ÀÌ´Â ´Ù¸¥ ¼ºñ½º¸¦ ±¸ÇöÇÒ ¶§µµ Ȱ¿ëÇÒ ¼ö ÀÖ´Â ¸ÞŸ ¼³°è±â¹ýÀ¸·Î Ȱ¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀÚµ¿ ¹ÌºÐ, °èÃþ Ä÷º¼Ç, µ¥ÀÌÅͼÂ, ¿ÉƼ¸¶ÀÌÀú °¢°¢ÀÇ Layer¿Í Ŭ·¡½º¸¦ ºÐ¸®ÇÏ´Â °üÁ¡À̳ª ÆÄÀ̽ãÀ» PythonicÇÏ°Ô È°¿ëÇÏ´Â ¹æ¹ýºÎÅÍ GPU Ȱ¿ë ¹× ¼Óµµ, ¸Þ¸ð¸® ¼º´É °³¼± Ãø¸é¿¡¼µµ ¹è¿ï °ÍÀÌ ¸¹±â¿¡ ±»ÀÌ µö·¯´×ÀÌ ¾Æ´Ï´õ¶óµµ ¾î¶² ¼ºñ½º¸¦ ¼³°è ¹× ±¸ÇöÇϴµ¥ ÇÊ¿äÇÑ ÇÁ·ÎÁ§Æ® ´É·ÂÀ» Å©°Ô Çâ»ó ½Ãų ¼ö ÀÖ´Ù.
º» µµ¼¸¦ ÀÐÀ¸¸ç ´À²¼´ø À§ 2°¡Áö ÀåÁ¡ ¿Ü¿¡µµ
´Ü ÇÑ ±ÇÀÇ Ã¥À¸·Î µö·¯´× ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸µé ¼ö ÀÖ´Ù´Â »ç½Ç
¿¡ ÀûÀÝÀÌ ³î¶ú´Ù.
´Ü 2°³ÀÇ Å¬·¡½º Variable, FunctionÀÇ Ãß»óÈ¿¡¼ Ãâ¹ßÇÏ¿© ¿ªÀüÆÄ, Define-by-Run(µ¿Àû °è»ê ±×·¡ÇÁ), °íÂ÷¹ÌºÐ, Computational Graphs, Layer ¹× Optimizer µîÀÇ È®À强À» ºÎ¿©Çϸç 60´Ü°è °úÁ¤À» µû¶ó ÇÏ´Ù º¸¸é ¾î´Àµ¡ CNN, RNN, LSTM ¸ðµ¨À» Áö¿øÇÏ´Â µö·¯´× ÇÁ·¹ÀÓ¿öÅ© DeZero¸¦ ¸¸µé ¼ö ÀְԵȴÙ.
ƯÈ÷
¾î¶² ½Äµµ ¹ÌºÐ °¡´ÉÇÏ°Ô ¸ðµâÈÇÑ ¼³°è
°¡ ÀλóÀûÀ̾úÀ¸¸ç, 5°³°íÁö 60´Ü°èº°·Î ±¸ÇöÇÑ °á°ú¸¦ ½ÃÁ¡º°·Î ½ÇÇàÇÏ¸ç ´«À¸·Î È®ÀÎÇÒ ¼ö ÀÖ¾î º¸´Ù ½¬¿î ÀÌÇØ°¡ °¡´ÉÇß´Ù.
½º½º·Î ¿ªÀüÆÄ¸¦ ¿ÏÀüÈ÷ ÀÌÇØÇϰí ÀÖ´Ù°í »ý°¢Çß¾ú´Âµ¥
3°íÁö¿¡¼ ¿ªÀüÆÄÀÇ ¿ªÀüÆÄ¸¦ ±¸ÇöÇÏ¸é¼ ±¸¼®¿¡ ³²¾ÆÀÖ´Â ¹«ÁöÀÇ ¿µ¿ªÀ» È®½ÇÈ÷ ±úÄ¥ ¼ö ÀÖ´Â °è±â
¸¦ ¾òÀ» ¼ö ÀÖ¾î ¸¸Á·½º·¯¿ü´Ù.
Ã¥ÀÇ ±¸¼º°ú Àü´Þ·Â ¶ÇÇÑ ÀÏǰÀÌ´Ù. µ¶ÀÚ ÀǽÄÀÇ È帧À» ²ç¶Õ±â¶óµµ ÇÑ µí ±Ã±ÝÇÑ Áú¹®ÀÌ »ý±æ¶§¸¶´Ù ÀúÀÚÀÇ ´äº¯ÀÌ µîÀåÇÑ´Ù. µ¶ÀÚÀÇ ¸¶À½À» ¾î¶»°Ô ÀÌ·¸°Ô Àß µé¿©´Ù º¼ ¼ö ÀÖÀ»±î? ÀúÀÚÀÇ ¶Ù¾î³ ¿¹Ãø °ø°¨°¢·Â(?)¿¡ °¨ÅºÇÏ´Â ÀÏ·ÃÀÇ °úÁ¤À̾ú´Ù. °í¼öµéÀÇ ³»°øÀ» À̺¸´Ù ½±°í ÆíÇÏ°Ô ¹è¿ì±ä ¾î·Á¿ï °Í °°´Ù. ÀüÆí ¸í¼º ±×´ë·Î µ¶ÀÚ ÀǽÄÀ» ²ç¶Õ µí ±Ã±ÝÁõÀÌ »ý±æ ¶§¸¶´Ù Ä£ÀýÇÑ ¼³¸íÀÌ µîÀåÇÑ´Ù.
¼³°è¿¡ ³ì¾ÆÀִ öÇÐÀº ±â¼úÀ» ³Ñ¾î ¿¹¼úÀÇ ¿µ¿ª¿¡ °¡±õ´Ù. Layer, Optimizer, DataLoader µî ¾Õ¼ ¼³¸íÇÑ ¼³°è öÇÐ ¿Ü¿¡µµ ±¸Ã¼ÀûÀ¸·Î
°è»ê ±×·¡ÇÁÀÇ À§»óÀÌ ¾î¶² ÇüÅÂÀÏÁö¶óµµ ¿ªÀüÆÄ°¡ °¡´ÉÇϵµ·Ï ¼³°è
ÇÑ ºÎºÐÀº °¨ÅºÀ» ±ÝÇÒ ¼ö ¾ø¾ú´Ù.
°³ÀÎÀûÀ¸·Î´Â DeZero¸¦ ¸¸µç ÈÄ paperswithcode »çÀÌÆ®¸¦ ºñ·Ô ¿¬±¸ °á°úÀÇ ÄÚµå ±¸Çöü°¡ Àüº¸´Ù ½±°Ô ÀÐÇô ¸Å¿ì ½Å±âÇß´Ù. ¿¬±¸ÀÇ Ã¶ÇÐÀ̳ª ¾ÆÀ̵ð¾î¸¦ »ý»ýÈ÷ ´À³¥ ¼ö ÀÖ´Â ¶Ç ´Ù¸¥ ½Ã¾ß¸¦ ¾òÀº °Í °°¾Æ ƯÈ÷ ¸¸Á·½º·¯¿ü´Ù.
Eager Execution, Computational Graphs¸¦ Á÷Á¢ ±¸ÇöÇϸç TensorFlow2.0 µîÀå µîÀÇ Æ®·»µå¸¦ ¾Ë ¼ö ÀÖ¾ú°í, ÀÚÁÖ »ç¿ëÇÏÁö ¾Ê´ø ÇÁ·¹ÀÓ¿öÅ©¿¡ ´ëÇÑ Àڽۨ ¶ÇÇÑ Å« ¼öÈ®À̾ú´Ù.
ÅÙ¼Ç÷οì 1.x¿¡¼ ´©±¸³ª ´À²¼´ø ºÒÆíÇÔ°ú ¾î»öÇÔÀ̾ú´ø PlaceHolder, SessionºÐ±â, Define-and-Run ¹æ½Ä¿¡¼ ºñ·ÔµÈ °è»ê ±×·¡ÇÁ ¼öÇàÀÇ ºñÈ¿À²¼º µîÀÌ ¿Ö ¹ß»ýÇß´ÂÁö ±×·¡¼ ¿Ã¹Ù¸¥ ¼³°è°¡ ¿Ö Áß¿äÇÑÁö ³ª¾Æ°¡ ÆÄ°ÝÀûÀÎ ¹®¹ý º¯È¿¡ µû¸¥ ¸®½ºÅ©¸¦ °¨¼öÇϸ鼱îÁö ÅÙ¼Ç÷οì 2.xÀÌ µîÀåÇÒ ¼ö ¹Û¿¡ ¾ø¾ú´ø ÇÊ¿¬À» ±¸Ã¼ÀûÀ¸·Î ½Ç°¨ÇÒ ¼ö ÀÖ¾ú´Ù.
±× ¿Ü ÆÄÀ̽ãÀ» ÆÄÀ̽ã´ä°Ô Ȱ¿ëÇÏ´Â ¹æ¹ýºÎÅÍ GPU Ȱ¿ë ¹× ¼Óµµ, ¸Þ¸ð¸® ¼º´É °³¼± Ãø¸é¿¡¼µµ ¹è¿ï °ÍÀÌ ¸¹¾Ò´Ù.
Àд ³»³» ¸Ó¸®¼Ó¿¡ °è¼Ó ´À³¦Ç¥°¡ ¶°¿À¸£´Â ¸íÀÛ ÁßÀÇ ¸íÀÛÀ̾ú´Ù. ML/DL ¿£Áö´Ï¾îºÐµéÀº ¹°·Ð IT ¼ºñ½º¸¦ ¼³°è, ±¸ÇöÇÏ´Â ºÐµé²²µµ °·ÂÇÏ°Ô ÃßõÇÏ°í ½ÍÀº Ã¥ÀÌ´Ù.
Ã¥¼Ò°³ - ¹Ø¹Ù´ÚºÎÅÍ ½ÃÀÛÇÏ´Â µö·¯´× 3
´Ý±â