본문 바로가기

전체 글68

텐서플로우를 통한 딥러닝 모델 직접 구현 앞선 포스트에서는 keras를 이용하여 딥러닝의 간단한 구조를 이해하고 모델을 만들어서 학습해보았습니다. 이번 포스트에서는 그 과정을 직접 코드로 구현하여 보다 완전하고 명확하게 딥러닝의 구조를 이해해보고자 합니다. 기본적인 텐서연산과 역전파는 직접 구현하진 않지만 케라스의 기능을 사용하지 않는 저수준의 구현을 해보겠습니다. 이번에 나오는 내용이 이해가 안되더라도 계속해서 포스트에서 설명할 것이기 때문에 일일히 모든 것을 이해할 필요는 없습니다. 다만, 각각의 구체적인 구현에서 어떠한 부분이 핵심 내용인지 짚고 넘어가는 것은 필수적입니다. 우선 단순한 dense클래스를 구현해보겠습니다. output = activation(dot(W, input) + b)의 식을 기억하실겁니다. W는 가중치, b는 편향으.. 2022. 12. 7.
keras API를 통한 간단한 딥러닝 모델 만들기 이전 포스팅에서는 딥러닝을 위해 필요한 기본적인 개념들에 대해 알아보았습니다. 이번에는 딥러닝이 이뤄지는 구조를 알아보고, 그 구조를 직접 예제를 통해 구현해보는 시간을 가져보겠습니다. 딥러닝의 구조는 다음 그림1과 같습니다. 층이 서로 연결되어 모델을 구성하고, 모델은 입력데이터로 예측을 합니다. 그 다음 예측과 실제 값을 비교하여 손실 값을 계산하고(모델이 얼마나 잘 예측했는지 파악함), 옵티마이저를 통해 이 손실값을 최소화하는 방향으로 모델의 가중치를 업데이트 하는 것입니다. 이러한 구조를 keras API를 사용하여 구현해보겠습니다. from tensorflow import keras from tensorflow.keras.datasets import mnist 우선, keras와 mnist데이터.. 2022. 12. 5.
데이터 전처리 기초 with python (2) 이번 포스트에서는 머신러닝에서 올바른 결과 도출을 위해 데이터 전처리 하는 법을 예제 코드를 통해 알아보겠습니다. 그 중 표준 점수로 특성의 스케일을 변환하는 법에 대해 알아보도록 하겠습니다. 데이터를 먼저 준비하겠습니다. 이전 포스트에서 계속 다루던 도미와 빙어 데이터로 준비했습니다. import numpy as np fish_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0,.. 2022. 11. 24.
데이터 전처리 기초 with python (1) 이번 포스트에서는 파이썬을 활용하여 데이터 전처리 하는 방식에 대해 혼공머신 예제를 통해 알아보도록 하겠습니다. 1. 지도학습(supervised learning)이란? 들어가기에 앞서, 지도학습(supervised learning)과 비지도학습(unsupervised learning)에 대해 알아보겠습니다. 이전 포스트에서는 knn 알고리즘을 활용하여 도미와 빙어를 구분하는 간단한 머신러닝 모델을 만들어 보았습니다. 도미와 빙어를 구분하기 위해서는 어떠한 데이터가 필요했는지 기억이 나시나요? 도미, 빙어의 길이와 무게 데이터와 각각의 길이, 무게 데이터가 도미인지 빙어인지 정답을 알려주는 정답 데이터가 있었습니다. 이처럼 입력(input, 여기서는 도미와 빙어의 길이,무게), 타깃(target, 도미,.. 2022. 11. 23.
역전파 알고리즘 (backpropagation) 이전 포스트에서 손실 함수에 대한 그레이디언트를 계산하여 손실 함수가 최소가 되는 지점을 찾는 방식을 배웠습니다. 그렇다면 수 천, 수 만개로 이루어진 모델 파라미터의 그레이디언트를 실제로 어떻게 계산할 수 있을까요? 바로 역전파 알고리즘(backpropagation) 덕분 입니다. 이번 포스팅에서는 역전파 알고리즘에 대해 공부하여 리뷰해보겠습니다. 역전파는 순전파(forward propagation)의 반대 개념입니다. 순전파는 입력 데이터가 은닉층을 따라 출력층으로 나오는 추론 과정을 의미합니다. 그림1의 화살표 방향을 확인해보면 순전파 알고리즘을 파악할 수 있습니다. 개념적으로 순전파 알고리즘의 진행방향을 반대로 바꾸면 역전파 알고리즘이 됩니다. 역전파를 사용하는 이유는 입력층에서 출력층 값이 도출.. 2022. 11. 23.
신경망 이해를 위한 Tensor(텐서), Gradient(그레이디언트) 딥러닝을 이해하려면 여러 가지 수학 개념과 친숙해질 필요가 있습니다. 텐서, 미분, 경사 하강법 등이 있는데요. 이번 포스트의 목표는 비전공자도 이해할 수 있도록 최대한 간결하게 이 수학적 개념들을 설명하는 것 입니다. 수학적 개념들의 연산, 기하학적 해석에 대해서는 언급하지 않고 간결하게 설명해보겠습니다. 수학적 개념들을 설명하기 앞서 신경망의 핵심 구조인 층에 대해 간단히 알아보겠습니다. 신경망의 핵심 구조는 층(layer)입니다. 그림1과 같이 입력층, 중간층(은닉층), 출력층으로 나누어집니다. 입력값이 입력신호로 들어오면 각 층에서 더욱 의미있는 표현을 입력된 데이터로 부터 추출합니다. 즉, 데이터를 정제시키고 표현을 강화하여 결국 의미있는 값을 찾아내는 것을 의미합니다. 이해하기 쉽게 예를 들어.. 2022. 11. 23.