본문 바로가기

딥러닝

혼자 해 보는 머신러닝 딥러닝 (7) 신경망의 구현 오늘은 행렬 연산을 이용한 간단한 신경망 구현에 대해서 살펴보게습니다. 이전 강의에서도 신경망에 대한 언급과 내용을 이야기 해왔습니다. 신경망 계산에 필요한 행렬의 곱과 간단한 신경망의 구현 코드를 살펴 보겠습니다. 출처 : http://blog.naver.com/PostView.nhn?blogId=htk1019&logNo=220980094465 위 그림은 간단한 신경망입니다. x1과 x2는 각각의 가중치를 거쳐서 출력 노드로전달되고 있습니다. 신경망을 행렬의 곱으로 표현해 보면, X(2) * W(2*3) = Y(3)으로 나타낼 수 있습니다. 입력인 X는 x1, x2로 구성된 1 * 2의 행렬로 볼 수 있습니다. 가중치 W는 각각 ((1, 3, 5), (2, 4, 6))으로 된 2*3의 행렬로 표기할 수.. 더보기
혼자 해 보는 머신러닝 딥러닝 (6) 활성화 함수 - ReLU ReLU 함수는 최근에 많이 이용되는 활성화 함수입니다. ReLU 함수의 특징은 입력값이 0을 넘으면 그대로 출력하고, 0 이하이면, 0을 출력합니다. 식으로 표현하면 h(x) = { x (x>0), 0 (x ≤ 0) }으로 표현이 가능할 것 같습니다. 코드로도 간단히 아래와 같이 표현해 볼 수 있습니다. def relu(x):return np.maximum(0, x) ReLU 함수가 등장하게 된 배경은 앞에 설명한 Sigmoid함수와 관계가 있습니다.바로 Sigmoid함수가 BackPropagation이 적용되는 딥러닝의 Hidden Layer가 깊어질 수록 미분값이 0에 가까워 지면서 제대로 학습이 되지 않는 현상이 나타나기 때문입니다. ReLU 함수의 그래프는 아래와 같습니다. 출처 : http:/.. 더보기
혼자 해 보는 머신러닝 딥러닝 (5) 활성화 함수 - Sigmoid Sigmoid 함수는 신경망에서 자주 이용되는 활성화 함수 입니다. Sigmoid 함수를 나타낸 식은 다음과 같습니다. h(x) = 1 / (1 + exp^(-x)) Sigmoid 함수는 입력에 따라 특정값을 반환해 줍니다. 예를들면 h(1.0) = 0.731, h(2.0) = 0.880과 같이 됩니다. Sigmoid 함수의 구현고 그래프를 그려보겠습니다. def sigmoid(x):return 1 / (1 + np.exp(-x)) 함수의 구현은 numpy를 이용하면 쉽게 처리가 가능합니다. 그리고 브로드캐스트 기능이 작동해서 x에는 numpy배열도 쉽게 처리가 가능합니다. 실제 그래프는 matplotlib를 사용해서 그려보겠습니다. import matplotlib.pylab as plt x = np.a.. 더보기
혼자 해 보는 머신러닝 딥러닝 (4) 퍼셉트론에서 신경망으로 퍼셉트론을 기반으로 신경망에 대해서 본격적으로 살펴보겠습니다.아래는 단순하게 표현한 신경망입니다. 출처 : 위키백과, 인공신경망 모양은 앞선 다층 퍼셉트론과 비슷하게 보여집니다. 신경망을 이해하기 위해 이전 강의에서 다루었던 퍼셉트론의 그림을 더 명확히 그려보겠습니다. y = b + w1 * x1 + w2 * x2 출처 : Enough is not Enough (http://eehoeskrap.tistory.com/139) 이전 그래프와 달라진 점은 입력값이 1이고 가중치가 b인 노드가 추가되었다는 점입니다. 그리고 y ≤ θ 일때 0, y > θ 일때 1로 표기되는 것을 Activation Function으로 표기해 보겠습니다. a = b + w1 * x1 + w2 * x2y = h(a) 출처 : 잡다.. 더보기
혼자 해 보는 머신러닝 딥러닝 (3) 다층 퍼셉트론과 XOR 안녕하세요. 오늘은 XOR을 해결하기 위한 다층 퍼셉트 론에대해 살펴보겠습니다.결론부터 말씀드리면, 지난 시간 단층 퍼셉트론으로는 XOR 논리회로를 정확히 직선으로 분리할 수 없습니다. XOR의 배타적 특성 때문입니다. 배타적 특성은 x1, x2라는 두가지 입력이 있을 때, 둘 중 한가지 값만 1인 경우에 1을 출력하기 때문입니다.그래서 직선 한가지로 구분해야 하는 단층 퍼셉트론으로는 설명이 불가능합니다. 출처 : 잡다한 블로그 (http://psiyblg.tistory.com/3) 그래서 단층 퍼셉트론으로 구현된 AND, NAND, OR을 통해 구현해 보겠습니다. 출처 : 잡다한 블로그 (http://psiyblg.tistory.com/3) 그림처럼 0층에서 x1, x2가 인풋으로 들어가면, 1층에서는.. 더보기
혼자 해 보는 머신러닝 딥러닝 (2) 단층 퍼셉트론의 구현 안녕하세요. 오늘은 퍼셉트론 알고리즘을 단순하게 구현해 보도록 하겠습니다.퍼셉트론은 다수의 신호를 입력 받아 하나의 신호를 출력하는 것을 말한다고 합니다. 위 그림은 입력으로 2개의 신호를 받는 예입니다. x1, x2는 입력신호를, w1, w2는 가중치를 y는 출력 신호를 뜻합니다. 그림에서 원 노드라고 표현하며, 입력노드가 출력노드로 보내질 때는 각각 고유한 가중치가 곱해집니다. 출력노드에서는 입력노드에서 보내온 총합이 정해진 한계를 넘어설때는 1, 그 외에는 0으로 출력하게 됩니다. 여기서 표현된 한계값은 임계값이라는 용어로 표현되며 θ(Theta) 기호로 표시합니다. 정리하면, y = 0 (w1 * x1 + w2 * x2 ≤ θ), y = 1(w1 * x1 + w2 * x2 >θ)로 표현되며, 각 .. 더보기
혼자 해 보는 머신러닝 딥러닝 (1) Ubuntu 개발 환경 설정 (Anaconda를 사용한 방법) Anaconda 설치 https://www.continuum.io/downloads 위 링크에서 OS(Window, macOS, Ubuntu)와 Python 버전에 맞는 Installer를 받아서 설치. 가급적 3.x이상의 버전 사용을 추천드립니다. 요즘 발행되는 책은 3.x기준이 많은 것 같습니다. 다운로드 받은 Installer를 설치하면, IPython(Jupyter)가 포함되어 있습니다. 포함된 패키지 리스트 https://docs.anaconda.com/anaconda/packages/pkg-docs 가상환경 설정 $ conda create -n tensorflow python=3.5 터미널에서 새로운 가상 환경을 만드는 명령어를 통해서 개발 환경을 생성합니다. tensorflow는 가상환경의 .. 더보기
ML관련 학습 링크 안녕하세요. 첫 번째 포스팅입니다.어떤 내용으로 시작해야 좋을지 고민하다가,블로그에서 다룰 내용에 대한 Overview에 대한 내용으로제가 그 동안 보았던 머신러닝 관련 링크 및 서적 리스트로 시작하려고 합니다. (초보자 단계) 수준이 높은 내용들은 아니지만,제가 포스팅하는 목적은 저와 비슷한 분들께는 정보를 공유드리고,수준 높은 분들께는 쓰면서도 달달한 피드백을 함께 나누고 싶어서 입니다. 아래 리스트를 끝으로 첫 번째 포스팅은 마무리 하겠습니다. 1. 프로그래밍 언어 Python, R에 대한 간단한 이해 → 제가 읽어 본 서적의 대부분은 Python으로 되어 있었습니다. 2. 동영상 학습 ① 모두를 위한 딥러닝 시즌 1 (Sung Kim, Youtube, 인프런) ② Putting Deep Learn.. 더보기