딥러닝은 퍼셉트론 (Perceptron) 에서 시작한 간단한 개념으로, 여러 층을 가진 신경망과 역전파 알고리즘을 만나면서 딥러닝이라는 강력한 기술로 발전하게 되었다
신경망을 구성하는 퍼셉트론의 작동 방식과 학습 방법을 간단하게 이해해 보는 시간을 가지면서 딥러닝의 원리에 대해 조금 더 쉽게 접근해보자
오늘 알아보기
1. 퍼셉트론
2. 신경망 (퍼셉트론 확장판?)
3. 딥러닝의 학습 방법
퍼셉트론
퍼셉트론은 인공 신경망의 기본 단위로, 인간의 뇌가 정보를 처리하는 방식을 모방하려는 시도에서 시작되었다 퍼셉트론은 하나의 뉴런과 같다고 할 수 있다 각 입력에 가중치(Weight)를 부여하고, 이 가중치를 바탕으로 최종 출력값을 결정하는 방식이다
퍼셉트론의 구조와 작동 방식으로 하나의 예시를 들어보자
예시: 이메일이 스팸인지 아닌지 구별하기
- 입력 데이터: "무료", "광고"와 같은 단어의 빈도수
- 가중치: 예를 들어, "무료"는 스팸일 가능성이 높으므로 가중치를 2, "광고"는 가중치를 1로 설정
- 출력 조건: 가중치 합이 2 이상일 때 "스팸"으로 출력
이제, 퍼셉트론은 입력값의 가중치 합을 계산하여 스팸 여부를 판단할 수 있다 아래 코드를 코랩이나 아나콘다등의 파이썬을 실행할수 있는 곳에서 실행해보자 퍼셉트론의 작동 방식을 알아볼수 있다
import numpy as np
# 입력 데이터- 각 단어가 문장에 포함된 경우 1, 포함되지 않으면 0
# 예: ["무료", "광고"]의 빈도에 따라 스팸 여부를 결정
inputs = np.array([
[1, 1], # "무료"와 "광고"가 모두 포함된 경우
[1, 0], # "무료"만 포함된 경우
[0, 1], # "광고"만 포함된 경우
[0, 0] # 둘 다 포함되지 않은 경우
])
# 실제 정답 (1은 스팸, 0은 스팸 아님)
labels = np.array([1, 1, 0, 0])
# 가중치 초기화
weights = np.array([1.0, 1.0]) # "무료"와 "광고"의 초기 가중치를 설정하자
bias = -1.5 # 임계값 역할을 하는 바이어스이다
# 퍼셉트론 함수 정의
def perceptron(x):
return 1 if np.dot(weights, x) + bias > 0 else 0
# 퍼셉트론이 각각의 입력을 예측하도록 실행
for i, input_data in enumerate(inputs):
output = perceptron(input_data)
print(f"입력: {input_data}, 실제: {labels[i]}, 예측: {output}")
입력 노드 두 개가 각각 "무료", "광고" 단어의 빈도를 나타내고, 출력 노드에서는 "스팸" 또는 "스팸 아님"으로 결정되는 형태이다
신경망 (퍼셉트론 확장판?)
단일 퍼셉트론으로는 XOR 같은 복잡한 문제를 해결할 수 없기 때문에, 여러 퍼셉트론을 층층이 연결한 신경망이 필요하다 신경망은 여러 퍼셉트론이 함께 협력하여 더 복잡하고 정교한 문제를 풀 수 있도록 설계된 구조이다
층은 다음과 같다
입력층(Input Layer): 처음 데이터를 받아들이는 층이다
은닉층(Hidden Layer): 여러 개의 퍼셉트론이 연결된 중간층으로, 데이터의 패턴을 학습한다
출력층(Output Layer): 최종 결과를 출력한다
이미지 분류를 예시로 들어보자
이미지를 신경망에 입력하여 고양이인지 강아지인지를 구분하는 모델을 훈련한다고 가정했을때
1. 입력층: 이미지의 각 픽셀 값을 신경망의 입력값으로 넣는다
2. 은닉층: 여러 개의 퍼셉트론이 모여 이미지를 분석하고, 패턴을 학습한다
3. 출력층: 최종 결과로 "고양이" 또는 "강아지"로 분류된다
아래의 이미지를 보며 분류되는 과정을 간단하게 이해하면 좋을듯 하다
딥러닝의 학습 방법
컴퓨터는 어떻게 스스로 학습할까? 딥러닝에서 중요한 것은 손실 함수(Loss Function)와 역전파(Backpropagation)이다
손실 함수란 예측 결과가 실제 정답과 얼마나 차이가 있는지를 계산하는 함수이다 이 값(오차값)이 작을수록 모델이 정확한 예측을 하고 있다는 뜻이다
역전파란 손실 함수에서 계산된 오차를 바탕으로, 신경망의 가중치를 조정하는 방법이다 이 과정을 여러 번 반복하면서 신경망은 점점 더 정확한 예측을 할 수 있도록 학습하게 된다
오차를 줄이는 학습에 대해 예시를 들자면
1. 모델이 처음 예측한 결과가 실제 정답과 얼마나 차이가 나는지 측정한다 예를 들어, 고양이 사진을 "강아지"라고 예측했다면 오차가 크게 된다 반대로 고양이 사진을 고양이라고 예측했다면 오차가 적어지게 된다고 볼수 있다
2. 이 오차를 바탕으로 역전파 알고리즘을 사용해 신경망의 가중치를 조정하여 점점 더 정확하게 예측하게 만든다
큰 오차를 가진 모델이 학습을 반복하면서 오차가 줄어드는 모습이다 오차가 0이 될수는 없지만 최대한 수렴하도록 하는 것이 학습이다
오늘은 간단하게 퍼셉트론에서 딥러닝의 학습 방법에 대해 알아보았다 다음은 이 손실 함수와 역전파를 어떻게 이용하여 학습하는지 알아보는 시간을 가져보도록 하자