[현장] 구글 ‘텐서플로우’ 개발자가 생각하는 머신러닝이란?

http://www.bloter.net/archives/254962

– 텐서플로우와 다른 머신러닝 라이브러리와의 차이점은 무엇인가? 비슷한 질문으로 다른 라이브러리가 아닌 텐서플로우를 선택해야 하는 이유는 무엇인가?

= 모든 기술을 이용해봐라. 토치, 카페 등 다른 기술들을 다운로드 하는 건 어려운 게 아니다. 다양한 기술을 작은 예제와 함께 일단 사용해보라. 그러면 결국 여러분들의 상황에 적합한 기술을 찾을 수 있을 거다. 텐서플로우가 모든 문제를 해결할 수 있는 만능 기술은 아니다. 텐서플로우의 장점은 구글이 만든 2세대 머신러닝 기술이고, 100여명의 인력이 투여되는 기술이라는 점이다. 그 말은 기술 지원이 활발하고, 오류도 더 빨리 발견하고 개선할 수 있다는 뜻이다. 작은 회사의 직원이고 어떤 기술을 선택할 지 고민하고 있다면 텐서플로우가 분명 좋은 대안이 될 것이다. 큰 데이터 규모에서는 더더욱.

– 텐서플로우는 윈도우에서 이용할 수 없다. 향후 윈도우를 지원할 계획이 있는가?

= 계획에 대해서는 뭔가 확실하게 이야기할 게 없다. 하지만 나도 윈도우 기기를 가지고 있고, 텐서플로우를 이용하고 있다. 그래서 추천하는 방법은 VM웨어를 설치하라. 무료 아닌가.(웃음) 그 위에서 다른 운영체제를 설치하고 텐서플로우를 이용해라.

– 알파고가 ‘강화학습(Reinforcement Training)’ 알고리즘을 이용했다고 들었다. 텐서플로우에서 강화학습 혹은 알파고 같은 기술을 지원할 계획이 있는가?

= 텐서플로우는 미국 본사에서 개발한다. 딥마인드는 영국에서 개발한다. 두 팀 모두 구글이란 같은 회사에 속해 있지만 서로 멀리 떨어져 있고 시차가 있어서 빨리 소통하기 어렵다. 딥마인드팀은 자체적으로 기술을 개발하고 있기 때문에 딥마인드가 하는 일에 대해서 많이 알지 못한다. API나 기술 지원은 언젠가 가능할 것으로 본다. 딥마인는 텐서플로우를 포함한 구글의 소프트웨어를 이용하고 있다. 텐서플로우나 구글 고유의 기술을 사용하는 비중이 얼마나 되는지는 잘 모른다.

– ‘텐서플로우 플레이그라운드‘라는 것을 이용해 봤다. 자바스크립트로 만든 시각화 도구인데 매우 흥미로웠다. 이런 도구는 텐서플로우 입문자에게 좋을 것 같더라. 혹시 비슷하게 텐서플로우와 통합해 사용할 수 있는 모니터링 도구나 프로파일 도구를 알고 있는가?

= 텐서플로우 그래프를 이용할 때 갑자기 속도가 느려지는 것을 경험하는 사용자가 있을 것이다. 무엇 때문에 속도가 늦어졌는지 알기 위해서 모니터링 도구나 프로파일링 도구가 필요하다. 텐서플로우 내부 팀이 이용하는 프로파일링 도구가 따로 있긴 하다. 좋은 도구인데 아직 이걸 오픈소스 기술로 공개할지는 결정하지 못했다. 언젠가 오픈소스 기술로 전환할 것이나, 그게 언제일지는 아직 모른다. 하지만 우리팀도 사람들이 어떤 문제를 해결하고 싶은지 명확하게 이해하고 있다. 텐서플로우 플레이그라운드라는 도구는 나도 잘 알고 있다. 여기 있는 분들도 한 번쯤 이용해보셨으면 좋겠다. 어떤 구성요소가 어떻게 작용하는지 쉽게 알 수 있을 것이다.

텐서플로우 플레이그라운드

▲텐서플로우플레이그라운드. 구글과는 별개로 진행되는 외부 프로젝트다.

– 나는 맥 OS 사용자다. 텐서플로우를 이용하려고 했는데 AMD GPU를 지원하지 않더라. 향후 AMD GPU를 지원할 계획은 없는가?

= 계획에 대해 아는 것은 없다. 의존성 문제 때문에 기술을 변경하는 게 쉽지 않더라. 현재 말할 수 있는 가장 좋은 제안은 그냥 엔비디아 카드를 사는 것이다.(웃음)

– 구글의 딥러닝 프로젝트에 합류하려면 어떻게 해야 하는가? 지원자는 경력자여야 하나? 학위 같은 게 있어야 하나?

= 학위가 있으면 좋긴 할 것이다. 하지만 사실 텐서플로우팀은 정말 다양한 사람으로 구성됐다. 많은 사람들이 다른 국적을 가지고 있다. 모두가 일류 대학을 졸업하지도 않았다. 가장 중요한 것은 당연히 프로그래밍 실력이다. 너무 중요하다. 또 어떤 문제를 해결하고 싶어하는 마음이 있어야 한다. 열린 태도를 지니는 것도 중요한 부분이다. 사실 2015년 11월 ‘브레인 레지던시’라는 프로그램을 시작했다. 많은 사람이 이 프로그램에 지원했다. 그 중 30명이 1년간 브레인 레지던시 프로그램에 참여하게 됐다. 참여자들은 머신러닝을 배우고, 자신이 하고 싶은 프로젝트를 진행한다. 여건이 허락된다면 이 프로그램을 내년에도 진행할 계획이다. 여기 있는 많은 분들이 지원해주셨으면 좋겠다.

구글 브레인 레지던시 프로그램

– 박사님께서 음성인식 분야를 전공하신 걸로 알고 있다. 음성인식 분야에서 기계가 인간의 실력을 뛰어넘을 수 있을 것이라고 보는가?

= 이미 기계가 음성인식 분야에서 인간보다 앞서 있다. 같은 문장이라고 가정하면 캘리포니아 출신이냐 텍사스 출신이냐에 따라 말 소리가 매우 다르게 들린다. 많은 사람이 서로 다른 억양을 가진 언어를 잘 이해하지 못한다. 기계는 모든 억양을 이해한다. 실제로 우리가 인도 사람의 말을 받아 적으라고 해보니 사람보다 음성인식 기계가 더 잘 이해했다. 아마 앞으로 서기는 필요 없을지도 모른다. 기계가 더 잘 이해하는 이유는 크게 2가지다. 하나는 억양, 두 번째는 맥락 정보를 잘 알고 있기 때문이다. 남자 아이가 형에게 하는 말은 부모님은 가끔 이해 못할 것이다. 맥락 정보가 없기 때문이다. 기계는 가능하다. 물론 현재 음성인식 앱은 성능이 별로 안 좋을 수 있다. 하지만 앞으로 더 나아질 것이다. 특히 5-6년 안에 음성인식 서비스와 관련해서 엄청난 변화가 있을 것이다.

– 텐서플로우를 기업에서 직접 활용한 사례를 알고 있는가?

= 많은 기업이 텐서플로우를 내려받고 이용하고 있다. 하지만 그걸로 정확히 무엇을 하고 있는지는 알지 못한다. 사실 내가 안다고 해도 그걸 여기서 말할 수 없다. 기업 비밀이지 않은가. 텐서플로우에 관심을 가지고 있는 기업 종류는 특정 산업군에 국한되지 않으며 매우 다양하다.

– 텐서플로우로 챗봇 시스템을 만들 계획이 있는가?

= 챗봇은 아주 만들기 쉬운 기술이다. 챗봇은 아주 기본적인 언어 구조를 이용한다. 문자가 입력되면 답변을 예상하고 다시 질문과 답변을 주고받는 식이다. 이 일련의 과정을 포함한 언어 모델을 계속 훈련시키면 챗봇을 만들 수 있다. 이러한 개념을 일단 이해만 하면 챗봇이 얼마나 쉬운 기술인지 알 수 있을 것이다. 텐서플로우로 지금 당장 개발할 수 있다. 하지만 챗봇을 정말로 쓸모 있게 만드는 것은 또 다른 문제다. 복잡한 대화를 이해하려면 많은 지식을 알고 있어야 하기 때문이다. 현재 나온 챗봇은 바보같은 대화만 할 수 있다. ‘안녕’, ‘이름이 뭐예요?’ 정도만 묻는 식이다. 복잡한 대화는 이해하지 못한다.
Posted by 홍반장水 홍반장水

책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017

https://deview.kr/2017/schedule/192



코드 : https://github.com/devsisters/multi-speaker-tacotron-tensorflow 

음성 합성 데모 : http://carpedm20.github.io/tacotron 

발표 소개 : https://deview.kr/2017/schedule/182 



...

Posted by 홍반장水 홍반장水

개발자가 알려주는 ‘AI 연구가 괴로운 순간’ 7가지

http://www.bloter.net/archives/292312


인공지능(AI) 기술이 발전하면서 관련 전문가 몸값도 치솟고 있다. 최근 국내에서도 대기업에서 스타트업까지 인공지능 전문가를 찾는다는 이야기를 많이 한다. 이런 상황에서 기술 업계에 있는 여러 대학생, 대학원생, 개발자, 엔지니어 등은 자신의 직업이나 진로에 대해 한번쯤 고민하게 된다. 임도형 엑셈 기술연구소 수석연구원도 그런 부류에 속한다. 10년 넘게 오랫동안 자바, 서버 솔루션을 만들었던 임도형 개발자는 최근 엑셈 기술연구소에 합류하면서 AI 관련 연구 및 개발을 담당하고 있다. 그는 학부시절 전자공학을 전공했으며, 대학원에서 인지과학을 공부했다. 대학원 시절에 살펴봤던 내용이 지금 인공지능 기술이라고 불리는 신경망, 패턴인식, 컴퓨터비전 등이다. 임도형 연구원은 “졸업했을 당시는 인공지능 기술의 침체기여서 전공을 살릴 데가 없었다”라며 “올해 초 새로운 일에 도전하고자 인공지능 개발 일을 시작했다”라고 밝혔다.


임도형 연구원은 인공지능 업무에 대해 ‘하이 리스크, 하이 리턴'(High risk , High return)의 속성을 가졌다고 표현한다. 얻는 것도 많지만 특히 기업에서 일하는 과정에선 괴로운 점도 생각보다 많다는 뜻이다. 그리고 지난주 열린 데이터과학 컨퍼런스 ‘데이터야놀자‘에서 인공지능 협업 개발자로 힘든 점들을 다음과 같이 공유했다.


1. 소프트웨어 개발이 차라리 더 쉽다

소프트웨어 개발은 아예 처음부터 뒤엎어서 다시 개발하지 않는다면 일정 시점에 결과를 얻을 수 있다. 물론 이 자체도 어려울 수 있다. 하지만 AI는 더하다고 한다. 임도형 연구원은 “소프트웨어 개발도 고달픈 부분도 있지만 그래도 몇 달을 하고 나면 ‘결과를 (어떻게든) 만들수 있겠다’는 감이 있었다”라며 “인공지능은 ‘이게 해서 될까’라는 질문에 계속 부딪힌다”라고 말했다.

현재 임도형 연구원은 공장 기기의 고장 상황을 예측하고 원인을 찾아내고, 궁극적으로 생산성을 높여주는 방법을 개발 중이다. 이 과정에서 가장 많이 받는 질문이 “그거 돼요?”란다. 문제는 여기에 어떤 근거를 들어 확답해주기 어려운 점이다. 보통 인공지능 연구는 ‘과거 이런 사례가 있었는데, 해당 사례를 우리 업계에도 적용해보자’라는 식으로 발전하기 때문이다. 따라서 완전히 동일한 상황과 조건에 맞는 참고 사례를 찾기 힘들다. 대부분 처음 시도하는 경우가 많다. 임도형 연구원은 “된다고 믿기 때문에 하는 것입니다 라고 답할 수밖에 없다”라며 “그 과정에서 스트레스를 받는다”라고 말했다.


2. 정리되지 않은 코드들

소프트웨어 개발은 기능을 구현, 테스트, 배포 등으로 나뉘므로 개발 과정을 분리해 설명할 수 있다. 작은 단위의 일이 완료되는 시점도 분명하다. 인공지능 분야는 다르다. 결과를 도출하기까지 중간에 반복되는 과정이 많다. 무엇인가 시도하고, 결과를 보고, 고민하고, 다시 일부 상황을 바꿔서 시도하고, 결과를 보고 고민을 한다. 또 소프트웨어 개발처럼 코드 리뷰도 하고, 리팩토링에 문서화까지 완료해서 보내기에는 시간이 부족하다. 임도형 연구원은 “변수이름, 디렉토리 구조 등이 엉망인데 결과를 내보내야 한다는 것 때문에 결국 정리를 못하고 시간에 쫓긴다”라고 설명했다.


3. 실행 결과를 보기까지 기다리는 긴 간격

인공지능 업무는 많은 데이터를 활용할 수 밖에 없다. 여기에 데이터를 학습시키고 결과를 얻기까지 오랜 시간이 필요하다. 물론 작은 데이터로 작업하면 몇 분 만에 결과를 얻을 수 있지만, 큰 데이터는 그 과정에 몇 시간이 소요된다. 가령 ‘저장’ 버튼을 누르고 저장 완료가 뜨기까지 몇 시간이 걸린다고 생각해보자. 기다리는 시간 동안 다른 업무를 해야 할지, 무작정 기다려야 할지 결정해야 한다.

임도형 연구원은 “몇 분이야 기달리수 있지만 10분만 넘어가면 다른 업무를 하다 다시 돌아오는 과정을 반복하면서 집중력이 떨어진다”라며 “기다리는 것을 4-5번 하다보면 하루가 다 가서 오늘 뭘 했는지에 대한 복잡한 감정이 든다”라고 설명했다. 이런 상황을 극복하기 위해 임도형 연구원은 목·금요일이면 주말동안 뭔가를 실행시켜 볼 것을 준비해두는 버릇이 생겼다. 기다리는 시간을 줄여, 월요일 출근하자마 결과를 볼 수 있게 하는 식이다.


4. 공부할 수 없는 업무시간

회사는 학교가 아닌 만큼, 어떻게든 결과를 보여야 한다. 인공지능 분야는 상대적으로 논문을 많이 읽어야 하는데, 회사에선 그럴 여유가 없다. 특히 작은 회사라면 인공지능 기술 자체를 발전시키기보다 산업체에서 당장에 활용할 기술을 개발할 가능성이 높다. 임도형 연구원은 “새로운 논문을 정말 제대로 이해하고 코드까지 실행해보려면 최소 하루나 2-3일은 걸린다”라며 “여유를 갖고 공부할 시간이 없으니 업무 시간 외에 뭔가를 공부해야 할 것 같은 압박이 온다”라고 말했다.


5. 쏟아지는 자료

인공지능 연구에선 새로운 시도를 하고, 일부 변경하고 다시 실험하는 과정이 계속된다. 이때 결국 자신이 아는 범위에서 해결책을 찾게 된다. 그러다보니 많은 정보를 습득하고 배우면 유리하다. 이를 위해 임도형 연구원은 텐서플로우 코리아같은 커뮤니티에 자주 들어간다. 최근에는 자료를 보고 이해하는 속도보다 새로운 자료가 나오는 속도가 더 빠르다고 한다. 그는 “누군가 진행한 실험에 대해 자세히 들여다보고 싶은데, 그러다보면 1-2시간은 훌쩍 간다”라며 “그러한 자료를 감당해야 한다는 것이 꽤 스트레스”라고 말했다.


AI 분야에만 보이는 독특한 현상도 소개했다. 보통 대학에서 발행되는 논문은 가장 최신의 기술을 다루는 경우가 많다. 그래서 학교에서 논문을 발표하면 이후에 기업이 해당 논문을 보고 활용한다. 인공지능 분야는 이와 반대다. 산업계에서 ‘이렇게 하면 이게 됩니다’라는 것을 발표하고 이를 학교에서 나중에 다뤄서 논문을 내놓는다.


6. 데이터의 부재

인공지능 업무에선 데이터가 반드시 필요하다. 하지만 기업에서 준비된 데이터는 가공된 상태가 아니다. 여기에 데이터를 정제하고, 필요한 것만 빼내고, 어떤 모양인지 확인하는 작업은 많은 시간이 걸린다. 임도형 연구원은 “누군가는 데이터 정제 과정과 실제 AI 업무과정의 비율이 8대2라고 표현하는데, 내가 느끼는건 98대2다”라며 “많은 사람이 데이터를 읽어서 정리하는 코드를 짜고 있으며, 오히려 학습시키는 코드는 짧다”라고 설명한다. 거기다 데이터 정리하는 코드들은 모듈화나 재활용이 힘든 경우가 많다고 한다. 따라서 새로운 데이터를 다룰 때마다 AI 업무가 아닌 데이터를 정리하는 데 많은 시간을 뺏기는 경우를 자주 경험할 수 있다. 막상 정제한 코드에 원하는 데이터가 충분치 않은 경우도 꽤 있다고 한다.


7. 느껴지지 않는 데이터

인공지능에서 활용되는 데이터의 크기는 엄청나다. 이때 그냥 나열돼 있는 데이터를 보는 것은 의미가 없다. 기업에서 얻은 데이터는 수백개의 열로 이뤄진 경우도 많다고 한다. 그래서 평균, 분포 등 데이터 특성을 전체적으로 파악해야만 다음 작업이 가능하다. 이를 위해서는 어떻게 시각화할지에 대한 감도 필요하다. 만약 시각화하는 능력이 부족하다면 데이터를 이해하고 활용하는 데 한계가 올 수 있다.

임도형 연구원은 발표 마지막에 머신러닝 업계의 구루라고 불리는 앤드류 응 스탠포드 교수의 말을 인용했다. ‘끊임없이 실천하고, 하기 싫은 작업도 하라'(pratice, pratice, pratice and do the dirty work)라는 문장이었다. 임도형 연구원은 “협업에서 AI 업무란 실행시키고, 결과를 확인하고 다시 고민하는 과정의 무한반복이다”라며 “최신 기술을 다루지만 이런 곳에서도 힘든 작업이 있다는 것을 알려주고 싶었다”라고 말했다. 동시에 그는 AI 업무를 고민하고 있는 사람에게 다음과 같이 조언했다.

“최근 AI 일을 하고 싶은 개발자들이나 학생들을 많이 보았습니다. 대학에서 진로 관련 특강 요청도 많이 하시더군요. 이 업무에 도전하고 싶은 분이 있다면 겁 먹지는 마십시오. 코딩할 때도 처음부터 모든 이론을 이해하지 않아도 시작할 수 있습니다. 오히려 작동하는 코드를 실행해보고 반복하면서 원리를 이해하곤 합니다. 인공지능 분야에서 활용되는 소스코드는 상당수가 외부에 공개됐습니다. 수식이 잔뜩 들어 있는 자료를 보는 데 시간을 너무 쏟지 말고, 일단 코드를 다운받고 실행해보세요. 수식이 어렵다면 일단 수식의 사용법부터 익혀보길 권장합니다.”




...

Posted by 홍반장水 홍반장水
파이썬을 이용한 머신러닝, 딥러닝 실전 개발 입문 - 웹 크롤링과 스크레이핑부터 머신러닝.딥러닝까지 체계적으로 배우기

파이썬을 이용한 머신러닝, 딥러닝 실전 개발 입문
국내도서
저자 : 쿠지라 히코우즈쿠에 / 윤인성역
출판 : 위키북스 2017.06.15
상세보기


머신러닝의 바탕이 되는 데이터를 수집하고, 수집된 데이터를 기반으로 머신러닝을 수행하는 방법을 설명한다. 인터넷에서 데이터를 어떻게 효율적으로 수집하는지 알아보고, 머신러닝을 원활하게 할 수 있게끔 데이터를 가공하는 방법을 살펴보며 더 나아가 가공된 데이터를 이용해 챗봇 제작, 규동 메뉴 이미지 판정, 얼굴 인식 등 머신러닝에 활용하는 과정까지 실질적인 파이썬 예제 코드로 소개하고 있다. 활용할 데이터만 가지고 있다면 자신이 원하는 것을 만들어낼 수 있다.

역자 동영상 강의


[목   차]

▣ 00장: 머신러닝을 위한 데이터 처리
0-1. 크롤링, 스크레이핑, 머신러닝
___인터넷의 빅데이터
___스크레이핑, 크롤링, 데이터 가공
___머신러닝에 사용할 수 있는 데이터의 구조

▣ 01장: 크롤링과 스크레이핑
1-1. 데이터 다운로드하기
___웹상의 정보를 추출하는 방법
___urllib.request를 이용한 다운로드
___웹에서 데이터 추출하기
___BeautifulSoup로 스크레이핑하기
1-2. BeautifulSoup로 스크레이핑하기
___네이버 금융에서 환율 정보 추출하기
___웹 브라우저로 HTML 구조 확인하기
1-3. CSS 선택자
___위키 문헌에 공개돼 있는 윤동주 작가의 작품 목록 가져오기 
___CSS 선택자 자세히 알아보기
___CSS 선택자로 추출 연습하기
___정규 표현식과 함께 조합하기
1-4. 링크에 있는 것을 한꺼번에 내려받기
___한꺼번에 다운받는 데 필요한 처리 내용
___상대 경로를 전개하는 방법
___재귀적으로 HTML 페이지를 처리하는 방법

▣ 02장: 고급 스크레이핑
2-1. 로그인이 필요한 사이트에서 다운받기
___HTTP 통신
___requests 사용해보기
2-2. 웹 브라우저를 이용한 스크레이핑
___웹 브라우저 원격 조작에 사용하는 Selenium
___웹 사이트를 이미지로 캡처해보기
___네이버에 로그인해서 구매한 물건 목록 가져오기
___Selenium으로 스크레이핑하는 방법
___자바스크립트 실행해보기
2-3. 웹 API로 데이터 추출하기
___웹 API
___웹 API를 제공하는 이유
___웹 API 사용해보기 - OpenWeatherMap의 날씨 정보 
___국내에서 사용할 수 있는 웹 API
2-4. cron을 이용한 정기적인 크롤링
___정기적인 크롤링
___매일 환율 정보 저장하기
___cron으로 매일 한 번 실행하기
___crontab 설정 방법

▣ 03장: 데이터 소스의 서식과 가공
3-1. 웹의 다양한 데이터 형식
___텍스트 데이터와 바이너리 데이터
___XML 분석
___JSON 분석
___YAML 분석
___CSV/TSV 분석
___엑셀 파일 분석
3-2. 데이터베이스
___데이터베이스
___데이터 저장에는 어떤 데이터베이스를 사용해야 할까?
___SQLite - 가볍게 파일 하나로 사용할 수 있는 데이터베이스
___MySQL 사용하기
___TinyDB 사용하기

▣ 04장: 머신러닝
4-1. 머신러닝이란?
___머신러닝 개요
___머신러닝의 종류
___머신러닝의 흐름
___머신러닝의 응용 분야
___초과 학습(초과 적합)
4-2. 머신러닝 첫걸음
___머신러닝 프레임워크 scikit-learn
___XOR 연산 학습해보기
___붓꽃의 품종 분류하기
4-3. 이미지 내부의 문자 인식
___손글씨 숫자 인식하기
___이미지 데이터 학습시키기
4-4. 외국어 문장 판별하기
___외국어 판정
___판정 방법
___샘플 데이터 수집
___언어 판별 프로그램
___웹 인터페이스 추가하기
4-5. 서포트 벡터 머신(SVM)
___SVM이란?
___SVM을 실제로 사용해보기
___SVM의 종류
4-6. 랜덤 포레스트
___랜덤 포레스트란?
___랜덤 포레스트 사용하기
4-7. 데이터를 검증하는 방법
___크로스 밸리데이션
___그리드 서치

▣ 05장: 딥러닝
5-1. 딥러닝 개요
___딥러닝
5-2. TensorFlow 설치하기
___TensorFlow
___설치 방법
___설치가 제대로 됐는지 확인하기
___TensorFlow로 간단한 계산해보기
5-3. Jupyter Notebook
___Jupyter Notebook 설치하고 실행하기
___새 노트 만들기
___데이터 시각화
___TensorFlow와 함께 사용하기
5-4. TensorFlow 기본
___TensorFlow 기본
___머신러닝 해보기
5-5. TensorBoard로 시각화하기
___TensorBoard의 사용법
5-6. TensorBoard로 딥러닝하기
___딥러닝의 구조
___딥러닝 해보기 - MNIST 손글씨 데이터
5-7. Keras로 다양한 딥러닝 해보기
___Keras
___Keras 설치
___Keras로 MNIST 테스트해보기
___Keras로 비만도 판정해보기
5-8. Pandas/NumPy 다루기
___Pandas/NumPy
___데이터 조작
___Pandas/Numpy 정리

▣ 06장: 텍스트 분석과 챗봇 만들기
6-1. 한국어 분석(형태소 분석)
___형태소 분석
___한국어 형태소 분석 라이브러리
___출현 빈도 분석
6-2. Word2Vec으로 문장을 벡터로 변환하기
___Word2Vec
___Gensim 설치
___Gensim의 Word2Vec으로 "토지"를 읽어보기
___위키피디아 한국어 버전을 사전으로 사용해보기
___위키피디아 데이터로 놀아보기
6-3. 베이즈 정리로 텍스트 분류하기
___텍스트 분류
___베이즈 정리
___나이브 베이즈 분류
___베이지안 필터 사용해보기
6-4. MLP로 텍스트 분류하기
___MLP로 텍스트 분류하기
6-5. 문장의 유사도를 N-gram으로 분석하기
___문장의 유사도 분석
___레벤슈타인 거리
___파이썬으로 레벤슈타인 거리를 계산하는 프로그램
___N-gram으로 유사도 구하기
6-6. 마르코프 체인과 LSTM으로 문장 생성하기
___마르코프 체인과 LSTM/RNN
___마르코프 체인이란?
___마르코프 체인 구현하기
___LSTM/RNN
6-7. 챗봇 만들기
___챗봇(회화 봇)
___챗봇의 구조

▣ 07장: 이미지와 딥러닝
7-1. 유사 이미지 검출하기
___간단한 형태 인식 - Average Hash
7-2. CNN으로 Caltech 101의 이미지 분류하기
___CNN으로 색상 있는 이미지 분류해보기
7-3. 규동 메뉴 이미지 판정하기
___규동을 판정할 수 있는 PC가 좋은 PC
___스크레이핑부터 시작하기
7-4. OpenCV로 얼굴 인식하기
___OpenCV
___얼굴을 인식하는 프로그램 만들어보기
___얼굴에 모자이크 걸기
7-5. 이미지 OCR - 연속된 문자 인식하기
___OpenCV로 텍스트 영역 확인하기
___문자 인식 데이터 만들기
___다양한 숫자 폰트 학습 시키기

▣ 부록: 개발 환경 구축
부록-1. Docker로 개발 환경 구축하기
___Docker란?
___Docker 설치
___윈도우 10 이하에서 Docker Toolbox 설치하기
___macOS에서 Docker for Mac 설치하기
부록-2. 파이썬 + Anaconda 환경 준비
___파이썬 + Anaconda 이미지 다운로드


...



Posted by 홍반장水 홍반장水

How to Make a Chatbot - Intro to Deep Learning #12



Code + Challenge for this video:
https://github.com/llSourcell/How_to_...

Nemanja's Winning Code:
https://github.com/Nemzy/language-tra...

Vishal's Runner up code:
https://github.com/erilyth/DeepLearni...

Web app to run the code yourself:
https://ethancaballero.pythonanywhere...

Please subscribe! And like. And comment. That's what keeps me going. 

More Learning resources:
https://www.youtube.com/watch?v=FCtpH...
https://www.youtube.com/watch?v=Qf0Bq...
https://yerevann.github.io/2016/02/05...
https://www.youtube.com/watch?v=2A5DK...
http://www.wildml.com/2016/01/attenti...
https://github.com/domluna/memn2n




...

Posted by 홍반장水 홍반장水

Awesome-Korean-NLP


Github https://github.com/datanada/Awesome-Korean-NLP


참고 : http://konlpy.org/en/v0.4.4/



A curated list of Natural Language Processing (NLP) of

  • NLP of Korean Text
  • NLP information written in Korean.

Feel free to contribute! or blab it here

Maintainer: Jaemin Cho

Index

  1. Tools
  2. Dataset
  3. Blogs / Slides / Researchers
  4. Papers
  5. Lectures
  6. Journals / Conferences / Institutes / Events
  7. Online Communities
  8. How to contribute

1. Tools

(Korean-specific tools are listed ahead of language-agnostic tools.)

1.1. Morpheme/형태소 분석기 + Part of Speech(PoS)/품사 Tagger

  • Hannanum (한나눔) (Java, C) [link]
    • KoNLPy (Python) [link]
  • Kkma (꼬꼬마) (Java) [link] [paper]
    • KoNLPy (Python) [link]
  • Komoran (Java) [link]
    • KoNLPy (Python) [link]
  • Mecab-ko (C++) [link]
    • KoNLPy (Python) [link]
  • Twitter (Scala, Java) [link]
    • KoNLPy (Python) [link]
    • .NET, Node.js, Python, Ruby, Elasitc Search bindings
  • dparser (REST API) [link]
  • UTagger [link]
  • Arirang (Lucence, Java) [link]
  • Rouzeta [link] [slide] [video]
  • seunjeon (Scala, Java) [link]
  • RHINO (라이노) [link]
  • KTS [paper]
  • 깜짝새 [link]

1.2. Named Entity(NE) Tagger / 개체명 인식기

1.3. Spell Checker / 맞춤법 검사기

  • PNU Spell Checker [link]
  • Naver Spell Checker [link]
  • Daum Spell Checker [link]
  • hunspell-ko [link]

1.4. Syntax Parser / 구문 분석기

  • dparser (REST API) [link]
  • NLP HUB (Java) [link]

1.5. Sentimental Analysis / 감정 분석기

1.6. Translator / 번역기

1.7. Packages

1.8. Others / 기타

  • Hangulpy (Python) [link]
    • 자동 조사/접미사 첨부, 자모 분해 및 결합
  • Hangulize (Python) [link]
    • 외래어 한글 변환
  • Hanja (Python) [link]
    • 한자 한글 변환
  • kroman [link]
  • hangul (Perl) [link]
    • Hangul Romanization
  • textrankr (Python) [link] [demo]
    • TextRank 기반 한국어 문서 요약
  • 한국어 Word2Vec [demo] [paper]
    • 한국어 Word2Vec의 analogy test 데모
  • 나쁜 단어 사전 [link]
    • crowdsourced dic about badword in korean

2. Dataset

  • Sejong Corpus [link]
  • KAIST Corpus [link]
  • Yonsei Univ. Corpus
  • Korea Univ. Corpus
  • Ulsan Univ. Corpus [link]
  • Wikipedia Dump [link] [Extractor]
  • NamuWiki Dump [link] [Extractor]
  • Naver News Archive [link]
  • Chosun Archive [link]
  • Naver sentiment movie corpus [link]
  • sci-news-sum-kr-50 [link]

3. Blogs / Slides / Researchers

3.1. Blogs

  • dsindex's blog [link]
  • 엑사젠, "혼자 힘으로 한국어 챗봇 개발하기" [link]
  • Beomsu Kim, "word2vec 관련 이론 정리" [link]
  • CPUU, "Google 자연어 처리 오픈소스 SyntaxNet 공개" (Korean tranlsation of Google blog) [link]
  • theeluwin, "python-crfsuite를 사용해서 한국어 자동 띄어쓰기를 학습해보자" [link]
  • Jaesoo Lim, "한국어 형태소 분석기 동향" [link]

3.2. Slides

  • Lucy Park, "한국어와 NLTK, Gensim의 만남" (PyCon APAC 2015) [link]
  • Jeongkyu Shin, "Building AI Chat bot using Python 3 & TensorFlow" (PyCon APAC 2016) [link]
  • Changki Lee, "RNN & NLP Application" (Kangwon Univ. Machine Learning course) [link]
  • Kyunghoon Kim, "뉴스를 재미있게 만드는 방법; 뉴스잼" (PyCon APAC 2016) [link]
  • Hongjoo Lee, "Python 으로 19대 국회 뽀개기" (PyCon APAC 2016) [link]
  • Kyumin Choi,"word2vec이 추천시스템을 만났을 때" (PyCon APAC 2015) [link]
  • 進藤裕之 (translated by Hongbae Kim), "딥러닝을 이용한 자연어처리의 연구동향" [link]
  • Hongbae Kim, "머신러닝의 자연어 처리기술(I)" [link]
  • Changki Lee, "자연어처리를 위한 기계학습 소개" [link]
  • Taeil Kim, Daeneung Son, "기계 번역 모델 기반 질의 교정 시스템" (Naver DEVIEW 2015) [link]

4. Papers

4.1. Korean

  • 김동준, 이연수, 장정선, 임해창, 고려대학교, (주)엔씨소프트, "한국어 대화 화행 분류를 위한 어휘 자질의 임베딩(2015년 동계학술발표회 논문집)" [paper] link dead

4.2. English

5. Lectures

5.1. Korean Lectures

  • Kangwon Univ. 자연언어처리 [link]
  • 데이터 사이언스 스쿨 [link]
  • SNU Data Mining / Business Analytics [link]

5.2. English Lectures

  • Stanford CS224n: Natural Language Processing [link] [YouTube]
  • Stanford CS224d: Deep Learning for Natural Language Processing [link] [YouTube]
  • NLTK with Python 3 for NLP (by Sentdex) [YouTube]
  • LDA Topic Models [link]

6. Conferences / Institutes / Events

6.1. Conferences

  • 한글 및 한국어 정보처리 학술대회 [link]
  • KIPS (한국정보처리학회) [link]
  • 한국음성학회 학술대회 [link]

6.2. Institutes

  • 언어공학연구회 [link]
    • 한글 및 한국어 정보처리 학술대회 (Since 1989, 매년 개최) [link]
    • 국어 정보 처리 시스템 경진대회 (Since 2010, 매년 개최, 주최: 문화체육관광부 및 국립국어원) [link]
    • 자연언어처리 튜토리얼 (비정기적) [link]
    • 자연어처리 및 정보검색 워크샵 [link]
  • 한국음성학회 [link]

6.3. Events / Contests

  • 국어 정보 처리 시스템 경진 대회 [link]

7. Online Communities

  • Tensorflow KR (Facebook Group) [link]
  • AI Korea (Facebook Group) [link]
  • Bot Group (Facebook Group) [link]
  • 바벨피쉬 (Facebook Group) [link]
  • Reddit Machine Learning Top posts [link]

8. How to contribute

  1. Fork this Repository, by clicking on "fork" icon at the top right corner.

  2. Get the link for the forked repo, by clicking on the green button on your page. something like, "https://github.com/[username]/Awesome-Korean-NLP.git"

  3. On your local machine, "git clone https://github.com/[username]/Awesome-Korean-NLP.git"

  4. "cd Awesome-Korean-NLP"

  5. open "README.md" with your favorite text editor.

  6. Edit.

  7. git commit -a -m "added section 8: emoticons"

  8. git push, and verify on your fork

  9. goto https://github.com/datanada/Awesome-Korean-NLP and create pull request.

  10. "compare across forks" with base: datanada/Awesome.. and head: [username]/Awesome..

[beginners guide]





.........

Posted by 홍반장水 홍반장水

챗봇 시작해보기   https://www.slideshare.net/ssusercf5d12/ss-69518853


Python 으로 Slackbot 개발하기   https://www.slideshare.net/ssusercf5d12/python-slackbot


20170227 파이썬으로 챗봇_만들기     https://www.slideshare.net/KimSungdong1/20170227-72644192


머신러닝의 자연어 처리기술(I)    https://www.slideshare.net/ssuser06e0c5/i-64267027


인공지능, 기계학습 그리고 딥러닝  https://www.slideshare.net/JinwonLee9/ss-70446412  


[F2]자연어처리를 위한 기계학습 소개   https://www.slideshare.net/deview/f2-14341235





.

Posted by 홍반장水 홍반장水

모두를 위한 딥러닝 - Deep Reinforcement Learning



1. 강좌 소개

본 Reinforcement Learning(강화학습) 강좌는 홍콩과학기술대학교의 김성훈 교수님의 ‘모두를 위한 딥러닝’ 시리즈의 두번째 강좌입니다. 앞선 강좌로  기본적인 머신러닝과 딥러닝 강좌 가 있습니다.

일주일에 한강좌씩 천천이 업데이트 예정입니다.

알파고와 이세돌의 경기를 보면서 이제 머신 러닝이 인간이 잘 한다고 여겨진 직관과 의사 결정능력에서도 충분한 데이타가 있으면 어느정도 또는 우리보다 더 잘할수도 있다는 생각을 많이 하게 되었습니다. Andrew Ng 교수님이 말씀하신것 처럼 이런 시대에 머신 러닝을 잘 이해하고 잘 다룰수 있다면 그야말로 “Super Power”를 가지게 되는 것이 아닌가 생각합니다.

더 많은 분들이 머신 러닝과 딥러닝에 대해 더 이해하고 본인들의 문제를 이 멋진 도구를 이용해서 풀수 있게 하기위해 비디오 강의를 준비하였습니다. 더 나아가 이론에만 그치지 않고 최근 구글이 공개한 머신러닝을 위한 오픈소스인 TensorFlow를 이용해서 이론을 구현해 볼수 있도록 하였습니다.

이 머신러닝, 딥러닝 강좌는 수학이나 컴퓨터 공학적인 지식이 없이도 쉽게 볼수 있도록 만들려고 노력하였습니다.

2. 도움되는 분들

  • 인공지능에 대해 관심이 있는 누구나
  • 머닝러신, 딥러닝의 개념을 이해하고 싶으신분
  • 머닝러신의 직접 구현해보고 싶으신 분
  • 앞선 기본적인 머신러닝과 딥러닝 강좌 를 학습하신 분
  • 강화학습에 대해 관심이 있는 분

3. 참고자료

이 비디오는 저도 인터넷등을 통해 공부하면서 만든것이며 아래 자료를 많이 사용하였습니다.

4. 지식공유자 소개

김성훈

Hong Kong University of Science and Technology 에서 컴퓨터 공학쪽으로 연구를 하고 있습니다.
비디오나 강의에 대한 의견이 있으시면 아래로 이메일을 보내 주시면 됩니다.
hunkim+ml@gmail.com


Posted by 홍반장水 홍반장水

텐서플로  https://www.tensorflow.org/

 

구글(Google)사에서 개발한 기계 학습(machine learning) 엔진. 검색, 음성 인식, 번역 등의 구글 앱에 사용되는 기계 학습용 엔진으로, 2015년에 공개 소스 소프트웨어(open source software)로 전환되었다.

 

 텐서플로는 C++ 언어로 작성되었고, 파이선(Python) 응용 프로그래밍 인터페이스(API)를 제공한다.

 

텐서플로는 빠르고 유연하여 한 대의 스마트 폰에서도 운영될 수 있고, 데이터센터의 수천 대 컴퓨터에서도 동작될 수 있다.

 

Google : https://googleblog.blogspot.kr/2015/11/tensorflow-smarter-machine-learning-for.html

 

Github : https://github.com/tensorflow/tensorflow

 

 

FB Sight에 오신것을 환영합니다 (Terms of Service)!  : http://fbsight.com/c/TF-KR

 

 

About TensorFlow

 

TensorFlow™ is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API. TensorFlow was originally developed by researchers and engineers working on the Google Brain Team within Google's Machine Intelligence research organization for the purposes of conducting machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well.

 

 

 

.

Posted by 홍반장水 홍반장水

인공지능 알파고와 세기의 대결로 역사가 되다


지난 3월 이세돌 9단과 인공지능 알파고가 벌인 바둑 대국은 한국뿐 아니라 전 세계의 이목을 집중시켰다. 모두 5회의 대국 결과 인공지능의 승리로 끝났지만 끝까지 포기하지 않은 이세돌 9단에게 사람들은 격려와 찬사를 보냈다. 주요 서점에서는 ‘이세돌’이란 고유명사가 제목에 들어간 책들이 불티나게 팔리는 현상도 벌어졌다. 



전라남도 신안군 비금도에서 태어난 이세돌 9단은 여섯 살 때 처음 바둑을 접했다. 아마 5단의 실력자였던 아버지는 아들의 천재성을 알아보고 프로기사의 길로 이끌었다. 아홉 살 때 서울에 올라온 그는 권갑용 사범의 문하에서 본격적으로 바둑을 배웠고 열세 살 때 프로기사로 입단했다. 처음부터 두각을 나타낸 건 아니었다. 10대 후반이 된 2000년부터 제대로 성적이 나기 시작했다. 그해 1월부터 5월까지 무려 32연승을 거두며 제5기 박카스배에서 우승했고 최우수 기사상을 받았다. 2002년에는 제15회 후지쓰배에서 우승하며 세계 타이틀 소유자가 되었다. 2003년 LG배 결승에서 이창호 9단을 이기고 우승한 뒤 10여 년간 국내외 대회를 휩쓸며 정상의 자리를 지켰다. 2010년 광저우 아시안게임에서 바둑 국가대표로 발탁되어 금메달을 목에 걸었다. 2012년 5월까지 27개월 연속 한국 바둑 랭킹 1위를 달리던 그는 그해 6월 박정환 9단에게 1위 자리를 내주고 현재 2위에 올라 있다. 


“오랫동안 바둑을 뒀는데, 1700여 판 중 500판 이상 패배했을 거예요. 승부의 결과도 중요하지만 어떻게 바둑을 잘 두었느냐가 더 중요해요. 저는 바둑을 스포츠가 아닌 예술로 배웠어요. 바둑은 기본적으로 둘이 하나의 예술 작품을 만드는 거예요. 상대방을 먼저 배려해야 좋은 작품을 만들 수 있죠.” 


바둑 용어 가운데 복기라는 말이 있다. 같은 실수를 반복하지 않기 위해 대국이 끝나고 여러 변화에 대해 검토하는 과정으로 주로 잘못 둔 수가 무엇인지 찾는다. 이 9단은 가장 열심히, 가장 오랜 시간 복기를 하는 프로기사로 알려져 있다. 아버지에게 처음 바둑을 배울 때부터 몸에 익은 습관이다. 승패와 관계없이 그는 머릿속에 바둑판을 그려놓고 복기를 반복한다.


“대국이 끝난 뒤 바둑 기사들은 자기가 어디서 잘못 뒀는지, 상대가 어디서 잘 뒀고 못 뒀는지 분석합니다. 저는 복기가 승패보다 중요하다고 생각합니다. 시험 보고 나서 틀린 문제를 왜 틀렸는지 잘 이해하고 정리해두면 다음에 비슷한 문제가 나오면 맞히는 것처럼요.”


http://www.seri.org/ic/icDBRV.html?s_menu=0608&pubkey=ic20161125001&menu_gbn=9&menucd=0601

Posted by 홍반장水 홍반장水