-
-
파이썬 넘파이 - 딥러닝 머신러닝을 위한
문용준.문성혁 지음 / 잇플ITPLE / 2020년 6월
평점 :
1차원배열은 팩터Vector라고 하죠. 2차원배열은 행열matrix입니다. 팩터와 행렬은 파이썬 기초나 입문에서도 배울수있습니다. 하지만 3차원이상 부터는 Tensor로 수학이 복잡해지고 무지하게 어려워집니다. 그래서 흥미를 잃지 않으려면 교재선택을 잘해야 하지 않을까요. 더우기 딥러닝과 머신러닝을 공부하는 학습자들이 늘어나는데 다른 개발자가 짠 코드를 복사 붙여넣기도 한계가 있습니다. 선형대수학을 어느정도는 익숙해야 제대로 된 인공지능을 공부할 수있습니다. 그런 의미에서는 <딥러닝 머신러닝을 위한 파이썬 넘파이>라는 책의 의미는 적지 않습니다. 선형대수를 통해 다차원배열과 자료구조의 기초를 확실히 하는 계기가 될겁니다.
저자는 문용준과 문성혁님입니다. 문용준님은 숭실대 전산과를 졸업하셔서, 평화은행, 국민은행, 한국IBM등 유수의 기업을 거쳐 현재는 SK C&C 수석연구원으로 계십니다. 패이스북도 열심히 활동하시는 걸로 압니다. 공동저자 문성혁님은 세종대 컴공과 출신으로 아토큐브 CTO라고 합니다. 최근 두분이 공저한 책들이 많은데 <파이썬 입문 A to Z><파이썬 심화 A to Z><데이터사이언스 입문 A to Z> 등이 있고, 유튜브 강의는 문성혁님이 주로 맡아서 꾸준히 올리고 있습니다. 이 책도 2편인가 유튜브 영상이 업로드된 상황입니다.넘파이는 파이썬의 라이브러리입니다. 파이썬을 배우게 되면 꼭 알야할 라이브러리들이 있습니다. 데이터분석을 할때는 PANDAS를 사용하고 데이터 분석을 하고 그 결과를 시각화할때는 대단히 다양하지만 matplotlib이나 Seaborn을 많이 사용합니다. 이러한 라이브러리에 비해 Numpy는 고성능수치계산을 위해 만들어졌으며 더우기 행렬에 특화된 라이브러리라고 할수있습니다. 그런이유로 딥러닝을 잘하려면 Numpy를 잘 사용해야 합니다. 저자들도 행렬의 중요성때문인지 다차원배열을 책의 앞장 3,4,5장에 집중배치를 해두었습니다. 논리검색이나 팬시검색은 손으로 계산하려면 얼마나 힘들겠는가, x= np.arrange(10).reshape(2,5)으로 적어주면 너무도 편하게 2행5열의 배열을 만들어 줍니다. 이것이 바로 파이썬의 매력이겠죠.
수학함수에서 시각화는 매우 중요합니다. 넘파이 모듈에서 소개하는 함수들이 어떤 모양을 띄는지, matplotlib 라이브라리를 통해 구현을 하고 plt.show()로 디스플레이 코드는 익숙하죠. 그래프를 그리는 기본 모듈로 plot는 가장 기본적인 형식입니다. 따로 수학함수장을 만들어서 산술함수, 논리와 비교연산, 지수와 로그함수, 삼각함수까지 다릅니다. sin, cosine, tangent를 다루는 것이죠. 개발자중에 수학을 못하시는 분들이 꽤 있는 걸로 압니다. 남의 코딩을 복붇(복사붙여놓기)만 죽어라 하는거죠. 아예 빠르게 PM(프로젝트관리자)역할을 하면 모를까 개발자로 성공하려면 결국 다차원배열, 미분, 합성곱 이런 용어들에 익숙해 져야 합니다. 그것이 현직에서 PM으로 성장할때까지 개발자가 기본소양으로 가져야 길일겁니다.
넘파이는 선형대수를 어렵게 만드는 것이 아니라 선형대수를 쉽게 답을 낼수있게 해주는 파이썬 라이브러리입니다. np.inner(), np.outer()로 간단히 벡터의 내적과 외적 함수를 구할 수가 있습니다. 더우기 linalg 서프패키지의 쓰임새를 다양하게 익숙하게 해야 합니다. 이외에도 389개의 클라스와 함수를 제공합니다.선형대수, 확률통계, 각종함수 등을 빠르게 적용하고 자동화도 가능하게 해줍니다. 물론 기본적 수학을 원리적으로 이해하고 넘파이를 대해야 활용효용이 높아 질겁니다. 선행함수에 들억는 것들이어떻게 쓰이는지만 알아도 효과는 클겁니다. 딥러닝 머신러닝 말은 화려하지만 제대로 적용하는 것은 쉽지 않습니다. 그 밑바당에 수학을 토대를 하고 있어야 지 특히 선형대수실력이 단단해야 속도나 정확도에서 좋은 결과를 얻게 될것이고 이 책에서도 그 길을 찾을 수가 있습니다. 두분의 저자가 모두 현직의 파이썬개발자셔서 그런데 수학이 필요한 요소를 잘 파악하신듯합니다. 그런 점이 신뢰가 깊은 부분일겁니다.