본문 바로가기

Data Science/밑바닥부터시작하는딥러닝(1)

(6)
[밑시딥] 오직! Numpy로 학습관련 기술들 구현하기 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 1권의 교재 내용을 기반으로 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 딥러닝의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 이번 포스팅에서는 신경망 학습과 관련된 기술로서 파라미터를 갱신하는 최적화 기법, 파라미터 초기화 기법, 활성화 값들을 정규화시키는 배치 정규화 등의 방법들에 대해 이해해보고 넘파이로 구현해보려고 한다. A. 최적화 기법 저번 포스팅까지 우리는 오차역전파를 통해 파라미터의 기울기(변화량들)를 구하는 방법에 대해 알아보고 이를 넘파이로 구현하는 것까지 배워 보았다. ..
[밑시딥] 오직! Numpy로 오차역전파를 사용한 신경망 학습 구현하기 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 1권의 교재 내용을 기반으로 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 딥러닝의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 저번 포스팅에서 행렬 곱을 연산하는 계층과 활성화 함수가 적용된 계층의 역전파 방법까지 알아보면서 신경망 학습의 오차역전파 방법을 모두 이해해보았다. 이번 포스팅에서는 그동안 배운 내용들을 기반으로 오직 넘파이를 활용한 오차역전파 신경망 학습을 구현해보자. 먼저 복습 차원에서 활성화 함수와 손실 함수를 넘파이로 구현하는 소스코드를 보고 가자. 1. 활성화 함수(Si..
[밑시딥] 오직! Numpy와 계산 그래프를 활용해 활성화 함수 계층 오차역전파 이해하기 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 1권의 교재 내용을 기반으로 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 딥러닝의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 저번 포스팅에서 오차역전파 개념을 계산 그래프로 이해하고 간단한 곱셈, 덧셈 연산에 대한 오차역전파를 넘파이로 구현하는 방법에 대해 알아보았다. 이번 포스팅에서는 곱셈, 덧셈 연산을 넘어서서 나눗셈과 활성화 함수 연산에 대한 오차역전파가 어떻게 동작하는지 이해해보고 이를 넘파이로 구현하는 방법에 대해서도 알아보자. 신경망 모델은 덧셈, 곱셈 연산도 존재하지만 가장 ..
[밑시딥] 오직! Numpy와 계산 그래프를 활용해 오차역전파 이해하기 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 1권의 교재 내용을 기반으로 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 딥러닝의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 저번 포스팅까지 파라미터의 기울기를 구하는 방법으로서 수치 미분이 무엇인지 알아보고 넘파이로 구현하는 방법에 대해서도 알아보았다. 그리고 그를 기반으로 신경망을 학습시키는 것도 구현해보았다. 그런데 수치미분을 활용해서 파라미터의 기울기를 구하는 방법은 단순한 계산이지만 시간이 오래걸린다는 단점이 존재했다. 왜냐하면 저번 포스팅의 소스코드를 살펴보면 알겠지만, 하나의..
[밑시딥] 오직! Numpy와 수치 미분을 통해 신경망 학습시키기 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 1권의 교재 내용을 기반으로 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 딥러닝의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 저번 시간까지 배웠던 Numpy로 신경망을 구성하는 방법과 이미 학습된 파라미터로 추론해보는 단계까지 해보았다. 이번 포스팅에서는 직접 넘파이로 설계한 신경망을 데이터를 통해 파라미터를 '학습'시키는 방법에 대해 알아보자. 먼저 학습시키는 방법을 알아보기 전에 손실함수라는 개념에 대해 알아야 한다. 손실함수는 일명 파라미터를 어떤 방향으로 학습시킬지 가이드라인을 제..
[밑시딥] 오직! Numpy로 간단한 신경망 구현하기 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 1권의 교재 내용을 기반으로 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 딥러닝의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 이번 포스팅에서는 딥러닝 구현의 가장 기초라고 할 수 있는 것들에 대해 알아보려고 한다. 먼저 Numpy의 Element-wise product와 broadcasting에 대해 알아보자. 1. Element-wise product 와 Broadcasting 우선 Element-wise product는 배열의 동일한 위치의 원소들끼리 연산하는 것을 의미한다. 다음과 ..