wongakim-99 / MachineLearning_and_DeepLearning_study

머신러닝, 딥러닝에 대해 공부하고 커밋
0 stars 0 forks source link

심층학습 2020년 중간고사 #4

Closed wongakim-99 closed 1 day ago

wongakim-99 commented 3 days ago

상명대 심층학습 2020년 중간고사

wongakim-99 commented 3 days ago

1. 기계학습(Machine Learning)과 심층학습(Deep Learning)의 차이점을 설명하시오.


머신러닝과 딥러닝은 입력과 출력사이에서 학습을 하는 공통점이 있다.

wongakim-99 commented 3 days ago

2. 기계학습에서 과소적합, 과잉적합의 문제가 무엇인지 일반화능력, 바이어스(bias : 중심(평균값)과 참값과의 편차), 분산과의 관계를 이용하여 설명하시오.


용어정리

1. 일반화 능력

모델이 학습 데이터에만 잘 맞는 것이 아니라, 보지 못한 새로운 데이터에도 잘 작동하는 능력을 말한다.


2. 가중치(Weight)

가중치는 입력 데이터의 중요도를 나타내는 값이다. 머신러닝 모델이 입력값을 처리할 때, 각각의 입력 값이 얼마나 중요한지를 결정하는 요소이다. 처음 들어오는 데이터(입력층) 에서 다음 노드로 넘어갈때 모두 같은 값이면 계속 같은 값이 나올 것이다. 각기 다르게 곱해야 한다는것이 바로 가중치(weight)이다. 데이터를 각기 다른 비중으로 다음 은닉층(hidden layers)으로 전달시키기 위해 웨이트(weight), 중요도를 다르게 한다고 이해하면 된다.

예를 들어...

Image

수능 점수를 예측하기 위해서는 학습데이터가 필요할 것이다. 4~9월 모의고사를 통해서 수능점수를 예측한다고 보겠다. 4,5,6 월 점수보다는 7,8,9월 이 시기의 점수가 수능점수와 비슷할것이다. 그러면 4,5,6월 점수보다 7,8,9 월의 점수를 더 중요하게 비중을 두어야 할 것이다. 이것이W : 가중치라고 이해하면된다.


3. 바이어스(bias)

바이어스는 모델이 입력 데이터에 아무런 영향을 받지 않고도 일정한 출력을 내도록 도와주는 추가적인 값이다. 쉽게 말해, 모델의 예측값을 조정하는 상수항 역할을 한다. 바이어스는 뉴런이 활성화되지 않더라도 일정한 값을 전달하게 해준다. 하나의 뉴런으로 입력된 모든 값을 다 더한 다음에(가중합) 이 값에 더 해주는 상수이다. 이 값은 하나의 뉴런에서 활성화 함수를 거쳐 최종적으로 출력되는 값을 조절한다.

예를 들어...

Image

파티에 가는것을 무척 좋아하는 '성향' 을 가진 호준과 그렇지 않은 가원 이라는 두 사람이 있다면 날씨, 친구, 비용의 중요도(=가중치)같다고 가정하는데, 호준은 파티를 너무 좋아해서 돈이 없거나 날씨가 안좋아도 무조건 가려고 할테고, 반면 가원은 날씨도 좋고 돈도 있는데도 조용한것을 더 좋아해서 파티에 안가려고 할 수도 있다는 것이다. 그렇다면 똑같이 값을 내면 안 될 것이다. 성향(bias)이라는 값을 추가 해주는 것이라고 이해하면 된다. 결국 뉴럴네트워크(신경망) 구조의 마지막 출력은 weight 값 그리고 bias 값에 의해 결정되는 것이다.

요컨데, 위의 예시에서는 "파티를 가는 여부"가 결정되어야 하는 상황에서, 날씨, 절친, 그리고 비용이라는 입력 요소들이 중요도를 가지고 있다. 이 중요도는 가중치(Weight)로 볼 수 있다. 각 요소가 파티에 가는 결정에 어느 정도 영향을 미치는지를 나타낸다.

따라서, 입력값(날씨, 절친, 비용)이 같더라도 바이어스 값이 다르면 결과가 달라질 수 있다. 즉, 신경망에서 바이어스는 입력 요소들(가중치가 적용된 값들)이 0이더라도 어떤 기본값을 더해 주어 결과에 영향을 미치는 중요한 요소이다.

뉴럴 네트워크에의 마지막 출력은 입력 값 x 가중치 + 바이어스로 결정되며, 그 값에 따라 출력이 결정된다.


4. 과소적합, 과잉적합


문제에 대한 정답

과소적합(Underfitting)

과잉적합(Overfitting)


답 : 과소적합 : 모델이 지나치게 단순하여 바이어스가 크고, 분산이 낮은 경우 발생한다. 해결책은 모델을 더 복잡하게 만들어 바이어스를 줄이는 것이다.

과잉적합 : 모델이 지나치게 복잡하여 분산이 크고, 바이어스가 매우 낮아 데이터의 세부적인 노이즈까지 학습한 경우 발생한다. 해결책은 모델의 복잡도를 줄이고, 정규화를 적용해 분산을 줄인다.

wongakim-99 commented 2 days ago

3. 퍼셉트론에서 활성함수의 역할을 설명하시오.

용어정리

퍼셉트론

퍼셉트론(Perceptron)은 인공 신경망(Artificaial Neural Network)의 기본 구성 요소이자. 가장 간단한 형태의 인공 뉴런 모델이다. 퍼셉트론은 생물학적 뉴런을 모방하여 만들어졌으며, 기계 학습의 중요한 개념 중 하나이다. 퍼셉트론은 주로 이진 분류 문제(0 or 1, True or False) 를 해결하는 데 사용된다.

퍼셉트론은 실제 뇌를 구성하는 신경 세포 뉴런의 동작과 유사한데, 신경 세포 뉴런의 그림을 먼저 보자.

뉴런은 가지돌기에서 신호를 받아들이고, 이 신호가 일정치 이상의 크기를 가지면 축삭돌기를 통해서 신호를 전달한다.

Image

퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 전류가 전선을 타고 흐르는 전자를 내보내듯, 퍼셉트론 신호도 흐름을 만들고 정보를 앞으로 전달한다.

다수의 입력을 받는 퍼셉트론의 그림을 보자. 신경 세포 뉴런의 입력 신호와 출력 신호가 퍼셉트론에서 각각 입력값과 출력값에 해당된다.

Image

그림은 입력으로 n개의 input값을 받은 퍼셉트론이다. x는 입력값을 의미하며, w는 가중치, y는 출력값이다.

실제 신경 세포 뉴런에서의 신호를 전달하는 축삭돌기의 역할을 퍼셉트론에서는 가중치가 대신한다. 각각의 인공 뉴런에서 보내진 입력값 x는 각각의 가중치 w와 함께 종착지인 인공 뉴런에 전달된다.

각각의 입력값에는 각각의 가중치가 존재하는데, 이때 가중치의 값이 크면 클수록 해당 입력 값이 중요하다는 것을 의미한다.

각 입력값이 가중치와 곱해져서 인공 뉴런에 보내지고, 각 입력값과 그에 해당되는 가중치의 곱이 전체 합이 임계치(threshhold)를 넘으면 종착지에 있는 인공 뉴런은 출력 신호로서 1을 출력하고, 그렇지 않으면 0을 출력한다.

이러한 함수를 계단 함수(Step function)라고 하며, 아래는 계단 함수의 하나의 예를 보여준다.

Image


퍼셉트론의 구성 요소

퍼셉트론은 입력을 받아 출력으로 변환하는 매우 간단한 구조를 지니고 있다.

  1. 입력 값(input):

    • 퍼셉트론은 여러 개의 입력 값을 받는다. 이 입력 값들은 학습 데이터의 특징(feature)에 해당한다. 예를 들어, 이미지의 픽셀 값이나, 날씨 데이터의 온도, 습도 같은 데이터가 될 수 있다.
  2. 가중치(Weight):

    • 각 입력 값에는 각각의 가중치(Weight)가 할당된다. 가중치는 각 입력 값이 최종 결과에 얼마나 영향을 미치는지를 나타냄. 이 가중치는 학습 과정에서 조정되며, 모델이 최적의 예측을 할 수 있도록 함.
  3. 바이어스(Bias):

    • 앞서 설명한 것처럼 바이어스는 모든 입력 값과 가중치의 곱을 계산한 후에 더해지는 상수값임. 바이어스는 모델의 출력값을 조정하여 더 유연한 예측을 가능하게 함
  4. 가중합(Summation):

    • 퍼셉트론은 각 입력 값에 가중치를 곱한 후, 모든 값을 더한다. 이를 가중합(weighted sum) 이라고 한다. 예를 들어, 입력 값들이 x1, x2, x3 이고 가중치가 w1, w2, w3 일 때, 가중합은 아래와 같이 계산된다.

Image

여기서 b는 바이어스이다.

  1. 활성화 함수(Activation Function):
    • 가중합을 계산한 후에는 활성화 함수(activation function)를 통과하여 최종 출력을 결정한다. 퍼셉트론의 경우, 가장 간단한 활성화 함수는 계단 함수(step function) 또는 단위 계단 함수이다. 이 함수는 가중합의 결과가 일정 값(대개 0)을 넘으면 1을 출력하고, 그렇지 않으면 0을 출력한다.

Image

이를 통해 이진 분류 결과가 1또는 0으로 나온다.


퍼셉트론의 동작 원리(결론)

퍼셉트론은 주어진 입력에 대해 가중치와 바이어스를 활용하여 최종 출력값을 계산하는 구조이다. 이 과정을 통해 입력 값이 특정 클래스로 분류될지(1), 아니면 다른 클래스로 분류될지(0)를 결정한다.

  1. 입력 : 입력 값이 퍼셉트론으로 들어온다.
  2. 가중합 계산 : 각 입력 값과 가중치의 곱을 모두 더한 후 바이어스를 더한다.
  3. 활성화 함수 적용 : 가중합에 활성화 함수를 적용하여 최종 출력값을 계산한다.
  4. 출력 : 출력값은 1 또는 0이 되며, 이는 이진 분류 결과를 나타낸다.


문제에 대한 정답

답 : 퍼셉트론은 입력신호에 대한 각각의 가중치를 가진다. 출력신호에 나타낼 값을 위해 활성 함수를 사용하는데 이 중 "계단 함수"는 퍼셉트론의 가장 기본적인 활성화 함수로, 입력값의 가중합이 특정 임계값(θ) 를 넘으면 1을 출력하고, 그렇지 않으면 0을 출력한다. 이는 이진 분류 문제 AND GATE 나 OR GATE 만을 해결이 가능하고, XOR 게이트 같은 경우 해결할 수 없다. 이 문제를 해결하기 위해 퍼셉트론의 은닉층을 만들어 늘리는 다층 퍼셉트론을 사용해 해결 할 수 있다.

wongakim-99 commented 2 days ago

4. 기계학습에서 학습의 의미를 "분류" 와 "학습"을 수학적인 예로 간단히 들어 설명하시오.

문제 이해 : 기계 학습에서 "분류" 와 "학습" 이 각각 무엇인지, 그리고 두 개념의 차이를 수학적으로 설명하라는게 의도인듯?

일단 용어정리 먼저 해보자.

분류(Classification)

Image 여기서, W ⋅ x 는 입력 값 x에 가중치 W를 곱한 결과이고, 활성화 함수 f 는 그 결과를 이진 또는 다중 클래스 분류로 변환하는 함수이다.


학습(Learning) 에 대한 설명


개인적인 궁금한 점

  1. 분류의 수학적 표현
    • 이 수식은 기계 학습에서 분류 문제를 나타낼 때 자주 사용하는 선형 모델의 기본 표현이다.
    • 로지스틱 회귀(Logistic Regression)과 퍼셉트론(Perceptron)같은 분류 모델들이 이와 같은 형식으로 표현된다.
    • W ⋅ x : 입력 값 x 와 가중치 W의 선형 결합이다.
    • f : 활성화 함수로, 로지스틱 회귀에서는 시그모이드(sigmoid) 함수가, 퍼셉트론에서는 계단 함수(step function)가 사용된다. 이 함수는


  1. 학습에서 가중치 W 조정
    • 학습은 모델이 입력 데이터에 대해 더 좋은 예측을 할 수 있도록 가중치를 조정하는 과정이다. 경사 하강법(Gradient Descent) 같은 최적화 알고리즘을 사용하여 손실 함수(loss function)을 최소화하기 위해 가중치를 업데이트 한다.
    • 가중치는 학습 데이터와 실제 값 간의 오차를 줄이는 방향으로 업데이트된다. 이는 기계 학습의 핵심 개념 중 하나이다.


의문점은 계속 들지만...

답 : 분류에서는 주어진 데이터를 특정 클래스에 속하도록 예측하는 과정이며, 위의 사진과 같은 수식으로 표현된다. 학습은 모델이 더 정확한 예측을 하도록 가중치 W를 조정하는 과정이다. 학습의 목표는 오차를 줄이기 위해 가중치를 최적화하는 것이다.

wongakim-99 commented 2 days ago

5. 배치경사하강, 스토캐스틱, 미니배치 스토캐스틱 알고리즘의 특징과 차이점을 설명하시오.

경사하강이 뭔데..?

경사 하강법(Gradient Descent) 는 기계 학습에서 손실 함수(loss function)를 최소화하기 위한 최적화 알고리즘이다. 이 방법은 손실 함수의 기울기(경사)를 따라 내려가면서 가중치나 파라미터를 조금씩 업데이트하여 최적의 값을 찾는 방법이다. 경사 하강법은 신경망, 회귀 분석 등 다양한 기계 학습 알고리즘에서 핵심적인 역할을 한다.

Image

위의 그래프에서 손실함수에 대한 각 매개변수의 기울기(Gradient)를 이용하는 방법이다. 이 때 기울기가 0인 지점인 손실함수의 값이 최저인 곳이므로 그 지점에 도달하기위해 매개변수는 기울기의 반대방향으로 움직여야 한다. 그래서 경사하강법의 미분값의 -만큼 빼주는 값으로 가중치를 업데이트 하는 것이다.


경사 하강법의 핵심 아이디어

  1. 손실 함수 :
    • 모델이 예측한 값과 실제 값 사이의 차이를 나타내는 함수이다. 경사 하강법의 목표는 이 손실 함수의 값을 최소화하는 것이다. 예를 들어, 회귀 문제에서 손실 함수는 주로 평균 제곱 오차(MSE)이다.


  1. 기울기 (Gradient) :
    • 손실 함수의 기울기는 현재 지점에서 함수가 어느 방향으로 증가하거나 감소하는지를 알려준다. 경사 하강법에서는 기울기가 가리키는 방향의 반대 방향으로 움직여 손실을 줄여나간다.


  1. 학습률(learning rate) :
    • 손실 함수의 기울기는 현재 지점에서 함수가 어느 방향으로 증가하거나 감소하는지를 알려준다. 경사 하강법에서는 기울기가 가리키는 방향의 반대 방향으로 움직여 손실을 줄여나간다.


  1. 학습률(learning rate) :
    • 기울기를 따라 얼마나 이동할지를 결정하는 값이다. 학습률이 너무 크면 최적의 값에 도달하지 못하고 계속 왔다 갔다 할 수 있고, 너무 작으면 학습 속도가 매우 느리다.



위의 내용을 내가 정리했지만 어렵다....

조금 쉽게 정리...

간단한 비유

경사 하강법은 마치 산을 내려가는 것과 같다. 지금 내가 산 꼭대기에 있다고 가정해보자. 이 산에서 내려가는 방법을 찾고 싶다면 어떻게 해야 할까?

이와 비슷하게, 경사 하강법도 우리가 가장 많이 줄일 수 있는 방향으로 조금씩 이동하는 과정을 반복하는 것이다.

기계 학습에서 경사 하강법의 역할

기계 학습에서는 모델이 예측한 값과 실제 값 사이의 오차(실수) 를 줄이는 게 목표이다. 경사 하강법을 사용하면 그 오차가 점점 더 줄어들도록 모델의 가중치를 조금씩 수정해 나가는 것이다.

학습률(learning rate) 비유

또한, 경사 하강법에서 중요한 개념 중 하나는 학습률(learning rate)이다. 이는 한 번에 얼마나 많이 움직일지를 결정하는 값이다.

그러면 문제의 정답

배치 경사 하강법 (Batch Gradient Descent Method, BGD)


확률적 경사 하강법 (Stochastic Gradient Descent, SGD)

확률적 경사 하강법(Stochastic Gradient Descent, SGD) 은 전체 데이터 세트를 무작위로 섞은 후, 매 반복(iteration) 마다 하나의 데이터 샘플만을 사용해 손실 함수의 기울기를 계산하고 즉시 매개변수를 업데이트 하는 방법이다. 첫 번째 샘플로 기울기를 계산해 매개변수를 업데이트한 뒤, 두 번째 샘플로 다시 기울기를 계산해 모든 매개변수를 업데이트하는 식으로 진행된다. 이렇게 각 데이터 샘플에 대해 기울기를 계산하고 업데이트하는 과정을 최적의 매개변수 값에 도달할 때까지 반복한다. 이 방식은 계산 속도가 빠르지만, 기울기 계산의 변동성이 커서 수렴 과정에서 진동이 발생할 수 있다.


미니배치 경사 하강법 (Mini Batch Gradient Descent, MGD)

미니배치 경사 하강법(Mini Batch Gradient Descent, MGD) 는 전체 훈련 데이터를 여러 작은 그룹인 미니배치(mini-batch)로 나누어 경사 하강법을 수행하는 방식이다. 각 Iteration에서 하나의 미니배치를 사용하여 손실 함수의 기울기를 계산한 후, 그 평균 기울기를 사용하여 매개변수를 업데이트한다.

wongakim-99 commented 2 days ago

기계학습에서 목적함수가 무엇인지 설명하시오.

기계 학습에서 목적 함수(objective function)는 모델이 최적화하려고 하는 함수를 의미한다. 목적 함수는 모델이 얼마나 잘 학습하고 있는지 평가하는 기준 역할을 한다. 일반적으로 목적 함수는 모델의 예측이 실제 값과 얼마나 차이가 나는지 측정하며, 이 차이를 줄이는 것이 목표이다.


목적 함수의 역할

모델이 학습하는 동안, 목적 함수는 모델이 얼마나 오차를 만들고 있는지를 나타내며, 이 오차를 줄이기 위해 모델이 가중치(weight)를 조정하게 된다. 기계 학습의 목표는 목적 함수의 값을 최소화 하는 것, 즉 오차를 가능한 한 줄이는 것이다.

wongakim-99 commented 2 days ago

퍼셉트론의 병렬연결(은닉노드의 증가) 직렬연결(은닉층의 층개수 증가)의 의미를 설명하시오.

1. 병렬 연결 : 은닉 노드의 증가


2. 직렬 연결 : 은닉층의 층 개수 증가

직렬 연결로 은닉층이 많아지면, 신경망은 더 깊은 구조를 가지며, 데이터의 복잡한 계층적 패턴을 점차적으로 학습한다. 이는 신경망이 비선형적인 패턴을 효과적으로 처리할 수 있도록 도와준다.

wongakim-99 commented 1 day ago

9. 오류역전파 알고리즘을 간단히 설명하고 한계점을 논의하시오.

오류 역전파(Backpropagation) 알고리즘의 정의

오류역전파(Backpropagation)는 신경망(Neural Network)이 학습하는 방법 중 하나로, 신경망이 더 똑똑 해지도록 도와주는 방법이라고 생각하면 된다. 일단 신경망이 어떻게 학습하는지 기본 원리부터 이해해보자.

1. 신경망의 기본 개념


2. 신경망이 예측하는 과정


3. 오류역전파란?


4. 오류역전파의 목적


5. 쉽게 설명하는 오류역전파 과정


오류 역전파(Backpropagation) 알고리즘의 한계점

  1. 기울기 소실(Vanishing Gradient) 문제
    • 문제 : 깊은 신경망(레이어가 많은 신경망)을 학습할 때, 역전파 과정에서 기울기가 점점 작아지거나 사라지는 문제가 발생한다. 오류를 출력층에서 입력층에서 전파할 때, 각 층에서 미분값(기울기)가 계속 곱해지는데, 이 값이 작을 경우 결국에는 기울기가 거의 0에 수렴하게 된다. 이렇게 되면 초기 층들(입력에 가까운 층들)은 학습이 거의 이루어지지 않게 되어 신경망 전체가 제대로 학습되지 않는 문제가 생긴다.
    • 영향 : 깊은 신경망에서는 모델이 하위층을 효과적으로 학습하지 못해, 복잡한 패턴을 학습하는데 한계가 생긴다.