파이선 코딩 초보자를 위한 톈서플로우∙OpenCV 머신러닝 머리말과 url 목차 파일 다운로드

in kr •  6 years ago  (edited)

noname01.png

머신 러닝에 관심내지는 호기심을 가지게 된 것은 바로 2016년 상반기 세기적인 승부로 기록된 이세돌 프로기사와 알파고와의 한 판 대결이었다. 그 당 시 필자의 코딩 실력이란 컴퓨터 학원에서 배우는 수준 정도의 아두이노 C/C++ 정도였다면 믿을 수 있을까? 물론 1980년대에 포트란 코딩을 해본 경험이 있었으며 90년대 중반 윈도우즈 PC가 출현할 때쯤 사용해 본 Qbasic 까지가 필자가 아는 컴퓨터 코딩의 전부였으니 요즈음 기준으로 보면 컴맹에 해당한다.

(본서는 교보에서 구매하실 수 있습니다. 개인출판도서라 입금 10일 후 배송 됨에 유의하시기 바랍니다.)

하지만 머신 러닝이란 분야가 꼭 IT 전공자만이 하는 그런 분야는 아닐 것이다. 정문으로 들어와 제대로 체계적으로 배울 수도 있겠지만 정문이 어디에 있는지 모를 경우에는 정문 뒷문(backdoor) 가릴 것 없이 들어가서 공부하면 되는 것이 아닐까 한다.

누가 머신 러닝에 대해서 잘 알까 추정해 보면 첫째가 이 세돌 기사가 아닐까 한다. 딥 러닝 코드의 원리를 잘 모른다 해도 머신 러닝과 피 튀기는 대결을 위해 감각적으로 딥 러닝이란 놈이 무서운 강적이란 걸 느꼈을 것이고 일승이라도 올리기 위해서 사력을 다했을 것이다.

물론 머신 러닝이란 것이 인간도 아니고 그렇다고 그냥 컴퓨터 알고리듬이라고 치부하기도 어렵다. 파셉트론을 세상에 내놓은 Rosenblatt 만 해도 미래의 인공지능의 필수요소로서 머신 러닝에 classification 능력을 부여하기 위해 생체 뉴론을 연구하였고 포토센서와 컴퓨터를 이용하여 neural network를 바탕으로 한 퍼셉트론으로 머신 러닝 시대를 열었다.

누구나 마찬가지지만 도대체 어떻게 어떠한 원리로 사람이 학습하듯이 컴퓨터가 학습하는가 하는 의문을 가지게 마련이다. 필자도 마찬가지였는데 그 의문의 일부를 이 책을 통해서 풀어 보자. 물론 다는 아니지만 어느 정도 단서는 찾을 수 있을 것이다. 과거 60년간에 걸쳐 머신 러닝은 여러 가지 우여곡절로 인해서 아주 더디게 발전해 왔으므로 지금 공부를 시작해도 입문 경계까지는 곧 쉽게 도달 할 수 있다고 보는데 본서가 그 일부 역할을 했으면 하는 기대이다.

이미 CNN까지 훑어보았지만 컴퓨팅 속도 문제는 여전히 숙제 문제로 남아 있으며 지금 현재로서는 실용적인 해답은 각 종 image net에 의한 데이타 베이스를 바탕으로 하는 Pretrainning 방식이 현재로서는 해답인 듯하다. 지금까지는 발전이 대단히 더딘 편이었으나 최근에 발전 속도가 점차 가속화 되고 있는 느낌이다. 이미 최근에 발표한 퀄캄의 855 칩셑 스펙을 보면 CPU에 이미 GPU까지 통합한 아키텍츄어를 채택하고 있는 것으로 보아 머신 러닝을 강력하게 지원하고 있음을 알 수 있다. 2019년부터 시작되는 5G 시대를 맞아서 머신 러닝이 개화가 되지 않을까 전망된다.

아울러 전자책 시대에 구태여 종 책을 발간하는 이유에 의문을 가진다면 원고 파일을 가지고 있는 필자조차도 참고용으로 종이 책이 너무나 필요할 수밖에 없다는 점을 피력하고자 한다. 좀 다른 예이지만 수능생들이 아무리 좋은 인강 자료나 컴퓨터 파일을 가지고 있어도 자신이 직접 준비한 손으로 깨알같이 요약 정리한 공책이 일 순위가 될 수밖에 없을 것이다. 조선왕조실록이 책으로 편집되어 있지만 무슨 재미 난 스토리가 씌여 있겠는가? 조선 시대의 역사적 사실을 꾸준히 기록했으니까 역사에 관심 있는 분들이 정보 검색을 통해 의문점을 해소하는데 유용한 사서이듯이 본서도 읽는 책이 아니라 머신 러닝에 대한 호기심을 풀어 나가기 위해 매일 매일 했던 코딩 작업 결과를 정리해 둔 작업 일지라고 보면 될 듯하다.

참고로 책 내용별 학습을 위한 코드는 이미 스팀잇에 블록체인화 되어 보관되고 있으니 아래의 url 주소에서 목차 파일을 다운받아 활용하기 바란다. 각 장 절별로 제목과 url 주소를 나타내었으므로 직접 스팀잇 블로그로 이동해 필요한 코드를 다운 받아 사용하기 바란다.

텐서플로우∙OpenCV 머신 러닝 목차
http://blog.daum.net/ejleep1/692

1-1장에서는 아나콘다 설치 문제를 다룬다. 특히 TensorFlow 로 머신 러닝을 다루어 보기 위해서는 GPU 버전이 아닌 자신의 윈도우즈 10에 제대로 TensorFlow 버전 아나콘다가 설치되어야 한다. 사실 설치하면서도 실패할 줄 알았는데 주먹구구식이긴 하지만 고비를 넘겨 제대로 설치가 잘 되었다. 특히 예제 문제가 MNIST 나 CNN 이 아닌 Iris flower data set을 다루는 classification 이긴 하지만 좋은 출발점이 될 수 있을 것이다.

1-2장의 내용은 좀 특이하게도 볼츠만의 통계역학과 확률 분포 이론에 대해서 알아본다. 통계역학의 볼츠만 확률 분포라든지 또는 Fermi-Dirac 공식과 Bose-Einstein 공식 각각은 노벨상 수여의 계기가 될 정도로 물리학의 지평선을 넓히는데 큰 역할을 하였다. 그런데 어떤 연유로 1957년 Rosenblatt 의 퍼셉트론 시절부터 1990년대 LeCun의 MNIST 수기숫자 인식문제에 이르기까지 머신 러닝에서 통계 물리학의 유명한 확률 분포 공식을 차용해다 쓰게 되었는지 추적 해본다.

2장에서는 너무나 추상적으로만 느껴지는 머신 러닝을 제대로 이해할 수 있는 예제를 찾아보기 위한 노력으로 Rosenblatt 의 퍼셉트론을 이해하기 위한 아두이노에 의한 실험 장치부터 훈민정음 자음 모음의 Binary Classification 까지 많은 예제 문제를 발굴하려는 노력을 시도하였다. 즉 아두이노 코딩이 될 정도면 머신 러닝도 해 볼만 하다고 볼 수 있다.

3장은 머신 러닝 Regression 분석의 hypothesis를 이해하기가 쉽지 않은 수학식으로만 다룰 것이 아니라 hypothesis 곡면 시각화 방법으로 선형회귀 문제서부터 XOR 논리문제까지 다루었으며 라즈베리 파이 보드에 무료로 제공되는 매쓰메티카를 사용하여 그래픽 처리하는 기법을 소개하였다.

4장에서는 뉴럴 네트워크를 중심으로 제기되어 왔던 XOR 문제 처리에 있어서 Backpropagation 문제의 중요성과 함께 3장의 hypothesis 시각화 방법을 사용하여 해설하였고 더 나아가 고차 Polynomial 형태의 hypothesis 사용에 따른 해결책을 시도하였으며 SVM(Support Vector Machine) 기법과의 연관성도 해설하였다. 한가지 아니러니한 사실은 아나콘다를 설치하여 머신 러닝을 시작할 때부터 SVM 기법이 튀어나왔으나 수학적인 용어로 기술되어 있어서 그런지 도대체 전혀 이해할 수가 없었는데 3장에서 다항식 기법을 하다보니 그 중에 2차 다항식 예제가 SVM 기법과 동일함을 알게 되었다. 즉 필자가 제시한 다항식 기법은 SVM 기법을 부분집합으로 포함하는 보다 광의의 알고리듬인 듯하다.

그밖에도 XOR 로직 문제 해법에 있어서 입력 데이터 벡터를 부분집합으로 재구성하고 단지 선형 hypothesis를 사용하여 푼 후 결과들을 집합계산에 의해 재구성해서 성공적인 결과를 주었는데 앞으로도 계속 연구해보아야 할 알고리듬으로 보인다.

5장에서는 중고등과정에서 배우게 되는 일차 방정식, 이치 방정식, 삼차 방정식과 그밖에 대학과정에서 다루는 방정식들의 해법이 머신 러닝에 의해서 어떤 hypothesis를 가지고 어떻게 학습하여 해결하는지 구체적인 사례들을 제시하였다. 대학과정에서 비선형 방정식의 해를 구하기 위해서 Newton-Raphson 기법을 사용하나 이 기법으로 풀리지 않는 문제들이 있을 수 있는데 머신 러닝 기법을 적용하여 충분히 해결이 되었다. 방정식 문제 해법 중에서 가장 어려웠던 문제가 바로 너무나 쉬워 보이는 sin(x) = 0 을 푸는 문제였다. 이 문제의 머신 러닝 해법을 찾아냄에 있어 함수의 Maclaurin 전개를 위한 ∑표현 대신에 대학원 과정에서도 잘 사용되지 않는 Infinity product 개념을 사용하게 되었는데 이는 인도의 천재 수학자 Ramanujan이 즐겨 사용하던 수학적 표현 양식의 하나이다.

6정에서는 텐서플로우 알고리듬에서 시작하여 이미지를 인식하기 위한 필터링 풀링 및 fully connected layer 구성에 이르는 CNN 문제를 다루었다. 이 분야는 현재도 Pretrainning 기법과 연계되어 급속하게 발전되고 있는 분야이다.

7장에서는 텐서플로우와 별도로 라즈베리 파이 보드에서 OpenCV를 설치하여 Haarcascade 방식에 의한 안면인식에서부터 시작하여 자동차 및 차선 인식 문제와 색상 인식 문제를 다룬다. 이 기법들은 라즈베리 파이 보드를 사용한 자율주행 RC 카 구현에 적용할 수 있다.

앞으로도 지금까지 다루어 왔던 내용을 스팀잇 블로그에서 지속적으로 심층화 하여 다루어 볼 계획이다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

짱짱맨 호출에 응답하여 보팅하였습니다.