Closed wongakim-99 closed 1 day ago
머신러닝과 딥러닝은 입력과 출력사이에서 학습을 하는 공통점이 있다.
기계학습(Machine Learning) : 특징추출을 위해 사람이 직접 수동으로 알고리즘을 제공해줘야 함. (특징 추출 후엔 분류기를 통해 분류를 하는데 분류할 수 있는 종류의 수가 딥 러닝보다 많다.)
심층학습(Deep Learning) : 사람이 직접 특징추출을 하지 않고 알아서 학습을 한다. 그렇기 때문에 머신러닝에 비해 데이터 의존도가 높다. (데이터를 처리할 때, 특징을 자동으로 추출함. 여러층의 신경망을 통해 데이터를 학습하고, 중요한 패턴을 스스로 찾아낸다.)
모델이 학습 데이터에만 잘 맞는 것이 아니라, 보지 못한 새로운 데이터에도 잘 작동하는 능력을 말한다.
가중치는 입력 데이터의 중요도를 나타내는 값이다. 머신러닝 모델이 입력값을 처리할 때, 각각의 입력 값이 얼마나 중요한지를 결정하는 요소이다. 처음 들어오는 데이터(입력층) 에서 다음 노드로 넘어갈때 모두 같은 값이면 계속 같은 값이 나올 것이다. 각기 다르게 곱해야 한다는것이 바로 가중치(weight)이다. 데이터를 각기 다른 비중으로 다음 은닉층(hidden layers)으로 전달시키기 위해 웨이트(weight), 중요도를 다르게 한다고 이해하면 된다.
예를 들어...
수능 점수를 예측하기 위해서는 학습데이터가 필요할 것이다. 4~9월 모의고사를 통해서 수능점수를 예측한다고 보겠다. 4,5,6 월 점수보다는 7,8,9월 이 시기의 점수가 수능점수와 비슷할것이다. 그러면 4,5,6월 점수보다 7,8,9 월의 점수를 더 중요하게 비중을 두어야 할 것이다. 이것이W : 가중치라고 이해하면된다.
바이어스는 모델이 입력 데이터에 아무런 영향을 받지 않고도 일정한 출력을 내도록 도와주는 추가적인 값이다. 쉽게 말해, 모델의 예측값을 조정하는 상수항 역할을 한다. 바이어스는 뉴런이 활성화되지 않더라도 일정한 값을 전달하게 해준다. 하나의 뉴런으로 입력된 모든 값을 다 더한 다음에(가중합) 이 값에 더 해주는 상수이다. 이 값은 하나의 뉴런에서 활성화 함수를 거쳐 최종적으로 출력되는 값을 조절한다.
예를 들어...
파티에 가는것을 무척 좋아하는 '성향' 을 가진 호준과 그렇지 않은 가원 이라는 두 사람이 있다면 날씨, 친구, 비용의 중요도(=가중치)같다고 가정하는데, 호준은 파티를 너무 좋아해서 돈이 없거나 날씨가 안좋아도 무조건 가려고 할테고, 반면 가원은 날씨도 좋고 돈도 있는데도 조용한것을 더 좋아해서 파티에 안가려고 할 수도 있다는 것이다. 그렇다면 똑같이 값을 내면 안 될 것이다. 성향(bias)이라는 값을 추가 해주는 것이라고 이해하면 된다. 결국 뉴럴네트워크(신경망) 구조의 마지막 출력은 weight 값 그리고 bias 값에 의해 결정되는 것이다.
요컨데, 위의 예시에서는 "파티를 가는 여부"가 결정되어야 하는 상황에서, 날씨, 절친, 그리고 비용이라는 입력 요소들이 중요도를 가지고 있다. 이 중요도는 가중치(Weight)로 볼 수 있다. 각 요소가 파티에 가는 결정에 어느 정도 영향을 미치는지를 나타낸다.
따라서, 입력값(날씨, 절친, 비용)이 같더라도 바이어스 값이 다르면 결과가 달라질 수 있다. 즉, 신경망에서 바이어스는 입력 요소들(가중치가 적용된 값들)이 0이더라도 어떤 기본값을 더해 주어 결과에 영향을 미치는 중요한 요소이다.
뉴럴 네트워크에의 마지막 출력은 입력 값 x 가중치 + 바이어스로 결정되며, 그 값에 따라 출력이 결정된다.
답 : 과소적합 : 모델이 지나치게 단순하여 바이어스가 크고, 분산이 낮은 경우 발생한다. 해결책은 모델을 더 복잡하게 만들어 바이어스를 줄이는 것이다.
과잉적합 : 모델이 지나치게 복잡하여 분산이 크고, 바이어스가 매우 낮아 데이터의 세부적인 노이즈까지 학습한 경우 발생한다. 해결책은 모델의 복잡도를 줄이고, 정규화를 적용해 분산을 줄인다.
퍼셉트론(Perceptron)은 인공 신경망(Artificaial Neural Network)의 기본 구성 요소이자. 가장 간단한 형태의 인공 뉴런 모델이다. 퍼셉트론은 생물학적 뉴런을 모방하여 만들어졌으며, 기계 학습의 중요한 개념 중 하나이다. 퍼셉트론은 주로 이진 분류 문제(0 or 1, True or False) 를 해결하는 데 사용된다.
퍼셉트론은 실제 뇌를 구성하는 신경 세포 뉴런의 동작과 유사한데, 신경 세포 뉴런의 그림을 먼저 보자.
뉴런은 가지돌기에서 신호를 받아들이고, 이 신호가 일정치 이상의 크기를 가지면 축삭돌기를 통해서 신호를 전달한다.
퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 전류가 전선을 타고 흐르는 전자를 내보내듯, 퍼셉트론 신호도 흐름을 만들고 정보를 앞으로 전달한다.
다수의 입력을 받는 퍼셉트론의 그림을 보자. 신경 세포 뉴런의 입력 신호와 출력 신호가 퍼셉트론에서 각각 입력값과 출력값에 해당된다.
그림은 입력으로 n개의 input값을 받은 퍼셉트론이다. x는 입력값을 의미하며, w는 가중치, y는 출력값이다.
실제 신경 세포 뉴런에서의 신호를 전달하는 축삭돌기의 역할을 퍼셉트론에서는 가중치가 대신한다. 각각의 인공 뉴런에서 보내진 입력값 x는 각각의 가중치 w와 함께 종착지인 인공 뉴런에 전달된다.
각각의 입력값에는 각각의 가중치가 존재하는데, 이때 가중치의 값이 크면 클수록 해당 입력 값이 중요하다는 것을 의미한다.
각 입력값이 가중치와 곱해져서 인공 뉴런에 보내지고, 각 입력값과 그에 해당되는 가중치의 곱이 전체 합이 임계치(threshhold)를 넘으면 종착지에 있는 인공 뉴런은 출력 신호로서 1을 출력하고, 그렇지 않으면 0을 출력한다.
이러한 함수를 계단 함수(Step function)라고 하며, 아래는 계단 함수의 하나의 예를 보여준다.
퍼셉트론은 입력을 받아 출력으로 변환하는 매우 간단한 구조를 지니고 있다.
입력 값(input):
가중치(Weight):
바이어스(Bias):
가중합(Summation):
여기서 b는 바이어스이다.
이를 통해 이진 분류 결과가 1또는 0으로 나온다.
퍼셉트론은 주어진 입력에 대해 가중치와 바이어스를 활용하여 최종 출력값을 계산하는 구조이다. 이 과정을 통해 입력 값이 특정 클래스로 분류될지(1), 아니면 다른 클래스로 분류될지(0)를 결정한다.
답 : 퍼셉트론은 입력신호에 대한 각각의 가중치를 가진다. 출력신호에 나타낼 값을 위해 활성 함수를 사용하는데 이 중 "계단 함수"는 퍼셉트론의 가장 기본적인 활성화 함수로, 입력값의 가중합이 특정 임계값(θ) 를 넘으면 1을 출력하고, 그렇지 않으면 0을 출력한다. 이는 이진 분류 문제 AND GATE 나 OR GATE 만을 해결이 가능하고, XOR 게이트 같은 경우 해결할 수 없다. 이 문제를 해결하기 위해 퍼셉트론의 은닉층을 만들어 늘리는 다층 퍼셉트론을 사용해 해결 할 수 있다.
문제 이해 : 기계 학습에서 "분류" 와 "학습" 이 각각 무엇인지, 그리고 두 개념의 차이를 수학적으로 설명하라는게 의도인듯?
일단 용어정리 먼저 해보자.
여기서, W ⋅ x 는 입력 값 x에 가중치 W를 곱한 결과이고, 활성화 함수 f 는 그 결과를 이진 또는 다중 클래스 분류로 변환하는 함수이다.
답 : 분류에서는 주어진 데이터를 특정 클래스에 속하도록 예측하는 과정이며, 위의 사진과 같은 수식으로 표현된다. 학습은 모델이 더 정확한 예측을 하도록 가중치 W를 조정하는 과정이다. 학습의 목표는 오차를 줄이기 위해 가중치를 최적화하는 것이다.
경사 하강법(Gradient Descent) 는 기계 학습에서 손실 함수(loss function)를 최소화하기 위한 최적화 알고리즘이다. 이 방법은 손실 함수의 기울기(경사)를 따라 내려가면서 가중치나 파라미터를 조금씩 업데이트하여 최적의 값을 찾는 방법이다. 경사 하강법은 신경망, 회귀 분석 등 다양한 기계 학습 알고리즘에서 핵심적인 역할을 한다.
위의 그래프에서 손실함수에 대한 각 매개변수의 기울기(Gradient)를 이용하는 방법이다. 이 때 기울기가 0인 지점인 손실함수의 값이 최저인 곳이므로 그 지점에 도달하기위해 매개변수는 기울기의 반대방향으로 움직여야 한다. 그래서 경사하강법의 미분값의 -만큼 빼주는 값으로 가중치를 업데이트 하는 것이다.
위의 내용을 내가 정리했지만 어렵다....
조금 쉽게 정리...
경사 하강법은 마치 산을 내려가는 것과 같다. 지금 내가 산 꼭대기에 있다고 가정해보자. 이 산에서 내려가는 방법을 찾고 싶다면 어떻게 해야 할까?
이와 비슷하게, 경사 하강법도 우리가 가장 많이 줄일 수 있는 방향으로 조금씩 이동하는 과정을 반복하는 것이다.
기계 학습에서는 모델이 예측한 값과 실제 값 사이의 오차(실수) 를 줄이는 게 목표이다. 경사 하강법을 사용하면 그 오차가 점점 더 줄어들도록 모델의 가중치를 조금씩 수정해 나가는 것이다.
또한, 경사 하강법에서 중요한 개념 중 하나는 학습률(learning rate)이다. 이는 한 번에 얼마나 많이 움직일지를 결정하는 값이다.
확률적 경사 하강법(Stochastic Gradient Descent, SGD) 은 전체 데이터 세트를 무작위로 섞은 후, 매 반복(iteration) 마다 하나의 데이터 샘플만을 사용해 손실 함수의 기울기를 계산하고 즉시 매개변수를 업데이트 하는 방법이다. 첫 번째 샘플로 기울기를 계산해 매개변수를 업데이트한 뒤, 두 번째 샘플로 다시 기울기를 계산해 모든 매개변수를 업데이트하는 식으로 진행된다. 이렇게 각 데이터 샘플에 대해 기울기를 계산하고 업데이트하는 과정을 최적의 매개변수 값에 도달할 때까지 반복한다. 이 방식은 계산 속도가 빠르지만, 기울기 계산의 변동성이 커서 수렴 과정에서 진동이 발생할 수 있다.
미니배치 경사 하강법(Mini Batch Gradient Descent, MGD) 는 전체 훈련 데이터를 여러 작은 그룹인 미니배치(mini-batch)로 나누어 경사 하강법을 수행하는 방식이다. 각 Iteration에서 하나의 미니배치를 사용하여 손실 함수의 기울기를 계산한 후, 그 평균 기울기를 사용하여 매개변수를 업데이트한다.
기계 학습에서 목적 함수(objective function)는 모델이 최적화하려고 하는 함수를 의미한다. 목적 함수는 모델이 얼마나 잘 학습하고 있는지 평가하는 기준 역할을 한다. 일반적으로 목적 함수는 모델의 예측이 실제 값과 얼마나 차이가 나는지 측정하며, 이 차이를 줄이는 것이 목표이다.
모델이 학습하는 동안, 목적 함수는 모델이 얼마나 오차를 만들고 있는지를 나타내며, 이 오차를 줄이기 위해 모델이 가중치(weight)를 조정하게 된다. 기계 학습의 목표는 목적 함수의 값을 최소화 하는 것, 즉 오차를 가능한 한 줄이는 것이다.
직렬 연결로 은닉층이 많아지면, 신경망은 더 깊은 구조를 가지며, 데이터의 복잡한 계층적 패턴을 점차적으로 학습한다. 이는 신경망이 비선형적인 패턴을 효과적으로 처리할 수 있도록 도와준다.
오류역전파(Backpropagation)는 신경망(Neural Network)이 학습하는 방법 중 하나로, 신경망이 더 똑똑 해지도록 도와주는 방법이라고 생각하면 된다. 일단 신경망이 어떻게 학습하는지 기본 원리부터 이해해보자.
상명대 심층학습 2020년 중간고사