2024/06 26

기울기 소실(Gradient Vanishing)과 폭주(Exploding)

깊은 인공 신경망을 학습하다보면 역전파 과정에서 입력층으로 갈 수록 기울기(gradient)가 점차적으로 작아지는 현상이 발생할 수 있다. 입력층에 가까운 층들에서 가중치 업데이트가 제대로 되지 않으면 결국 최적의 모델을 찾지 못하는데 이를 기울기 소실(Gradient Vanishing)이라고 한다.반대의 경우도 존재하는데, 기울기가 점차 커지더니 가중치들이 비정상적으로 큰 값이 되면서 결국 발산하게 되는 기울기 폭주(Gradient Exploding)도 존재한다. 이는 순환 신경망(Recurrent Neural Network,RNN)에서 쉽게 발생한다.1. ReLU와 ReLU의 변형들시그모이드 함수: 입력의 절대값이 클 경우에 출력값이 0 또는 1에 수렴하면서 기울기가 0에 가까워진다. ➡️ 역전파 과..

ML 2024.06.05

과적합(Overfitting)을 막는 방법들

학습 데이터에 모델이 과적합되는 현상은 모델의 성능을 떨어뜨리는 주요 이슈이다. 훈련 데이터에 대한 정확도는 높을 지라도 검증 데이터나 테스트 데이터에 대해서는 제대로 동작하지 않는다. 불필요할 정도로 과하게 암기하여 훈련 데이터에 포함된 노이즈까지 학습된 상태이다.1. 데이터의 양을 늘리기모델은 데이터의 양이 적을 경우, 해당 데이터의 특정 패턴이나 노이즈까지 쉽게 암기하기 되므로 과적합 현상이 발생할 확률이 늘어난다. ➡️ 데이터의 양을 늘려서 데이터의 일반적인 패턴을 학습하여 과적합을 방지하자만약, 데이터의 양이 적을 경우에는 의도적으로 기존의 데이터를 조금씩 변형하고 추가하여 데이터의 양을 늘리기도 하는데 이를 데이터 증식 또는 증강이라고 한다. 이미지의 경우에는 데이터 증식이 많이 사용되는디 이..

ML 2024.06.05

역전파(BackPropagation) 이해하기

인공 신경망이 순전파 과정을 진행하며 예측값과 실제값의 오차를 계산하였을 때 어떻게 역전파 과정에서 경사 하강법을 사용하여 가중치를 업데이트할까?1. 인공 신경망의 이해(Neural Network Overview)아래의 그림의 인공 신경망은 입력층, 은닉층, 출력층 이렇게 3개의 층을 가진다. 또한 해당 인공 신경망은 두 개의 입력과, 두 개의 은닉층 뉴런, 두 개의 출력층 뉴런을 사용한다. 은닉층과 출력층의 모든 뉴런은 활성화 함수로 시그모이드 함수를 사용한다.위의 그림은 여기서 사용할 인공 신경망의 모습을 보여준다. 은닉층과 출력층 모든 뉴런에서 변수 z가 존재하는데 여기서 변수 z는 이전 층의 모든 입력이 각각의 가중치와 곱해진 값들이 모두 더해진 가중합을 의미한다. z 우측의 |를 지나서 존재하는..

ML 2024.06.05

딥 러닝의 학습 방법

1. 손실함수(Loss function)손실 함수는 실제값과 예측값의 차이를 수치화해주는 함수다. 오차가 클 수록 손실함수의 값은 크고 오차가 작을 수록 손실함수의 값은 작아진다.회귀에서는 평균 제곱 오차, 분류에서는 크로스 엔트로피를 주로 손실함수로 사용한다.손실 함수의 값을 최소화하는 두 개의 매개변수인 가중치와 편향을 찾는 것이 딥러닝의 학습 과정이므로 손실함수 선정은 매우 중요하다.손실 함수를 정리해보도록 하자.1) MSE(Mean Squared Error, MSE)평균 제곱 오차는 선형회귀를 학습할 때 배웠던 손실 함수이다. 연속형 변수를 예측할 때 사용된다.아래와 같이 compiled의 loss에 문자열 'mse'라고 기재하여 사용할 수 있다.compile의 loss는 tf.keras.loss..

ML 2024.06.05

행렬곱으로 이해하는 신경망

순전파 : 인공 신경망에서 입력층에서 출력층 방향으로 연산을 수행하는 과정주어진 입력이 입력층으로 들어가서 은닉층을 지나 출력층에서 예측값을 얻는 과정 ➡️ 결정적으로 행렬의 곱셈으로 이해할 수 있다. 다층 퍼셉트론 내의 가중치와 편향의 개수를 추정하는 방법에 대해서 학습힌다.1. 순전파(Forward Propagation)활성화 함수, 은닉층의 수, 각 은닉층의 뉴런 수 등 딥 러닝 모델을 설계하고나면 입력값은 입력층, 은닉층을 지나면서 각 층에서의 가중치와 함께 연산되며 출력층으로 향한다. 출력층에서 모든 연산을 마친 예측값이 나온다.순전파 : 입력층 ➡️ 출력층2. 행렬곱으로 순전파 이해하기위와 같은 인공신경망이 있다고 할 때, 입력의 차원은 3, 출력의 차원이 2인 위 인공신경망을 구현한다면 아래..

ML 2024.06.05

인공 신경망(Artifical Neural Network) 훑어보기

1. 피드 포워드 신경망(Feed-Forward Neural Network, FFNN)오직 입력층에서 출력층 방향으로 연산이 전개되는 신경망FFNN가 아닌 RNN이라는 신경망이다. 은닉층의 출력값을 출력층으로도 값을 보내지만, 동시에 은닉층의 출력값이 다시 은닉층의 입력으로 사용되기도 한다.2. 전결합층(Fulyy-connected layer, FC, Dence layer)다층 퍼셉트론은 은닉층과 출력층에 있는 모든 뉴런은 바로 이전 층의 모든 뉴런과 연결되어 있다.전결합층 (완전결합층, FC): 이전 층의 모든 뉴런과 연결되어 있는 층밀집층이라고 부르기도 한다.3. 활성화 함수(Activation Function)은닉층과 출력층의 누련에서 출력값을 결정하는 함수계단 함수(0 or 1)는 활성화 함수의 ..

ML 2024.06.05

[핸즈온 머신러닝] 머신 러닝(Machine Learning)

🤔 머신러닝영상 처리, 번역기, 음성 인식, 스팸 메일 탐지 등 굉장히 많은 분야에서 응용되는 중이다. 특히 머신 러닝의 한 갈래인 딥 러닝은 자연어 처리 엔지니어에게 필수 역량이다. 머신러닝의 방식위쪽은 기존의 프로그래밍 접근 방식아래쪽은 머신 러닝의 접근 방식머신 러닝은 데이터가 주어지면, 기계가 스스로 데이터로부터 훈련성을 찾는 것에 집중한다. 주어진 데이터로부터 규칙성을 찾는 과정을 훈련(training) 또는 학습(learning)이라고 한다. 훑어보기머신 러닝을 위한 데이터: 훈련용 검증용 테스트용훈련: 머신 러닝 모델 학습테스트: 머신 러닝 모델의 성능 평가검증: 과적합이 되고 있는지 판단하거나 하이퍼파라미터의 조정을 위한 용도하이퍼파라미터(초매개변수): 모델의 성능에 영향을 주는 사람이 ..

ML 2024.06.05

[핸즈온 머신러닝] 선형 회귀(Linear Regression)

1. 선형 회귀(Linear Regression)어떤 요인으 수치에 따라서 특정 요인의 수치가 영향을 받 있다.어떤 변수의 값에 따라서 특정 변수의 값이 영향을 받고 있다.x에 의해서 종속적으로 y의 값이 변한다선형 회귀는 1개 이상의 독립 변수 x와 y의 선형 관계를 모델링 한다. 이때 독립변수 x가 1개이면 단순 선형 회귀라고 한다.1) 단순 선형 회귀 분석(Simple Linear Regression Analysis)곱해지는 값 w를 머신 러닝에서는 가중치(weight), 별도로 더해지는 값 b를 편향(bias)라고 한다.직선의 방정식에서는 각각 직선의 기울기와 절편을 의미한다.2) 다중 선형 회귀 분석(Multiple Linear Regression Analysis)x가 여러개일 때 사용2. 가..

ML 2024.06.05

[핸즈온 머신러닝] 로지스틱 회귀(Logistic Regression)

둘 중 하나를 결정하는 문제를 이진 분류(Binary Classification)라고 한다. 이런 문제를 풀기 위한 대표적인 알고리즘이 로지스틱 회귀(Logistic Regression)1. 이진 분류(Binary Classification)공부 시간과 성적 간의 관계를 직선의 방정식으로 표현한다는 가설 하에, 주어진 데이터로부터 가중치 w와 편향 b를 찾아 데이터를 가장 잘 표현하는 직선을 찾았다. 이번에는 배울 둘 중 하나의 선택지 중에서 정답을 고르는 이진 분류 문제를 직선으로 표현하는 것은 적절하지 않다.학생들이 시험 성적에 따라서 합격, 불합격이 기재된 데이터가 있다고 가정하자.시험 성적이 x라면 합불 결과는 y이다. 이 데이터로부터 특정 점수를 얻었을 때의 합격, 불합격 여뷰를 판정하는 모델을..

ML 2024.06.05

[핸즈온 머신러닝] 벡터와 행렬 연산

1. 벡터와 행렬과 텐서벡터는 크기와 방향을 가진 양이다. 숫자가 나열된 형상이며 파이썬에서는 1차원 배열 또는 리스트로 표현한다.행렬은 행과 열을 가지는 2차원 형상을 가진 구조이다. 파이썬에서는 2차원 배열로 표현한다. 가로줄을 행(row)라고 하며, 세로줄을 열(column)라고 한다.3차원 부터는 주로 텐서라고 한다. 텐서는 파이썬에서는 3차원 이상의 배열로 표현한다.2. 텐서(Tensor)인공 신경망은 모델 내의 연산을 주로 행렬 연산을 통해 해결한다. 2차원 배열을 통한 행렬 연산만이 아니라 3차원 텐서에 대한 이해도 필수로 요구된다. Numpy를 통해서 텐서를 보여주겠다.1) 0차원 텐서(스칼라)ndim을 출력했을 때 나오는 값을 우리는 축(axis)의 개수 또는 텐서의 차원이라고 부른다.2..

ML 2024.06.05