공부하며 성장하기

    과적합(Overfitting)과 규제(Regularization)

    과적합(Overfitting)과 규제(Regularization)

    과적합(Overfitting)이란 모델이 train 데이터에 지나치게 적응되어 그 외의 데이터에는 제대로 대응하지 못하는 상태를 말한다. 이게 과연 무슨 말일까? 데이터를 잘 학습할수록 좋은 것 아닌가? 예를 들어 아래와 같은 회귀 문제가 있을 때, 우리가 원하는 모델은 두 번째에 가깝다. 첫 번째 모델은 과소적합(Underfitting)의 경우로, 주어진 데이터를 아직 제대로 반영하지 못하고 있고, 세 번째 모델은 주어진 데이터가 모든 경우에 나타나는 일반적인 경향이라고 오해한 경우이다. 즉 과적합(Overfitting)되어 새로운 데이터에 대해서는 적용할 수 없는, 일반화하기 어려운 경우이다. 세 그래프에 빨간 점(data)을 하나씩 더 찍어 보았다. 점선(모델이 예측한 결과)과의 거리가 가장 가까운..

    앙상블 학습(Ensemble Learning)이란?

    앙상블 학습(Ensemble Learning)이란?

    이번 글은 앙상블 학습에 대한 개념과 주요 전략에 대해 쉽게 이해할 수 있도록 정리해 보았다. 앙상블 ensemble, 하면 무엇이 떠오르는가? 다양한 악기가 모여 멋진 연주를 함께 만들어 가는 모습이 상상되지 않는가? 'ensemble'이라는 단어를 실제로 사전에서 찾아보면 다음과 같다. A group of things or people acting or taken together as a whole, especially a group of musicians who regularly play together. 우리가 이번에 살펴 볼 앙상블이라는 인공지능의 학습 방법도 위 정의와 크게 다르지 않다. 사람을 예로 든다면, 한 명의 IQ 130인 사람이 혼자 문제를 푸는 것보다, 5명의 IQ 100인 사람이..

    경사하강법(Gradient Descent)이란?

    경사하강법(Gradient Descent)이란?

    지난 글에서 수치 미분이 무엇인지 알아보았다. 그런데 이걸 딥러닝에서 어떻게 쓸 수 있을까? 이번 글에서는 딥러닝에서 가장 중요하게 미분이 쓰이는 부분 중 하나인 경사 하강법(Gradient Descent)에 대해 정리해 보았다. 잠깐! 편미분 먼저! 사실 경사하강법이 무엇인지 이해하기 위해 알아야 할 또 하나의 미분 개념이 있다. 바로 편미분(Partial Derivative)이다. 아래 식에는 변수가 2개나 있다. 과연 미분은 이 중 어떤 것을 기준으로 해야 할까? 정답은 '둘 다 가능하다'이다. 이렇게 변수가 여럿인 함수를 각 변수에 대해 미분하는 것을 편미분이라고 한다. $$f(x_0, x_1) = x_0^2 + x_1^2$$ `f`를 `x_0`에 대해 미분하는 것을 `\frac{\partial ..

    수치 미분(Numerical differentiation)이란?

    수치 미분(Numerical differentiation)이란?

    수치 미분이란 무엇일까? 우선 미분의 개념부터 간략하게 짚고 넘어가자. 미분의 가장 쉬운 예로는 속도를 들 수 있다. 어떤 사람이 10분 동안 2km를 달렸다고 하자. 이때 이 사람이 달린 10분 동안의 평균 속도는 `2km / 10분 = 0.2 km/분` 이다. 만약 우리가 그중 특정 1분 동안에 달린 거리를 알 수 있다면, 그건 1분 동안의 평균 속도라고 할 수 있다. 마찬가지로 어떤 1초, 또 0.1초, 0.01초에 대한 평균 속도도 구할 수 있다. 만약 여기서 더 짧은 시간 동안의 속도를 구할 수 있다면, 그건 '평균'보다는 '순간 속도'라는 표현이 더 적절할 것이다. 이처럼 한 순간의 변화량을 '미분'이라고 한다. 어쩌면 우리는 아래와 같이 미분을 표현한 수식이 익숙할 것이다. 즉 `h`라는 값..

    퍼셉트론(perceptron)이란?

    퍼셉트론(perceptron)이란?

    딥러닝에 대해 공부를 시작하면서 가장 처음 접한 것이 바로 퍼셉트론perceptron 이었다. 이 퍼셉트론이 근간이 되어 인공 신경망과 딥러닝이 시작되었기 때문이다. 퍼셉트론은 그 자체로 '인공 뉴런'이라고 할 수 있다. 인간의 뉴런이 자극을 받고 이를 전달하는 원리를 인공적으로 구현한 것이다. 그래서 궁금해졌다. 과연 어떤 점에서 뉴런과 닮았다고 하는 것일까? 나처럼 궁금한 사람들을 위해 정리해 보았다. 무엇이, 무엇이 똑같을까? 퍼셉트론은 뉴런을 그대로 본 따서 만들었기 때문에, 구조와 기능 면에서 거의 같다. 아래 그림을 보면서 설명하면 더욱 명확하게 와닿을 것이다. 1. 뉴런 수상돌기 Dendrite ↔ 퍼셉트론 Input `x` 뉴런은 여러 개의 수상돌기들과 한 개의 축삭돌기로 구성되어 있다. ..

    판다스Pandas 가 뭔가요? (+ 와인 리뷰 데이터 탐색 맛보기)

    판다스Pandas 가 뭔가요? (+ 와인 리뷰 데이터 탐색 맛보기)

    데이터 분석 또는 인공지능에 대해 처음 공부를 시작하면 대뜸 맨 앞에 등장하는 것 중 하나가 판다스Pandas이다. 몇 줄 설명을 읽어보긴 하지만, 그래서 뭐 어쨌다는 건지 도무지 와닿지 않는다. 그런 상태에서 무작정 코드를 따라 치기 시작하니 머리가 멍해질 수밖에 없다. 이번 글에서는 pandas란 무엇이고, 왜 필요한지, 어떻게 쓸 수 있는지 머릿속 의문점을 하나씩 풀어가며 이해해보자! 판다스Pandas 란 데이터를 분석하고 각종 처리를 할 때 이용하는 파이썬 언어 기반의 라이브러리이다. pandas로 데이터를 표현하는 두 가지 핵심 방법(정확히 말하면 객체)이 있는데, 바로 데이터프레임DataFrame 과 시리즈Series 이다. 각각이 어떻게 생겼는지 예제 코드로 살펴보자. 데이터프레임 DataF..

    [파이썬 코딩의 기술] 03/ 협업의 확장

    [파이썬 코딩의 기술] 03/ 협업의 확장

    BETTER WAY 85/ 패키지를 사용해 모듈을 체계화하고 안정적인 API를 제공하라 프로그램 코드베이스 크기가 늘어나면 코드 구조를 체계화하게 된다. 특히 모듈이 너무 많을 경우에는 다른 계층을 추가로 도입하게 되는데, 이를 위해 파이썬은 패키지package 를 제공한다. 이 패키지는 다른 모듈들을 포함하는 모듈이라고 할 수 있다. 패키지를 정의하기 위해서는 __init__.py 라는 이름의 빈 파일을 디렉터리에 추가해야 한다. (python3.3부터는 이 파일이 없어도 패키지로 인식되지만, 버전 호환을 위해 추가하는 것이 좋다.) 이미 __init__.py가 있는 디렉터리가 있다면, 다른 파이썬 파일은 이를 상대적인 경로를 통해 import하면 된다. 패키지는 주로 두 가지 기능을 한다. 1. 이름..

    [파이썬 코딩의 기술] 02/ 협업의 미덕

    [파이썬 코딩의 기술] 02/ 협업의 미덕

    책 『파이썬 코딩의 기술(개정 2판)』 미리 보기 파이썬 코딩의 기술(개정2판) 구글의 프린시펄(principal) 소프트웨어 엔지니어다. 구글 설문지(Survey)의 기술적 공동 설립자이며, 구글의 첫 번째 클라우드 컴퓨팅 제품(앱 엔진(App Engine))을 출시했다. 14년 전 구글의 엄청난 서 books.google.co.jp BETTER WAY 84/ 모든 함수, 클래스, 모듈에 독스트링을 작성하라 다른 언어와 달리 파이썬은 프로그램의 독스트링docstring 에 직접 접근할 수 있다. def palindrome(word): """주어진 단어가 회문인 경우 True를 반환한다.""" return word == word[::-1] assert palindrome('tacocat') assert ..

    [파이썬 코딩의 기술] 01/ 협업의 기초

    [파이썬 코딩의 기술] 01/ 협업의 기초

    책 『파이썬 코딩의 기술(개정 2판)』 미리 보기 파이썬 코딩의 기술(개정2판) 구글의 프린시펄(principal) 소프트웨어 엔지니어다. 구글 설문지(Survey)의 기술적 공동 설립자이며, 구글의 첫 번째 클라우드 컴퓨팅 제품(앱 엔진(App Engine))을 출시했다. 14년 전 구글의 엄청난 서 books.google.co.jp 파이썬 프로그램을 작성하면서 다른 사람과 잘 협업하기 위해 필요한 협업의 기술들을 핵심만 정리해보았다! BETTER WAY 82/ 커뮤니티에서 만든 모듈을 어디서 찾을 수 있는지 알아두라 파이썬 커뮤니티의 모듈은 파이썬 패키지 인덱스(PyPI)에서 찾을 수 있다. 패키지 인덱스를 사용하려면 pip 명령어를 통해 쉽게 설치할 수 있다. PyPI · The Python Pac..

    [단단한 머신러닝] 01/ 머신러닝은 뭘 하는 건가요?

    [단단한 머신러닝] 01/ 머신러닝은 뭘 하는 건가요?

    책 『단단한 머신러닝』 미리 보기(Google Books) 단단한 머신러닝 간결한 설명과 최소한의 수학적 지식을 통해 체계적으로 정리한 머신러닝 입문서! 『단단한 머신러닝』은 인공지능 분야의 명예의 전당이라는 AAAI의 펠로우로 선정된 저자가 머신러닝을 처음 books.google.co.jp 읽기 전에 이 책은 입문용 '교과서'이다. 저자는 입문 단계에서 가장 필요한 것은 '기본 개념에 대해 제대로 이해하고 종합적인 상황을 이해하는 것'이라고 강조한다. 디테일한 내용을 전부 아는 것보다 개괄적인 내용을 파악하는 것에 충실한 책임을 미리 참고하길 바란다. 머신러닝이 뭐지? 머신러닝은 컴퓨터(머신)라는 도구로 경험을 활용해 시스템 자체를 개선해 나가는 방법을 연구하는 학문이다. 이때 컴퓨터 시스템에서 일반적..