Python으로 배우는 뉴런과 활성화 함수
인공 뉴런은 아주 작은 함수입니다. 각 입력에 가중치를 곱하고 바이어스를 더한 뒤, 그 결과를 활성화 함수에 통과시켜 얼마나 강하게 "발화"할지 정합니다.
쉬운 말로 이해하는 개념
인공 뉴런은 아주 작은 함수입니다. 각 입력에 가중치를 곱하고 바이어스를 더한 뒤, 그 결과를 활성화 함수에 통과시켜 얼마나 강하게 "발화"할지 정합니다.
순수 Python으로 인공 뉴런을 만듭니다. 입력의 가중합에 바이어스를 더하고 sigmoid나 ReLU에 통과시킵니다.
핵심 아이디어
- 가중치는 각 입력이 얼마나 중요한지 나타내고, 바이어스는 결과를 위아래로 이동시킵니다.
- 활성화 함수가 없으면 뉴런을 여러 층 쌓아도 직선(선형) 모델밖에 되지 않습니다.
- sigmoid는 0과 1 사이 값을 출력하므로 확률에 잘 맞습니다.
- ReLU는 계산이 빠르며 현대 신경망의 은닉층에서 흔히 쓰입니다.
언제 사용하나요?
- 신경망과 AI 라이브러리 내부에서 무슨 일이 일어나는지 이해합니다.
- 해당 챌린지에서 직접 구현하기 전에 아이디어를 익힙니다.
- 머신러닝 강의, 면접, 프로젝트를 준비합니다.
직접 움직여 보기
슬라이더로 입력, 가중치, 바이어스를 바꿔 보세요. 가중합 z가 sigmoid와 ReLU 곡선 위에서 움직이는 모습을 볼 수 있습니다.
예제 코드
main.py
import math
# A neuron multiplies each input by a weight, adds them up and adds a bias.
def dot(a, b):
return sum(x * y for x, y in zip(a, b))
def sigmoid(z):
return 1 / (1 + math.exp(-z)) # squashes any number into (0, 1)
def relu(z):
return max(0.0, z) # keeps positives, turns negatives into 0
inputs = [0.5, -1.0, 2.0]
weights = [0.8, 0.2, -0.5]
bias = 0.1
z = dot(inputs, weights) + bias # weighted sum
print("weighted sum z =", round(z, 3))
print("sigmoid(z) =", round(sigmoid(z), 3))
print("relu(z) =", relu(z))
# The activation decides how strongly the neuron "fires".
for value in [-2, 0, 2]:
print(f"z={value:>2} sigmoid={sigmoid(value):.3f} relu={relu(value)}")
예상 출력
weighted sum z = -0.7
sigmoid(z) = 0.332
relu(z) = 0.0
z=-2 sigmoid=0.119 relu=0.0
z= 0 sigmoid=0.500 relu=0.0
z= 2 sigmoid=0.881 relu=2
작동 원리
dot()은 가중합 z를 계산합니다. sigmoid는 z를 0과 1 사이 값으로 압축하고, ReLU는 양수는 그대로 두고 음수는 0으로 바꿉니다. 반복문은 각 활성화 함수가 음수, 0, 양수 입력에 어떻게 반응하는지 보여 줍니다.
값을 변경하고 Python 설치 없이 CodeUtility 온라인 Python 컴파일러에서 실행하세요.
연습 문제
입력값과 경계 조건을 바꾸고 더 큰 데이터에서도 동작을 확인하세요.
- 입력이나 가중치를 바꾸고 실행하기 전에 출력을 예상해 보세요.
- 중간 값을 출력해 계산의 각 단계를 따라가 보세요.
- 아래에 연결된 챌린지를 풀며 아이디어를 직접 구현해 보세요.
챌린지로 연습하기
이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.
- 두 벡터의 내적 두 벡터를 원소별로 곱한 뒤 모두 더합니다. 모든 뉴런의 핵심 연산입니다. 쉬움
- 활성화 함수 리스트의 모든 값에 sigmoid, ReLU, Leaky ReLU 또는 tanh를 적용합니다. 쉬움
- 하나의 인공 뉴런 입력의 가중합에 편향을 더하고 sigmoid를 통과시켜 뉴런 하나의 출력을 계산합니다. 쉬움