Problem Solving with Algorithms

728x90
반응형

 

[AI 인공지능 머신러닝 딥러닝] - 이지 딥러닝 - 혁펜하임 | Easy! 딥러닝 - 무료 강의 및 책 소개

 

이지 딥러닝 - 혁펜하임 | Easy! 딥러닝 - 무료 강의 및 책 소개

한국어로 딥러닝 공부해봤다는 사람중에 안들어 본 사람이 없을것 같은 이지 딥러닝 시리즈 입니다. 이 강의는 유투브로 제공되며 책도 있습니다. 이지 딥러닝 유투브 강의이지 딥러닝 유투브

inner-game.tistory.com

 

 

 

 

[Easy! 딥러닝] 2-1강. 인공 신경망 비유로 쉽게 이해하기!

이 영상의 핵심은 “생물학적 신경을 비유로 삼아서, 인공 신경(뉴런)과 인공신경망(MLP)의 구성요소: 입력, 가중치(weight), 바이어스(bias), 활성함수(activation), 레이어 구조를 직관적으로 이해시키는 것”입니다.

 

 

 

인공 뉴런: 가중치·바이어스·활성함수

강의에서는 실제 신경의 “자극을 받는 부분–판단하는 핵–다음으로 전달하는 축삭”을 단순화해서, 인공 뉴런을 다음 요소로 설명합니다.​​

 

 

 

 

 

- 입력 x1, x2, …: 여러 상황에서 들어오는 자극(예: 하이파이브, 뒤통수 맞기).

- 가중치 w1, w2, …: 각 입력의 중요도. 뒤통수 맞은 입력에는 큰 가중치를, 하이파이브에는 작은 가중치를 주는 식으로 “얼마나 민감해야 하는지”를 표현합니다.​​

- 바이어스 b: 전체적으로 민감도를 올리거나 내리는 “역치(threshold)” 조절 값입니다. 입력 합 w1x1 + ⋯ + wn xn에 b를 더해, 어느 정도가 되어야 뉴런이 반응할지 기준을 옮깁니다.​​

빨간 동그라미를 정하는 것은 내가 아니고 AI

이렇게 얻은 선형 결합

를 활성함수 f(z)에 통과시키면 최종 출력 y=f(z)가 됩니다. 영상에서는 단순화를 위해 유닛 스텝 함수(0 이하면 0, 0보다 크면 1)를 사용해 “정색한다/안 한다”와 같은 이진 반응을 예로 들고, 가중치와 바이어스를 바꾸면서 원하는 상황(뒤통수 맞았을 때만 1을 출력)에 맞도록 뉴런을 설계하는 과정을 보여줍니다.​​

 

핵심 메시지는 “주어진 입력에 대해 원하는 출력이 나오도록 w w와 b b를 잘 정하는 것이 곧 학습이며, 이 w , b w,b를 일일이 사람이 정하는 대신 AI가 데이터로부터 찾아낸다”는 점입니다.​​

 

 

 

 

 

인공신경망과 MLP 구조

단일 뉴런을 여러 개 연결하면 인공신경망(Artificial Neural Network)이 됩니다. 영상에서는 아래 구조를 단계적으로 그리며 설명합니다.​​

 

- 입력층(Input layer): 원본 특성이 들어오는 부분 (예: 발바닥, 손바닥, 뒤통수 등 각 감각 신호).

- 은닉층(Hidden layers): 입력을 받아 가중치·바이어스·활성함수를 거쳐 중간 표현을 만드는 층들. 여러 개일 수 있으며, 여기서 복잡한 패턴을 학습합니다.​

- 출력층(Output layer): 최종 예측을 내보내는 층. 분류 문제면 클래스 점수/확률, 회귀면 실수 값을 출력합니다.​

 

각 층은 “앞 층의 모든 노드와 연결된 완전연결(fully connected) 구조”로, 각 연결마다 독립적인 가중치를 갖습니다. 입력층–은닉층(한 개 이상)–출력층으로 이루어진 완전연결 신경망을 멀티레이어 퍼셉트론(MLP)이라고 부르며, 은닉층이 최소 한 층 이상 있어야 ‘멀티레이어’ 조건을 만족합니다.​​

 

또한, 각 층 사이의 가중치 개수는

- “이전 층 노드 수 × 다음 층 노드 수 + 다음 층 바이어스 수” 로 계산할 수 있다는 팁도 함께 소개합니다. 이는 네트워크 파라미터 수를 손으로 세거나, 모델 용량·메모리 요구량을 대략 가늠할 때 유용합니다.​​

 

요약하면, 이 강의는 “곱하고 더하고 활성함수 통과시키는 연산을 여러 층으로 반복하는 구조가 인공신경망이며, 학습이란 이 안의 가중치와 바이어스를 데이터에 맞게 자동으로 조정하는 과정”이라는 큰 그림을 비유를 통해 잡게 해 주는 내용입니다.​​

 

한 층에 노드가 2개 있는 경우 그 노드들의 역할(output)이 달라야 한다.
웨이트 바이어스 개수 합
레이어 설명

 

 

 

 

 

 

[Easy! 딥러닝] 2-2강. 인공 신경망은 함수다!

이 영상의 핵심은 “인공신경망은 결국 ‘입력을 넣으면 출력을 내는 하나의 함수’이고, 학습이란 이 함수의 모양(가중치·바이어스)을 데이터로부터 찾아내는 과정”이라는 관점을 잡아 주는 것입니다.​​

인공 신경망은 함수다!

 

 

 

 

인공신경망 = 함수라는 관점

강의에서는 먼저 초등학교 수준의 함수 f(x)=x+3, f(x)=x^2, f(x,y) 같은 예로 “입력을 넣으면 어떤 규칙에 따라 출력이 나온다”는 함수 개념을 상기시킵니다.

그 다음 인공신경망 전체를 하나의 박스 f f로 보고, 이 박스에 이미지, 숫자, 텍스트 등의 입력 x x를 넣으면 분류 레이블, 회귀값, 답변 텍스트 같은 출력 y가 나오는 함수 f:x↦y 로 해석합니다.

 

​ 즉, 뉴런, 레이어, 가중치, 바이어스, 활성함수 등은 “이 함수 f를 구성하는 내부 구현 디테일”일 뿐이고, 수학적으로는 그냥 하나의 복잡한 함수에 지나지 않는다는 점을 강조합니다.

 

 

 

 

 

 

 

학습 = 함수 모양(가중치·바이어스) 찾기

감독학습에서는 “입력–정답 출력 쌍”을 많이 보여 주면서 이 함수를 점점 수정해 갑니다.​

 

- 예: 조회수 → 수익. 여러 영상의 “조회수–수익” 데이터를 계속 넣어 주면, 신경망이 이 점들을 잘 잇는 함수 f(조회수)를 찾아 가고, 처음 보는 조회수에 대해서도 그 함수로 예측 수익을 뽑아낼 수 있게 됩니다.​​

- 예: 이미지 → 클래스. 강아지 사진에는 “강아지”, 고양이 사진에는 “고양이”를 정답으로 주입식으로 반복해서 알려 주면, 입력 이미지 x를 클래스로 매핑하는 함수 f(x)를 학습하게 됩니다.​​

 

영상의 표현대로 말하면, AI는 “입력과 출력을 잇는 함수”를 데이터로부터 깨닫는 존재이고, 그 깨달음이 곧 내부 가중치·바이어스 값이 정해지는 것입니다. 이 관점에서 보면, ChatGPT 같은 모델도 “질문 문장 → 답변 문장”을 매핑하는 거대한 함수일 뿐이라는 비유를 듭니다.

 

1차 함수 a x + b ax+b도 ‘신경망’으로 표현 가능

마지막으로 “그렇다면 인공신경망이 함수라면, 중학교 때 배운 1차 함수 y=ax+b도 신경망으로 만들 수 있지 않겠느냐?”라는 예를 듭니다.​

- 입력 x x가 하나인 뉴런 하나를 두고

- 활성함수는 “리니어(선형) 활성함수” f(z)=z를 사용하면

- 출력은 y=f(ax+b)=ax+b가 됩니다.​​

 

즉, 가중치 w=a, 바이어스 b 로 잡은 단일 뉴런 + 선형 활성함수만으로도 1차 함수를 그대로 구현할 수 있고, 더 복잡한 함수는 이런 선형 조합과 비선형 활성함수들을 여러 층으로 쌓아 근사한다는 방향으로 다음 강의(선형 회귀, 그리고 나중의 딥러닝 전체)로 연결합니다.​​

 

 

 

 

 

[Easy! 딥러닝] 2-3강. 이게 이해되면 딥러닝도 이해됨! | 선형 회귀 (Linear Regression)

이 강의의 핵심은 “선형 회귀(linear regression)를 ‘관계 함수를 찾는 문제 + 적절한 로스 정의(MSE/MAE) + 그 로스를 최소로 만드는 파라미터 a,b 찾기’로 보면, 딥러닝 전체 구조를 이해하는 데 거의 그대로 확장된다”는 점입니다.​​

 

회귀의 개념과 분류와의 차이

영상에서는 회귀(回歸)를 “입력과 출력 사이의 연속적인 수치 관계를 알아내는 것”이라고 정의합니다.​​

 

- 예: 조회수 → 수익 (수익은 1234.5원처럼 연속적인 실수 값)

- 분류: “강아지/고양이”, “A등급/B등급”처럼 이산적인 레이블을 예측

 

본질은 둘 다 “입력 → 출력 함수 학습”이지만, 회귀는 연속 값, 분류는 카테고리 값을 예측한다는 점만 다르다고 정리합니다.​​

 

 

선형 회귀 세팅: y≈ax+b

예시로 유튜브 조회수–수익 데이터를 가져와,

- 입력 x: 조회수

- 출력 y: 수익

- 모델 f(x)=ax+b: 1차 함수(선형 모델)

로 두고, “데이터에 가장 잘 맞는 a(기울기, weight)와 b(절편, bias)를 찾는 것”이 선형 회귀의 목표라고 설명합니다.​​

 

 

초기에는 a,b를 아무렇게나(랜덤) 잡았다고 가정하고, 이때의 직선이 얼마나 “안 좋은지”를 수치로 평가하기 위해 로스 함수(loss) 가 필요하다고 연결합니다.​​

 

 

 

 

제곱 사용 하는 이유, 하지만 아웃라이어 존재시에는 절대값이 나을 수도 있다.

 

 

 

 

로스 정의: MSE vs MAE 직관

데이터 (x i ,y i )와 예측 y ^ i =ax i +b에 대해 오차 e i =y i − y ^ i 를 두고, 로스를 “오차들의 합”으로 만들고 싶지만, 그냥 ∑e i 로 두면 플러스/마이너스가 상쇄되어 문제가 생깁니다.​ 그래서 두 가지 대표 선택지를 소개합니다.​​

 

 

 

 

 

- MSE (Mean Squared Error):

-- 제곱 때문에 큰 오차에 더 민감. 오차가 두 배면 로스는 네 배.

-- 그래서 아웃라이어에 매우 민감하고, 그 점을 맞추려고 전체 직선을 끌고 가는 경향이 강합니다.​​

 

- MAE (Mean Absolute Error):

 

-- 모든 오차를 선형으로 대우. 두 배 더 멀어지면 로스도 두 배.

-- 아웃라이어에 덜 민감하고, 전체 데이터에 좀 더 균형 잡힌 영향을 줍니다.​​ 강의에서 보여준 그림처럼, 한 점이 멀리 튀어 있는(outlier) 상황에서 MSE는 그 점 때문에 직선을 심하게 끌어당기는 반면, MAE는 그 점을 고려하되 “미친 듯이” 신경 쓰지는 않는다는 차이를 강조합니다.​​

 

또한

는 최소값을 만드는 a , b a,b가 같기 때문에, 스케일 상수(예: 1/n)를 곱하느냐는 최적해의 위치를 바꾸지 않는다는 점도 짚어 줍니다.​​

 

 

 

 

 

 

 

0보다 무조건 클수밖에 없다. 로스는 절대 0이 될 수 없다. 기울기 이기 때문에,



최적 a,b 찾기와 딥러닝으로의 연결

정리하면, 선형 회귀는 다음 문제를 푸는 것입니다.​​

- 모델:

- 로스:

(또는 MAE)

- 목표: L(a,b)를 최소화하는 a , b a,b 찾기

 

이론적으로는 a , b a,b를 여러 값으로 바꿔가며 로스 지형(l = 2차 함수)을 그려 보고, 그중 최소가 되는 지점을 고를 수 있지만, 파라미터가 많아지면(다차원 w w, 딥러닝 수백만 개 가중치) 이 방식은 불가능해집니다.​​

 

그래서 다음 강의에서 경사하강법(Gradient Descent)을 소개하면서,

“선형 회귀에서 a,b를 찾는 방식 = 딥러닝에서 거대한 가중치 벡터를 최적화하는 방식”이라는 연결고리를 만들게 됩니다.​​

 

 

 

 

 

 

[Easy! 딥러닝] 2-4강. 경사 하강법 (Gradient Descent) | step by step 으로 차근차근 알아보기

이 강의의 핵심은 “선형 회귀에서 시작해, 경사 하강법(Gradient Descent)으로 로스를 줄이는 일반적인 최적화 아이디어를 이해하면, 딥러닝 학습도 같은 원리로 볼 수 있다”는 점입니다.​​

 

보라색 위치에서 살짝 위를 바라봐
이렇게 한발자국씩 이동하는 것이 그라디언트 디센트다.

 

아이디어: 로스를 가장 빨리 줄이는 방향으로 이동

먼저 선형 회귀에서 로스 L(a,b)를 최소로 만드는 a,b를 찾고 싶은데, 모든 a,b 조합에 대해 로스를 계산해 보는 것은 파라미터 수가 많아지면(딥러닝 수백만–수억 개) 불가능합니다.​​

그래서 “현재 위치에서 로스를 가장 가파르게 줄이는 방향으로 조금씩 이동하자”는 전략을 씁니다. 로스를 높이는 가장 가파른 방향이 그래디언트(gradient) 이므로, 로스를 줄이려면 그 반대 방향으로 이동하면 됩니다.​​

 

수식으로는, 파라미터 벡터 θ=(a,b)에 대해

 

형태이며, 여기서 α는 한 번에 얼마나 이동할지 정하는 러닝 레이트(learning rate)입니다.​​

 

α는 한 번에 얼마나 이동할지 정하는 러닝 레이트(learning rate) 적용 전
러닝레이트 적용 후

 

 

 

 

그래디언트와 러닝 레이트의 역할

그래디언트 ∇L는 “로스가 가장 빨리 증가하는 방향”을 나타내는 벡터이고, 그 반대 방향 −∇L로 가면 로스가 가장 빨리 감소합니다.​​

영상에서는 z=x^2 +y^2 같은 예시에서 특정 점에서의 그래디언트를 직접 계산해 벡터로 그려 보며, 이 방향이 실제로 가장 가파른 상승 방향임을 시각적으로 보여 줍니다.​​

러닝 레이트 α가 너무 크면 최소점 주변을 왔다 갔다 하거나 발산하고, 너무 작으면 수렴이 매우 느려집니다. 그래서 α를 0과 1 사이의 작은 값으로 두고, 필요하면 학습 중에 점차 줄이는 스케줄링도 사용할 수 있다고 설명합니다.

 

또한, 최소점에 가까워질수록 그래디언트 크기가 작아지기 때문에, 적절한 α를 사용하면 점점 스텝이 줄어들며 자연스럽게 수렴하는 직관도 함께 제시합니다.​​

이것이 바로 딥러닝이다. (+ 오른쪽 빨간색은 대입의 의미)

 

 

한계: 전체 데이터 기반 GD의 느림과 로컬 미니마

영상에서는 “모든 데이터에 대해 로스를 계산해 그래디언트를 구하는 방식”을 배치 경사 하강법(Full-batch GD) 으로 볼 수 있다고 지적합니다.​​

 

모든 방향을 다 고려해서, 데이터가 많을수록 한 번의 업데이트 비용이 너무 크고 로컬 미니마에 빠질 위험이 큼

 

- 장점: 모든 데이터를 반영한 아주 신중한 방향을 선택.

- 단점: 데이터가 많을수록 한 번의 업데이트 비용이 너무 크고, 여전히 복잡한 로스 지형에서는 로컬 미니마에 빠질 위험이 큼.​​

좋은 로컬로라도 가야한다.

 

로스가 단순한 볼 모양이면 전역 최소에 잘 도달하지만, 딥러닝처럼 로스 랜드스케이프가 구덩이가 많은 경우, 시작 위치에 따라 가까운 로컬 미니멈에 수렴하게 되고, 이 방법만으로는 “전역 최적”을 보장할 수 없다는 점도 짚습니다.​​

 

바로 이러한 한계를 완화하기 위해, 다음 강의에서 SGD(확률적 경사 하강법) 와 변형 알고리즘들을 소개하겠다는 예고로 마무리합니다.​​

 

 

 

 

 

 

[Easy! 딥러닝] 2-5강. 웨이트 초기화 기법들 빠르게 정리해 드려요

이 강의의 핵심은 “웨이트 초기화는 ‘0 근처의 작은 랜덤값’으로 하되, fan_in / fan_out(입·출력 노드 수)에 맞춰 분산을 잘 잡아야 앞으로도, 뒤로도 신호·그라디언트가 폭주하거나 사라지지 않고 안정적으로 전파된다”는 점입니다.

그라디언트 디센트 마인드: 현재에 집중해서 최선을 다해서 나아가자. 그다음에는 또 그다음상황에서 판단.

공통 아이디어: 0 근처, 랜덤, 분산 조절

강의에서 소개하는 세 사람(LeCun, Xavier/Glorot, He/Kaiming)의 공통점은 다음과 같습니다.

 

-​ 가중치는 평균 0을 중심으로 한 분포에서

-​ 랜덤하게 뽑되

-​ 분산을 fan_in, fan_out에 의존하도록 설계한다.

 

여기서

-​ fan_in = 해당 레이어의 입력 노드 수

-​ fan_out = 출력 노드 수입니다.​​

 

이렇게 해야 한 층에서 다음 층으로 신호를 보낼 때도, 역전파로 그라디언트를 보낼 때도 값의 분산이 너무 커지거나(폭발) 너무 작아지지(소실) 않도록 막을 수 있습니다.​

 

 

 

세 가지 대표 초기화: LeCun, Xavier, He

강의에서 정리하는 주요 초기화는 다음과 같습니다.

 

-​ LeCun 초기화 (주로 시그모이드·tanh 근방, 옛날 MLP에 적합)

--​ fan_in만 고려: Var(W)=1/fan_in 정도로 설정

--​ 입력 쪽에서 오는 신호의 분산이 층을 지나도 유지되도록 설계합니다.​

0근처에서는 더 나머지에서는 덜 뽑겠다.

u는 유니폼 n은 노말(정규화)

 

 

 

-​ Xavier/Glorot 초기화 (시그모이드·tanh, 대칭 비선형에 널리 사용)

--​ fan_in과 fan_out을 모두 고려: Var(W)=2/(fan_in+fan_out) 수준

--​ forward와 backward 둘 다에서 분산이 균형을 이루도록 한 절충안입니다.

 

 

-​ He/Kaiming 초기화 (ReLU 계열에 최적화)

--​ fan_in만 고려하되, ReLU로 절반이 0이 된다는 점을 보정해 Var(W)=2/fan_in 정도로 더 크게 잡습니다.​

-- CNN·Transformer 등 ReLU/Leaky ReLU가 많은 현대 네트워크에서 사실상 표준입니다.​

 

강의에서 말한 것처럼, He 초기화는 ReLU, Xavier는 시그모이드/tanh에 잘 맞는 기본값 정도로 기억해 두면 실전에서 편리합니다.​​

 

 

 

 

 

 

 

왜 fan_in / fan_out을 고려해야 할까?

가중치 분포의 분산을 고정(예: 항상 0.1)으로 두고 fan_in이 차이가 나면,

 

- 입력 노드가 많을수록 z=∑w i x i 에 더 많은 항이 더해져 z z의 분산이 커지게 됩니다.

-​ 층을 많이 쌓으면 이 효과가 반복되어, forward에서는 activation이 폭발하거나 죽고, backward에서는 그라디언트가 폭발/소실되는 문제가 생깁니다.​

 

그래서 fan_in이 클수록 분산을 1/fan_in 비례로 줄여서 입력 수가 많을수록 각 가중치는 더 작게 초기화하고, fan_out도 함께 고려해 backward 시 그라디언트 분산도 안정적으로 유지하려는 게 Xavier/He 등의 핵심 아이디어입니다.​​

 

아웃은 백프로파게이션 때문에 고려한다.

 

 

 

왜 ‘전부 0’이나 ‘전부 1’ 초기화는 안 되는가?

강의 마지막에서는 면접 단골 질문으로 “모든 가중치를 0 혹은 1로 초기화하면 왜 문제인가?”를 던집니다.​

 

- 모든 가중치가 같으면, 각 노드의 출력이 완전히 대칭이 되어, 역전파로 흘러오는 그라디언트도 항상 동일해집니다.

- 그 결과, 학습 동안에도 모든 노드가 같은 값을 유지해 표현력이 늘지 않고, 여러 노드를 두는 의미가 사라지는 ‘대칭성(symmetricity) 문제’가 발생합니다.

 

따라서 “평균 0 근처의 랜덤값 + fan_in/fan_out 기반 분산”으로 초기화해

 

- 노드 간 대칭을 깨고

- 신호·그라디언트 분산을 층 깊이와 상관없이 안정적으로 유지하는 것이 현대 딥러닝에서의 웨이트 초기화의 핵심입니다.​​

 

 

 

 

이지 딥러닝 - 혁펜하임

 

 

 

[AI 인공지능 머신러닝 딥러닝] - 이지 딥러닝 - 혁펜하임 | Easy! 딥러닝 3강 - 확률적 경사 하강법 (SGD: Stochastic Gradient Descent), momentum, RMSProp , Adam (Adaptive Moment Estimation) 완벽 정리

 

이지 딥러닝 - 혁펜하임 | Easy! 딥러닝 3강 - 확률적 경사 하강법 (SGD: Stochastic Gradient Descent), momentum

[AI 인공지능 머신러닝 딥러닝] - 이지 딥러닝 - 혁펜하임 | Easy! 딥러닝 - 무료 강의 및 책 소개 이지 딥러닝 - 혁펜하임 | Easy! 딥러닝 - 무료 강의 및 책 소개한국어로 딥러닝 공부해봤다는 사람중

inner-game.tistory.com

 

728x90
반응형
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
250x250