[Book] 다시 미분 적분

|

fig.1

고등학교 시절 문과의 성골이라고 할 수 있는 어문계열학교에서 독일어를 전공을 하다가 대학에 와서컴퓨터 계열 전공을 하면서 느낀 가장 큰 문제는 수학적 베이스가 약하다는 것이었다. 선형대수, 이산수학, 미적분 등등 여러 과목을 수업 또는 독학을 하면서 중간 중간 뚫려있는 공백들은 꽤 큰 약점으로 다가 왔다.

인공지능 분야 공부를 하면서 수학적 베이스가 나의 발목을 잡았다. 급한데로 미적분학을 시작으로 얼기설기 쌓고는 있었지만 내가 개념을 바로 이해하고 있는지에 대한 고민도 존재 했다. 그러던 중 길벗에서 다시 미분 적분이라는 책이 나온 것을 발견 했고, 좋은 기회에 책을 제공 받아 이렇게 리뷰를 작성 할 수 있는 기회를 얻게 되었다.

책은 판형도 크지 않아서 들고 다니면서 보기에 큰 부담이 없는 사이즈고, 330쪽 정도 되는 분량이지만 그렇게 두껍지 않다. 각 장은 시작할때 그 장에서 정리할 개념에 대한 문제가 한 문제 씩 나오고 그 장 말미에 개념 총 정리와 문제풀이로 구성 되어있다. 이 문제를 직접 풀지 않고 쭉 읽는데 3시간 남짓 걸렸다. 미분 적분에 대한 기본 개념을 빠르게 잡고 가고자 하는 분들에게 큰 부담없이 잡을 수 있는 책이라고 생각된다.

목차에서도 볼 수 있듯 고등학교 수준에서 배울 수 있는 전반적인 미분 적분을 다루고 있다. 문과 출신들이 보기에는 중간중간 큰 고비가 있는 부분들이 있다. 제일 큰 고비는 삼각함수 미분자연상수 e를 다루는 파트라고 생각된다. 이 부분을 제외하고는 수식이 익숙하지 않더라도 집중하면서 식을 따라 읽으면 크게 어렵지 않게 따라갈 수 있다. 수식에 변환이 생길때 주석이 있고, 다른 책들에 비해 수학적 배경지식을 상정하고 수식을 건너뛰는 일이 적기 때문에 독자가 꼼꼼이 읽기만 한다면 머릿속에 물음표를 띄우는 일은 적을 것이다.

fig.2

물론 삼각함수 미분에서는 좀 다른 이야기 일 수 있다. 문과에서는 간단하게만 다루고 넘어가는 파트를 미분까지 해야되서 수식 자체가 익숙하지도 않은데 식이 이리저리 변환해서 다소 어려울 수 있다. 이 큰 고비를 잘 넘긴다면 마지막 장까지 무리 없이 진행 할 수 있을 것이다.

fig.3

문과과정에서 다루지 않은 지수와 로그의 미분도 다루고 있지만 이 함수들에 미분을 진행하기 전에 지수와 로그의 개념부터 짚어주기 때문에 무리 없이 볼 수 있었다. 또 기계적으로 미분에 대한 수학이야기만 하는게 아니고 물리에 적용되는 이야기, 라이프니츠의 기호 이야기 등등 추가적으로 기술되어 있어서 읽을 거리가 풍부했고, 지루하지 않게 읽을 수 있었다.

길벗의 다른 수학책인 프로그래머를 위한 선형대수 등 처럼 기본 지식을 요구하지 않고, a부터 z까지 설명 하고 있기 때문에 미분 적분을 처음 시작하거나, 대학과정을 위해 빠르게 정리가 필요한 사람들에 적합한 책이라고 생각합니다. 고등학교 과정에서 다루고 있는 범위를 힘들지 않게 다루고 계신 분들에게는 다소 쉬울 수 있는 책이라 크게 도움이 되지 않을 수는 있지만 배경과 개념에 빠른 정리가 필요하신 분들은 한번쯤 읽어보시는 것도 좋을 듯 합니다. 인공지능 스터디를 시작하시면서 역전파 알고리즘때문에 미적분에 목마르신 모임에서 스터디용으로 쓰셔도 좋을 것 같습니다. 대학 미적분학을 위한 빠른 기초를 다지기에 좋은 책이었습니다.

몇몇 용어가 한글과 영어가 병기 표기가 있지 않아 조금 아쉬웠다. 대부분 병기가 되어있었지만 팩토리얼 factorial계승이란 표기만 되어 있던 점은 옥의 티로 여겨졌다.


본 게시물은 길벗에서 책을 제공 받아 작성된 글입니다.

Comment  Read more

Pandoc으로 Markdown Github-style 렌더링하기

|

Pandoc이라는 Haskell로 작성 된 convertermarkdown, mediawiki, textile, HTML, docx(ms word), epub, PDF 등으로 변화이 가능한 유틸리입니다.

# 설치

다운로드에서 스크롤을 내리시면 OS별로 설치 파일을 받을 수 있습니다. OS 버전에 맞는 걸로 설치 해주세요.

# 주요 옵션

옵션 설명
-o FILENAME, –output=FILENAME 저장할 파일명
-f FORMAT, –from=FORMAT 소스 포맷
-t FORMAT,–to=FORMAT 저장할 포맷
–toc 목차 생성
-S, –smart pandoc 이 소스 포맷을 판단해서 처리
-s, –standalone 파일이 아닌 STDIN 에서 입력 수행
-c URL, –css=URL 변환시 사용할 CSS 의 URL
-H FILENAME, –include-in-header=FILENAME FILENAME 을 HEADER 로 사용
-A FILENAME, –include-after-body=FILENAME FILENAME 을 footer 로 사용

-o FILENAME은 필수 옵션입니다.

Github Style로 변환하기

GitHub Sytle에 들어가셔서 CSS파일을 다운로드 받아주세요. 이 포스팅의 가장 핵심인 파일입니다. 여기서 받은 파일을 --css 옵션으로 줘서 Github-Style로 만들수 있습니다.

pandoc test1.md -f markdown -t html -s --css=github-pandoc.css -o test1.html

위와 같이 Markdown파일이 있는 위치에 css파일도 두고 변환을 시켜주시면 됩니다. PDF로 바로 저장도 되지만 LaTeX 패키지가 필요해서 LaTeX유저가 아니시면 HTML로 변환 하시고 PDF 인쇄 옵션을 통해서 저장하셔도 괜찮습니다.

주의 하실 점은 CSSHTML을 꾸며서 만드는 것이기 떄문에 CSS파일의 위치 참조가 깨지면 다시 평문 형태로 돌아가기 때문에 추출한 파일을 이동하실 때에는 CSS파일과 같이 움직여 주세요.

Comment  Read more

[세미나] 제 2회 V.ais 세미나 자료

|

Comment  Read more

[Book] 머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로

|

이 책은 다른 머신러닝 도서가 그렇듯이 인공지능이 어떤 역사를 가지고 발전했는지로 이야기를 시작합니다. 머신러닝에서 사용되는 전반인 용어와 표기법에 대한 정의로 글을 시작하기 때문에 입문서로 큰 장점이라고 생각됩니다. 입문서라고 나온 도서들 중에도 번역된 용어와 원어가 혼재되어 사용되어 인터넷에서 얻는 자료와 용어차이에서 오는 괴리감이 있는데 이 책은 그 부분을 해결 해주는 부분이 있습니다.

파이썬에 익숙하지 않은 사용자를 위해서 패키지 관리를 위해 pipconda에 대한 사용법도 제시하고 있습니다. 하지만 파이썬 문법에 대한 설명이 없기 때문에 파이썬은 어느 정도 익힌 다음에 읽는 것을 추천합니다.

2장부터는 실제적인 실습으로 들어갑니다. 퍼셉트론으로 시작해서 익숙하지 않았던 아달린 모델 등 프레임워크를 이용하지 않고, numpysklearn을 이용해서 코드를 작성하기 때문에 PYTHON에 익숙해지고 머신러닝의 개념을 잡기에 좋은 구성이라고 생각합니다. 수학 또한 어떤식으로 유도가 되고 어떻게 적용이 되는지 알려주기 때문에 수학적으로 탄탄이 갖출 수 있는 책입니다.

처럼 수식을 통해서 설명을 하고 있어서 느낌적으로 이해 하는 것이 아니라 실제적으로 어떤 과정을 통해서 유도 하는지 보여주고 있습니다

기하적으로 어떤식으로 규제와 Loss가 사용되는지 보여주기 때문에 다른 책을 통해서 봤을 때 이해가 되지 않던 부분이 명확지는 느낌을 받을 수가 있습니다.

import numpy as np
class Perceptron(object):
    
    def __init__(self, eta=0.01, n_iter=50, random_state=1):
        self.eta = eta
        self.n_iter = n_iter
        self.random_state = random_state
    
    
    def fit(self, X, y):
        rgen = np.random.RandomState(self.random_state)
        self.w_ = rgen.normal(loc=0.0, scale=0.01, size=1+X.shape[1])
        self.errors_ = []
        
        for _ in range(self.n_iter):
            errors = 0
            for xi, target in zip(X, y):
                update = self.eta * (target - self.predict(xi))
                self.w_[1:] += update * xi
                self.w_[0] += update
                errors += int(update != 0.0)
            self.errors_.append(errors)
        return self

    def net_input(self, X):
        return np.dot(X, self.w_[1:] + self.w_[0])
    
    def predict(self, X):
        return np.where(self.net_input(X) >= 0.0, 1, -1)
import pandas as pd
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)
df.tail()
0 1 2 3 4
145 6.7 3.0 5.2 2.3 Iris-virginica
146 6.3 2.5 5.0 1.9 Iris-virginica
147 6.5 3.0 5.2 2.0 Iris-virginica
148 6.2 3.4 5.4 2.3 Iris-virginica
149 5.9 3.0 5.1 1.8 Iris-virginica
import matplotlib.pyplot as plt

y = df.iloc[0:100, 4].values
y = np.where(y == 'Iris-setosa', -1, 1)

X = df.iloc[0:100, [0, 2]].values

plt.scatter(X[:50, 0], X[:50, 1], color='red', marker='o', label='setosa')
plt.scatter(X[50:100, 0], X[50:100, 1], color='blue', marker='x', label='versicolor')
plt.xlabel('sepal length [cm]')
plt.ylabel('petal length [cm]')
plt.legend(loc='upper left')
plt.show()

Jupyter Notebook을 이용해서 실습을 진행해 Jupyter Notebook에 대한 사용법도 익힐 수 있습니다.

이렇게 역사를 훑고 난 뒤에는 많이 쓰고 있는 모델인 logistic regression, SVM, 결정 트릭, KNN 등을 예제 코드와 함께 공부 할 수 있습니다. 코드만 있거나 설명만 있는 구조가 아니라 설명과 함께 전체 코드를 짜보면서 할 수 있습니다. 코드는 GitHub을 통해서 제공 되기 때문에 오타 등으로 인해서 다른 결과가 나오는 것을 쉽게 잡을 수 있고, 코드 분석을 책에 있는 것보다 편하게 할 수 있습니다.

데이터 셋을 만들고 가공하는 법에 대한 것도 한 장을 크게 할애하고 있습니다. 머신러닝의 핵심 요소 중 하나인 차원 축소를 위한 알고리즘에 해당하는 주성분 분석, PCA 등의 알고리즘 설명이 충분히 있습니다.

저수준 API까지 잘 설명이 되어 있습니다. tensorflow 2.0이 나오면서 변경 된 변경점들을 이전 버전과 비교 해주고 있기 때문에 인공지능에 입문하려고 고민하면서 책을 찾고 있다면 좋은 책입니다. 교과서라는 책 이름 처럼 차근차근 쌓아 나갈 수 있기 때문에 머신러닝 입문서를 찾고 있다면 추천할 만한 책입니다.


본 리뷰는 길벗에서 책을 제공받아 작성된 리뷰입니다.

Comment  Read more

[투표 결과] 블로그에 있으면 하는 내용

|

안녕하세요. V-AIS 운영진 Jerry 입니다.

이번에 투표 결과를 정리해보고….

어떤 내용들은 블로그에 작성할지…고민해보려 합니다.

일단 투표 결과에요!

톡방 총 인원 825명 (종료일 기준)
읽은 인원 270명
투표 인원 163명

순위 내용 투표수
1 AI, 딥러닝 공부 순서 118
2 따라해볼만한 머신러닝 프로젝트 리스트 98
3 머신러닝, 딥러닝들 계보 (decision tree -> rf 와 같은..) 79
4 입문자를 위한 환경 구축 방법 73
5 분야별 paper flow 70
6 추천 세미나 달력 49
7 프레임워크 별 장단점 소개 41
8 머신러닝 데이터 목록 34
9 awesome 논문 리스트 26
10 면접 질문고찰 24
11 하드웨어 관련 내용 18
12 분야별 Awesome 모음집 18
13 질문하는 법 9

생각보다 힘든 일이 될 것 같군요…
운영진 분들과 회의 후 천천히 진행하도록 하겠습니다!
감사합니다!

Comment  Read more