딥러닝 무식하게 정리해 보기 01

딥러닝, 인공지능 이야기를 하면 CNN, RNN 같은 알고리즘에 관한 글만 굉장히 많아서 조금 탑뷰에서 바라볼 수 있는 관점에서 전체 기술과 활용처를 분류하고 딥러닝 프레임워크에 대해서 알아 보았다. 딥러닝 프레임워크는 같이 프로젝트를 하고 있는 팀 로자미아 가 같이 정리를 해 주었다. Mabel, Jin, Alex 에게 감사를 드린다.

AI 기술의 응용 분야

딥러닝은 여러가지 알고리즘을 가지고 있지만 결국 하고자 하는 대부분의 일들이 군집(clustering)과 분류(classification) 라는 관점으로 귀결된다.
그에 따라 AI 기술 스택을 분류하는 방법은 여러가지가 있고 활용되는 분야도 다양하지만 아래와 같이 분류를 해보았다.
먼저 챗봇과 번역등에 사용되는 NLU등을 사용하는 Conversational AI.
두번째는 개와 고양이 구분하기 등에 많이 사용되는 Visual AI 분야.
마지막으로는 전통적으로 진행하던 데이타 분석을 하는 Analytic AI.

Conversational AI

conversation goes on

Conversational AI 에는 기본적으로 NLU(Naturla Language Understanding)을 그 근간으로 한다. 오픈 소스중에선 Rasa.ai 같은 프레임워크가 존재하고 오픈 서비스로는 wit.ai 와 api.ai 가 있고 제품으로 유명한 것은 IBM의 conversational 엔진이 유명하다. 일반적인 개발자들이 가장 많이 만나는 것은 페이스북을 가지고 챗봇을 한번 만들어보다가 만나게 되는 것이 NLU 와의 처음 만남이 된다고 볼 수 있다. 이 NLU 엔진은 여러가지 기능을 가지는데 기본적으로 전체의 맥락을 판단하고 키워드를 뽑아내는 게 으뜸된 기능인데 이것을 인텐트와 엔터티라는 업계 용어로 지칭한다.
맥락 혹은 화행에는 기본적으로 의도가 들어가 있고 감정이 들어가 있어서 이런 감성을 파악해 내는 데 word2vec doc2vec 같은 툴들이 사용된다. 한글의 경우는 영어와 다른 구조를 가지고 있기 때문에 형태소를 분석해야 하고 mecab-ko 나 은전한잎 같은 툴들이 이용된다.

여기까지는 일반적인 NLU에 대한 이야기만 한 것이고, 챗봇을 위해서는 다이알로그의 룰이 존재하기 마련이라 룰 매니저 혹은 다이알로그 매니저들이 존재한다. 얘룰 들면 페이스북 챗봇을 만들 때 이런 말이 들어오면 이렇게 대답해야지.. 라고 만드는 대화 구성이 그런 역할을 하는 것이다. 이런 다이알로그 개념이 들어가면 한 문장의 문맥이 아닌 전체 문맥을 파악해야하는 기능과 랭킹 시스템을 구축해야 한다.

조금 더 나아가면 보통 STT(Speech To Text), TTS(Text To Speech) 로 알고 있는 음성자동 시스템이랑 연결해서 사용자의 음성을 듣고 텍스트로 변환해 준 뒤에 그것을 구축해 놓은 챗봇 시스템과 연결해 구축하는 작업들이 생겨나고 있다.

AI for media

AI for media

얼굴 인식, 피플 카운팅 등에 사용되는 Face Recognition 과 딥러닝 기반의 Object Recognition 은 미디어들을 통해 사람을 인식하거나 장면등을 파악해서 시스템과 연결하는 일들을 할 때 많이 사용된다. 딥러닝 기반 객체 인식은 보통 CNN 알고리즘으로 유명한데 최근에는 여러가지 알고리즘이 더 들어간 경우가 많고 YOLO Darknet 같은 경우는 인식률과 속도에서 다른 범용 툴을 압도한다.
피플 카운팅을 응용하면 히트맵 히트존 등의 기술등으로 확장이 가능하다.
OCR 프로그램은 기존에도 존재했던 것들인 많은데, 딥러닝 기반으로 프로젝트들이 변경되고 있다. 구글 tesseract 도 LSTM 알고리즘의 4.0 버전을 테스트 중이다.

Analytics

기존의 데이터들을 분석하는 툴 기반이라 딥러닝 보다는 기존 스파크와 하둡 기반의 빅데이터 툴들이 더 많은 일들을 해 주는 부분들이다.

AI 기반 기술 스택 별로 알아보자 (1)

인공지능을 위한 프로세서의 발전

템빨은 언제나 진리

딥러닝은 기본적으로 다층 레이어의 많은 학습을 요구하기 때문에 단순한 계산이 순식간에 많이 일어나는 것을 특징으로 한다. 그렇기에 병렬처리 컴퓨팅이 가장 중요한 핵심기능이 되어서 기존 CPU이외의 다른 대안들이 필요하다.
그런 의미에서 프로세서 유니트(코어) 각각의 성능은 떨어지지만 프로세서 유니트 수가 압도적으로 많은 GPU 가 각광을 받았다. 특히 엔비디아 CUDA (병렬컴퓨팅 플랫폼의 API모델) 의 등장은 프로세서 경쟁에 불을 붙였다.
참조 : http://www.epnc.co.kr/news/articleView.html?idxno=75603

GPGPU - General Purpose GPU

범용 GPU를 이야기 하는 것으로 AI 용으로만 사용될 때는 TPU라는 이름을 쓰기도 한다.(Tensor Processing Unit) NVIDIA의 GPGPU를 극대화 하기 위한 CUDA 기술을 공개했고 동시에 범용 GPU 기능이 주목 받기 시작했다

GPGPU를 넘어서

구글의 딥러닝의 학습속도를 향상시키기 위해 자체 디자인한 반도체 칩셋(ASIC)를 적용되면서 더 각광 받기 시작함. 구글의 ASIC를 TPU(Tensor Processing Unit) 이라 부르고 GPGPU의 범주에 놓기도 한다.
MS는 같은 목적으로 FPGA 칩을 클라우드 데이타 센터에 탑재해 Azure 서비스에도 이용하고 있는데, FPGA는 저전력의 강점도 가지고 있다.

Neuromorphic Processor

신경구조와 유사한 프로세서가 차후 프로세서로 각광을 받고 있고 IBM 같은 회사들이 준비하고 있다.
링크 : http://www.research.ibm.com/cognitive-computing/neurosynaptic-chips.shtml#fbid=rXQq5aX-WkP

딥러닝 서비스를 위한 인프라

요즘엔 서버실에 갈 일이 있어야지

크게 딥러닝 전용 인프라는 클라우드와 판매형 인프라로 나뉘어서 볼 수 있을 것 같은데 기존의 아마존 AWS, 마이크로소프트의 Azure, 구글 클라우드 같은 빅3는 이미 클라우드 인프라를 가지고 있다.
AWS의 경우는 클라우드 AMI(Amazon Machin Image)도 제공하고 있어서 굉장히 편리하게 쓸 수 있다. AMI라는 것은 미리 만들어진 이미지 같은 개념으로 볼 수 있다. NVidia 의 경우는 자사의 GPU를 이용한 클라우드 서비스를 하고 있는 것이 흥미롭다.
판매형 인프라는 기존의 서버 벤더들과 비슷한 형태를 취하고 있는데 웨이브 컴퓨팅은 하나의 모델을 제안하는 데 텐서플로 같은 소프트웨어에 특화되어 만들어져 있다.이에 비해 Penguin computing 은 몇가지 옵션들을 더 제공하고 있다.

맺으며

딥러닝, 인공지능 등을 바라볼때 탑뷰로 어떤 기술이 있는지를 알아보는 과정을 거치고 있다. 다음 번엔 개발자에게는 가장 중요한 딥러닝 프레임워크들을 다뤄보도록 하겠다.

(tech-trend) 구루들이 찾는다는 테크 트렌드 - 유명 블로그와 소셜 유명인

이 글은 회사 기술 블로그에 올리고 있는 내용입니다. 회사 기술 블로그에는 이슈가 되고 있는 기술 트렌드와 개인적으로 관심있는 기술 이야기의 주제를 번갈아 가며 연재할 예정입니다. ES2015 리팩토링에 관한 이야기를 진행 중에 있습니다.

필자는 SDS Agile Core Team 에서 테크리드를 담당하고 있습니다.
OSGeo에서 오픈소스 활동을 하고 있습니다. 잘 모르는 기술에 대해서 낯선 사람들과 이야기 하면서 배워 나가는 것을 좋아합니다.

기술 트렌드에 관련해서 - 3. blog & social star

구루들이 찾는 다는 테크 트렌드의 마지막 시간이다. 이후에는 React 개발 때 TDD를 어떻게 적용하는 지에 대한 내용을 다뤄볼까 한다. 사실 여기에 들어갈 블로그와 소셜스타를 일일이 나열하기에는 굉장히 본인의 네트워크의 한계와 좁은 지식에 기댈 수 밖에 없어서 굉장히 조심스럽지만 처음 테크트렌드를 찾는 사람들을 위해서 조금 라이트하게 읽을 수 있는 아티클을 쓰시는 분들 혹은 개발회사 블로그 위주로 설명하겠다.

회사 기술 블로그

좋은 기술 회사는 기본적으로 좋은 회사 기술 블로그를 가지고 있습니다. 양질의 좋은 컨텐츠를 가지고 기술의 가야할 바도 제시하고 실제 하고 있는 일들을 잠깐씩 엿볼 수 있는 좋은 기회라고 볼 수 있다.

  • 우아한 형제들

    • 배달의 민족으로 O2O 의 새로운 지평을 열고 있는 쪽의 개발 블로그. 최근 MSA 글이 화제가 되었다. (배민 API GATEWAY - spring cloud zuul 적용기) 개발자들 모두가 쓰고 있다는 착각이 들 정도로 필자가 다양한 것이 특징. 그래서 글 마다 편차는 좀 존재한다.
      배민 API GATEWAY - spring cloud zuul 적용기
  • 네이버 d2

    • 네이버 개발자들의 수준을 가늠해 볼 수 있는 좋은 블로그. 필자와 필력을 관리하는 것인지 대부분의 아티클들이 양과 질에서 여타 다른 회사 기술 블로그보다 평타이상을 한다. 번역글도 가끔 올라 오는데 2012년 화제가 된 글인 “브라우저는 어떻게 작동하는가” 같은 내용은 아직도 유효하고 유익하다.
      브라우저는 어떻게 작동하는가

이 외에도 레진 기술블로그, 카카오 기술 블로그 등의 찾아가 볼만한 내용들을 가진 곳들이 꽤 많이 존재한다. 전통적인 기술 창고인 MSDN, 페이스 북 코드 및 [구글 개발자 사이트][https://developers.google.com/] 에서 개발 흐름을 찾아 보는 것도 굉장한 도움이 된다.

팀 블로그 (혹은 큐레이션 블로그)

개발자들끼리 모여서 블로그를 같이 진행하는 경우도 몇군데 있는데, 이런 경우는 서로의 철학과 가고자 하는 방향이 잘 맞는 사람들끼리 모여서 진행을 하고 있다. 필자가 활동하는 팝잇(popit), 개발바보들(devpools)도 그 연장선상에 있다고 볼 수 있다. 주제를 정해서 같이 연재할 수 있는 장점도 있고 서로의 발전을 도모한다는 점에서도 이로운 방향이라고 볼 수 있다.

  • 이상한 모임

    • 개발자(Dev), 오프모임(OFFLINE), 코드(CODE) , IT 기기(GADGET) 등의 광범위한 관심사를 가지고 있는 사람들이 모여서 자신들의 블로그를 올리는 형태의 블로그. 오프모임도 종종 진행하고 관리자가 이벤트를 꽤나 많이 주체하는 흥미로운 사이트다.
      weird
  • 팝잇

    • 주최측이 꽤나 개발자들 사이에서는 알려진 사람들로 이루어진 사이트. 주로 개발에 관련된 이야기만 한다. 좋은 점은 양질의 글을 읽을 수 있다는 점이고 나쁜 점은 개발자들의 관심사가 꽤나 비슷비습하다는 점이다.

소셜 스타(개인 블로그)

보통 트위터나 페이스북에서 유명 개발자 혹은 IT 쪽 인플루언서들을 찾아가 보면 대부분은 블로그가 그 원동력이다. 트위터나 페이스북은 그 사람의 지속적인 관심사나 생각의 흐름을 잡아내는데 굉장히 유용하다. 지금부터 언급되는 사람들은 소셜미디어에서도 유명하지만 블로그를 지속적으로 관심을 가지고 봐도 될만한 사람이다. 이 챕터는 기술의 깊이와 넓이에 따라서 굉장히 많은 사람이 호 불호가 갈릴 수 있어서 모두가 이해할 수 있는 선에서 그 영역을 마무리 짓고자 한다.

  • 광파리

    • 트위터와 블로그 둘중 무엇을 링크를 걸까 하다가 트위터를 걸어 두었다. 트위터에 페북과 블로그 주소가 모두 존재하므로 방문하는데에는 지장이 없을 듯 한다. 원래 한국 경제 신문 IT 전문 기자였다가 지금은 D캠프 센터장. 전직 기자의 안목에서 보는 트렌드를 쫒아갈 수 있어서 큰 그림을 파악하는데에는 도움이 된다.
    • 굉장히 광범위하게 기술을 건드리는 개발자. 자바 이야기는 찾아 보기 힘들지만 주로 Node.js 와 자바스크립트. AWS 등의 기술들을 접할 수 있다. 깊이 있게 다루는 것에서 자기의 삽질기 까지. 필자의 관심사항과 굉장히 유사한 부분들을 건드린다.
    • 최근에는 외부 블로깅과 소셜 활동을 많이 하진 않는 듯 한데, 한번 올리는 글에 힘이 있고 많은 사람들이 관심을 가진다. 예전 KTH 관련된 내용들을 많이 엿볼 수 있었다면 최근에는 레진의 내용들을 확인할 수 있다.
    • 여기는 한 사람의 개발닌자를 만난 듯한 인상을 주는 블로그. 넓이 보다는 깊이를 추구하는 독자에게는 도움이 될 수 있는 심오한 내용들을 많이 블로깅하고 있다. 오피스를 쓰냐 안쓰냐에 따라 개발자 혹은 개발회사로 구분할 수 있다는 철학을 가진 개발자
    • 국내에 TDD 에 대해서 한 사람을 꼽으라고 한다면 꼭 이야기 하고 싶은 한 사람. 하지만 그 외에도 여러가지 이야기를 쓰고 잡담도 곧잘 올라오는데 필력이 대단해서 그 잡담마저 흥미롭다.

이상 간단하게 정리해 보았는데 아마도 더 유명한 사람들이 있을 수 있고 누군가의 취향은 다를 수 있다.. 그래서 깃헙의 다음 프로젝트를 조금은 더 자세한게 설명해 볼까 한다.

8월의 프로젝트 - Awesome Devblog

지난번에 한번 설명을 한 대로 깁허브(github) 에는 여러 형태의 프로젝트가 존재하는데 그 중 하나라 Awesome 으로 시작되는 북마크 프로젝트들이 존재한다. 지금 소개할 프로젝트는 한국 기준으로 먼저 작성이 된 좋은 개발자(개발 블로그) 모음이다.
아마도 위에 정리한 사람들 혹은 팀은 거의 대부분 이 프로젝트에 정리가 되어 있다.

awesome devblog

일단 목차는 다음과 같다.

팀 안에 회사에 대한 구분은 없이 가나다 순 알파벳 순으로 소팅을 해 둔 사이트다.
이 안에서 한명 한명 찾아 보면서 시간을 보내도 휴가를 재미있게 즐길 수 있다.

하지만 이런 것들을 내가 실시간으로 최신 트렌드를 받아볼 수는 없을까? 이런 생각을 하면 누군가는 이미 작성을 해 두었다.
깃헙에 RSS 프로젝트를 만들었고( 아 이런 수고를 하다니 정말 대다나다.) RSS도 공개 되어 있다.
깃헙 프로젝트
RSS : https://awesome-blogs.petabytes.org/feeds?group=dev

devblog-rss