티스토리 뷰

뉴런 네트워크는 이제까지 발명된 프로그래밍 패러다임중 가장 아름다운 것중 하나입니다. 일반적인 프로그래밍 방법에서, 우리는 컴퓨터에게 무슨 일을 해야하는지, 큰 문제들을 작은 단위로 쪼개면서, 컴퓨터가 수행하기 쉽도록 일들을 명확히 명시하였습니다. 반면에 뉴런 네트워크에서는 우리는 컴퓨터에게 어떻게 문제를 해결해야 하는지 알려주지 않습니다. 대신, 관측 가능한 데이터로 부터 배우고, 스스로의 해결책을 만들어 내놓습니다.


데이터로 부터 스스로 배운다는 사실이 매우 흥미로워 보입니다. 그러나 2006년 까지는 몇몇의 특정한 문제들을 제외하고서는 기존에 사용하던 해결책 보다 좋은 결과를 얻기 위한 학습 방법을 알지 못했습니다. 2006에 바뀐것은 딥 뉴런 네트워크라고 불리는 학습 기술입니다. 이 기술은 우리가 현재 딥 러닝 이라고 알고 있는 기술입니다. 이는 계속해서 개발되어 오늘날 딥 뉴런 네트워크와 딥 러닝은 컴퓨터 비젼, 음성 인식, 자연어 인식과 같은 매우 많은 중요한 문제들에 대한 이루 말할 수 없는 매우 놀라운 성과를 이루어 냈습니다. 이 기술은 구글, 마이크로 소프트 그리고 페이스북과 같은 회사들에 의해 넓은 영역에서 적용되고 사용되고 있습니다.


이 책의 목표는 딥 러닝을 위한 현대적인 기술들을 포함하여 뉴런 네트워크의 핵심 개념들을 모두 습득할 수 있도록 여러분들을 돕는것 입니다. 이 책을 끝낸 뒤에는 여러분은 복잡한 패턴 인식 문제들을 풀 수 있는 뉴런 네트워크와 딥 러닝을 사용하는 코드를 작성할 수 있을 것 입니다. 또한 여러분은 여러분만의 문제들을 해결하기 위한 뉴런 네트워크와 딥 러닝을 사용할 수 있는 기반을 가지게 될 것 입니다.


원리 중심 접근

이 책의 기초를 이루는 한 확신은 많고 많은 개념들의 얕은 이해 보다는 뉴런 네트워크와 딥 러닝의 핵심 원리들의 단단한 이해를 얻는 것이 훨씬 낫다는 것 입니다. 여러분이 핵심 개념들을 잘 이해 했다면, 여러분은 다른 새 내용들도 잘 이해할 수 있을것입니다. 컴퓨터 프로그래밍의 면에서, 새 언어에 대한 문법, 라이브러리와 데이터 구조를 습득하는것 이라고 생각해 보세요. 여러분은 아마 전체 언어들 중 극히 일부만을 알고있을 것 입니다. (많은 언어들은 방대한 기본 라이브러리를 가지고 있습니다) 그러나 새로운 라이브러리와 데이터 구조는 매우 쉽고 빠르게 배울 수 있습니다.


이 말인 즉슨, 이 책은 결코 어떤 특정한 뉴런 네트워크 라이브러리를 사용하는 방법에 대한 강의가 아니라는 것 입니다. 만약 여러분이 라이브러리를 배우고자 이 책을 읽으려고 한다면, 이 책을 읽지 마세요! 배우고 싶은 라이브러리를 찾고, 강좌와 문서들을 통해 배우십시오. 그러나 명심하세요. 지금 당장의 문제를 해결할 수 있을지 몰라도 정말로 뉴런 네트워크에서 무엇이 일어나고 있는지 알고싶다면, 지금으로 부터 몇 년이 지나서도 여러분의 식견이 유지 되길 원한다면, 단지 어떤 라이브러리를 배우는것 만으로는 충분치 않습니다. 여러분은 어떻게 뉴런 네트워크가 움직이는지에 대한 오래가고 지속 가능한 식견을 배울 필요가 있습니다. 기술은 우리에게 오기도, 또 사라지기도 합니다. 그러나 우리의 식견은 영원합니다.


실습 중심 접근

우리는 실질적인 문제를 해결함으로써 뉴런 네트워크와 딥 러닝의 핵심 원리들을 배울 것 입니다. 바로 컴퓨터에게 손으로 쓴 숫자들을 인식하게 하는 문제입니다. 이 문제는 일반적인 프로그래밍 방법으로는 매우 해결하기 어려운 문제입니다. 하지만 곧, 앞으로 보겠지만, 이 문제는 간단한 뉴런 네트워크를 사용하면 아주 쉽게 해결할 수 있습니다. 단지 몇십줄의 코드만으도 말이죠. 또 어떠한 라이브러리를 사용하지 않고서도 말이죠. 한 술 더 떠서, 우리는 많은 반복을 통해 뉴런 네트워크와 딥 러닝에 대한 핵심 개념들을 서서히 더 많이 결합시키면서 프로그램을 개선해 나갈 것입니다.


이러한 실습 중심 접근은 이 책을 읽기 위해 프로그래밍 경험이 필요하다는 것을 의미합니다. 하지만 여러분이 전문적인 프로그래머가 될 필요는 없습니다. 저는 파이썬 2.7 으로 코드를 작성해 두었습니다. 파이썬은 여러분이 파이썬으로 프로그래밍을 하지 않더라도 적은 노력으로도 이해하기 쉬울것이기 때문입니다. 이 책의 과정을 따라가면서 우리는 작은 뉴런 네트워크 라이브러리를 개발할 것 입니다. 여러분의 실험에 사용하고 이해를 돕기위한 것이지요. 모든 코드는 여기서 다운로드 할 수 있습니다. 한번 책을 다 읽고 나면, 실제 생산적인 사용을 위한 많은 기능을 포함한 뉴런 네트워크 라이브러리 중 하나를 골라 쉽게 사용할 수 있습니다.


비슷한 맥락으로, 이 책을 읽기 위해 필요한 수학적 지식들 또한 대단할 필요가 없습니다. 대부분의 장에서는 몇몇 수학 공식들이 등장하지만, 이는 단지 초등 수학이거나 함수들의 그래프에 불과합니다. 많은 독자들이 아마 이해하는데 무리가 없을 것 입니다. 때때로 저는 고급 수학 공식들을 사용하지만 중요한 내용들을 정리해 두어 여러분은 몇 수학적 세부사항들을 무시할지라도 잘 따라올 수 있을겁니다. 예외적으로 굉장히 어려운 수학 공식들이 등장하는 장은 제 2장입니다. 다항 함수 연산과 선형 수학이 사용됩니다. 저 둘은 비슷하진 않지만, 저는 제 2장에서 어떻게 수학을 다뤄야 하는지 논의와 함께 시작하였습니다. 만약 너무 어렵다고 생각이 든다면, 요약문으로 넘어가 결과만 확인할 수도 있습니다. 어떤 상황이건, 시작부터 이것에 대해 너무 걱정할 필요는 없습니다.


책에서 원리 중심 접근과 실습 중심 접근 둘다 동시에 초점을 맞추어 진행하는 것은 흔지 않습니다만, 저는 뉴런 네트워크의 근본적 개념을 쌓는다면 여러분이 매우 잘 배울 수 있을것이라고 믿습니다. 우리는 단지 추상적인 이론이 아닌 살아있는 코드를 작성하게 될 것입니다. 여러분은 또한 그 코드를 탐색하고, 확장할 수 있습니다. 이를 통해 여러분은 이론과 실습 양쪽 모두에서 궁극적인 것들을 이해하고 여러분의 지식을 넓힐 수 있을것 입니다.

'뉴런 네트워크와 딥 러닝' 카테고리의 다른 글

뉴런 네트워크와 딥 러닝  (0) 2017.04.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday