전체 글 251

[밑바닥부터 시작하는 딥러닝 1] 09. SGD는 왜 지그재그로 가고, Adam은 무엇을 기억하는가

밑바닥부터 시작하는 딥러닝 1 - 매개변수 갱신 방법경사 하강법은 기울기를 따라 내려가면 된다는 단순한 아이디어에서 출발한다. 하지만 실제 손실 함수의 지형은 항상 둥근 그릇처럼 친절하지 않다.길게 늘어진 골짜기에서는 SGD가 지그재그로 흔들릴 수 있고, 이를 줄이기 위해 Momentum, AdaGrad, Adam 같은 방법이 등장한다.이번 글에서 잡을 것SGD는 현재 기울기만 보고 이동한다.Momentum은 과거 이동 방향, 즉 관성을 기억한다.AdaGrad는 매개변수별로 얼마나 많이 움직였는지 기억한다.Adam은 Momentum과 AdaGrad의 아이디어를 함께 사용한다.SGD의 지그재그길게 늘어진 그릇 모양의 지형에서는 한쪽 방향의 기울기가 훨씬 가파르다. SGD는 현재 위치의 가장 큰 기울기에 반..

[밑바닥부터 시작하는 딥러닝 1] 08. ReLU, Sigmoid, Affine 계층은 무엇을 기억하고 되돌려주는가

밑바닥부터 시작하는 딥러닝 1 - 계층 구현과 기울기 확인계산 그래프의 덧셈과 곱셈 규칙을 이해했다면, 이제 신경망의 실제 계층을 같은 관점으로 볼 수 있다.각 계층은 순전파 때 필요한 값을 저장하고, 역전파 때 상류에서 온 미분값을 자기 규칙에 맞게 변환해 하류로 보낸다.이번 글에서 잡을 것ReLU는 입력이 0 이하였던 위치를 mask로 기억한다.Sigmoid는 순전파 출력값을 기억한다.Affine은 행렬 곱과 편향 더하기를 담당한다.Softmax-with-Loss는 출력층과 손실 계산을 함께 묶는다.기울기 확인은 수치 미분과 역전파 결과를 비교해 구현 오류를 찾는 방법이다.계층을 보는 기준forward값 계산→저장x/out/mask→backward미분 전달계층 구현을 읽을 때는 코드 줄을 모두 외우기..

[밑바닥부터 시작하는 딥러닝 1] 07. 역전파는 최종 결과에서 시작해 책임을 거꾸로 나누는 계산이다

밑바닥부터 시작하는 딥러닝 1 - 계산 그래프와 오차역전파법수치 미분은 이해하기 쉽지만 느리다. 매개변수가 많아질수록 하나씩 흔들어보는 방식은 현실적이지 않다.오차역전파법은 최종 손실에서 시작해 각 노드가 저장해 둔 값을 꺼내며 거꾸로 이동하고, 그 과정에서 `dW`, `db`처럼 실제로 갱신에 필요한 기울기를 한 번의 backward 흐름으로 모은다.이번 글에서 잡을 것순전파는 입력에서 결과로 가는 계산이다.역전파는 결과에서 입력 방향으로 미분값을 전달하는 계산이다.덧셈 노드는 미분값을 그대로 흘린다.곱셈 노드는 순전파 때의 입력값을 서로 바꿔 곱한다.`z=x*y` 같은 곱셈 노드는 x 방향으로는 y를, y 방향으로는 x를 곱해 미분값을 보낸다.사과 쇼핑 예시사과 가격이 100원, 사과 개수가 2개, ..

[밑바닥부터 시작하는 딥러닝 1] 06. TwoLayerNet 코드는 외울 대상이 아니라 학습 루프의 조립도다

밑바닥부터 시작하는 딥러닝 1 - 신경망 학습 알고리즘4장 후반의 코드는 길어 보인다. 하지만 새 개념이 갑자기 쏟아지는 것이 아니다. 앞에서 배운 순전파, 손실 함수, 미니배치, 기울기 계산을 한 클래스 안에 모아둔 것이다.이 글의 목표는 코드를 한 줄씩 외우는 것이 아니라, 신경망 학습이 어떤 순서로 반복되는지 구조를 잡는 것이다.이번 글에서 잡을 것`params`는 가중치와 편향을 저장한다.`predict`는 순전파로 예측값을 만든다.`loss`는 예측값과 정답을 비교해 벌점을 계산한다.`gradient`는 손실을 줄이기 위한 방향을 계산한다.학습 루프는 미니배치 선택, 기울기 계산, 매개변수 갱신의 반복이다.클래스가 들고 있는 것구성역할읽는 관점paramsW1, b1, W2, b2 저장모델이 조정..

[밑바닥부터 시작하는 딥러닝 1] 05. 정확도 대신 손실 함수를 줄이는 이유

밑바닥부터 시작하는 딥러닝 1 - 미니배치, 수치 미분, 경사 하강법사람에게는 정확도가 가장 직관적이다. 100개 중 90개를 맞히면 90%라고 말하면 된다. 그런데 신경망 학습에서는 정확도보다 손실 함수를 더 중요하게 쓴다.이유는 미분 때문이다. 신경망은 매개변수를 어느 방향으로 바꿔야 좋아지는지 알아야 하고, 그 단서를 손실 함수의 변화에서 얻는다.이번 글에서 잡을 것미니배치는 전체 데이터 중 일부를 뽑아 학습하는 방식이다.정확도는 값이 뚝뚝 끊겨 미분 단서로 쓰기 어렵다.손실 함수는 연속적으로 변해서 매개변수 조정 방향을 알려준다.기울기는 각 매개변수를 어느 방향으로 바꿔야 손실이 줄어드는지 알려준다.미니배치는 표본 조사다훈련 데이터가 6만 장이라면 매번 전체 데이터를 모두 채점하는 것은 비효율적이..

[밑바닥부터 시작하는 딥러닝 1] 04. 신경망은 어떻게 답을 고르고, 어떻게 벌점을 받는가

밑바닥부터 시작하는 딥러닝 1 - 출력층과 손실 함수신경망이 숫자를 출력했다고 해서 바로 학습이 되는 것은 아니다. 출력값을 문제에 맞게 해석해야 하고, 그 결과가 얼마나 틀렸는지도 수치로 평가해야 한다.이 글에서는 출력층의 소프트맥스와 손실 함수, 특히 교차 엔트로피 오차를 쉬운 채점 방식으로 정리한다.이번 글에서 잡을 것회귀 문제는 보통 항등 함수를 사용한다.분류 문제는 소프트맥스 함수로 출력을 확률처럼 해석한다.손실 함수는 신경망의 나쁨을 나타내는 벌점이다.교차 엔트로피는 정답 클래스에 준 확률을 중심으로 벌점을 계산한다.출력층은 문제 종류에 따라 달라진다문제예시출력층 함수출력 해석회귀몸무게 예측항등 함수숫자 자체분류숫자 0~9 분류소프트맥스각 클래스의 확률처럼 해석항등 함수는 입력을 그대로 내보낸..

[밑바닥부터 시작하는 딥러닝 1] 03. 신경망 계산은 왜 행렬 곱으로 쓰는가

밑바닥부터 시작하는 딥러닝 1 - 다차원 배열과 순전파뉴런이 몇 개 없을 때는 하나씩 계산해도 된다. 하지만 뉴런이 수십 개, 수백 개로 늘어나면 매번 식을 하나씩 쓰는 방식은 금방 무너진다.신경망에서 행렬 곱을 쓰는 이유는 복잡해 보이는 여러 뉴런의 계산을 하나의 배열 연산으로 묶기 위해서다.이번 글에서 잡을 것1차원 배열은 벡터, 2차원 배열은 행렬로 볼 수 있다.행렬 곱은 앞 행렬의 열 수와 뒤 행렬의 행 수가 맞아야 한다.신경망의 한 층 계산은 보통 `A = XW + B`로 정리된다.순전파는 입력에서 출력 방향으로 계산을 진행하는 과정이다.shape를 먼저 봐야 한다기호예시 shape뜻X(1, 2)입력 데이터 1개, 특징 2개W(2, 3)입력 2개를 다음 층 뉴런 3개로 연결B(3,)다음 층 뉴런..

[밑바닥부터 시작하는 딥러닝 1] 02. 같은 수식을 왜 a와 h(a)로 나누었을까

밑바닥부터 시작하는 딥러닝 1 - 퍼셉트론에서 신경망으로퍼셉트론에서 신경망으로 넘어갈 때 책은 같은 계산을 여러 식으로 다시 쓴다. 처음 보면 같은 말을 반복하는 것처럼 보인다.하지만 이 분리는 중요하다. 입력에 가중치를 곱해 더하는 부분과, 그 결과를 최종 출력으로 바꾸는 부분을 분리해야 활성화 함수를 갈아끼울 수 있기 때문이다.이번 글에서 잡을 것`a = w1*x1 + w2*x2 + b`는 입력 신호를 모아 점수로 만드는 단계다.`y = h(a)`는 그 점수를 출력 신호로 바꾸는 단계다.퍼셉트론은 `h` 자리에 계단 함수를 쓴다.신경망은 `h` 자리에 시그모이드, ReLU 같은 비선형 함수를 쓴다.수식 분리는 부품을 나누는 일이다입력x1, x2→가중합a = wx + b→활성화y = h(a)→출력y가중..

[밑바닥부터 시작하는 딥러닝 1] 01. 퍼셉트론은 진리표를 외우는 문제가 아니라, 매개변수를 찾는 첫 모델이었다

밑바닥부터 시작하는 딥러닝 1 - 퍼셉트론 정리처음 퍼셉트론을 보면 AND, NAND, OR, XOR 같은 논리 게이트 이름이 먼저 나와서 디지털 논리 회로를 외워야 하는 것처럼 보인다. 하지만 이 장에서 더 중요한 것은 게이트 이름이 아니다. 핵심은 입력과 정답의 관계를 만족시키는 가중치와 편향을 고르는 과정이다.이번 글에서는 퍼셉트론 하나로 AND, NAND, OR 게이트를 만들고, 왜 XOR는 퍼셉트론 하나로 안 되는지, 그리고 여러 게이트를 조합하면 어떻게 XOR까지 만들 수 있는지 직접 따라간다.이번 글에서 잡을 것진리표를 암기 대상이 아니라, 퍼셉트론이 맞춰야 할 입력-정답 데이터로 본다.가중치와 편향이 입력 신호를 어떻게 판단 기준으로 바꾸는지 본다.AND, NAND, OR 게이트를 같은 코..

[밑바닥부터 시작하는 딥러닝 1] 00. 아나콘다는 엔진이고, VS Code는 작업대다

밑바닥부터 시작하는 딥러닝 1 - 실습 준비 아나콘다는 엔진이고, VS Code는 작업대다 딥러닝을 공부하기 전에 가장 먼저 헷갈리는 것은 개념이 아니라 환경이다. 아나콘다를 설치했는데 코드는 어디에 쓰는지, VS Code나 파이참은 왜 필요한지, 넘파이와 맷플롯립은 따로 설치해야 하는지부터 막힌다.이 글은 딥러닝 이론 글로 들어가기 전의 지원편이다. 목표는 도구 이름을 외우는 것이 아니라, 각 도구가 실습 흐름에서 어떤 역할을 맡는지 구분하는 것이다. 이번 글에서 잡을 것아나콘다는 파이썬 실행 환경과 자주 쓰는 라이브러리를 묶어 설치하는 도구다.VS Code나 파이참은 코드를 편하게 작성하고 실행하는 작업대다.인터프리터는 짧은 실험에, `.py` 파일은 반복해서 실행할 코드에..