Allen's 데이터 맛집

인공 신경망(ANN)이 그래서 뭔데?! 본문

Machine Learning/머신러닝

인공 신경망(ANN)이 그래서 뭔데?!

Allen93 2024. 1. 19. 01:51
이번에는 데이터 분석과 머신 러닝 분야에서 광범위하게 활용되고 있는 인공 신경망(ANN) 모델에 대해 알아보겠습니다. 여러분이 딥러닝과 신경망에 대해 처음으로 배우는 경우, 이 글이 도움이 되기를 바랍니다.




 

인공 신경망(ANN)이란?


인공 신경망은 생물학적 신경망에서 영감을 받아 만들어진 머신 러닝 모델입니다. 이 모델은 입력층, 은닉층, 출력층으로 구성되어 있으며, 각각의 뉴런은 가중치와 활성화 함수를 통해 정보를 전달합니다.

 


기본 구조 이해하기

ann 인공신경망

이미지출처 : https://steemit.com/kr/@jihangmoogan/deep-learning-3-artificial-neural-network-ann

 

1. 입력층(Input Layer):
입력 데이터를 받아들이는 층입니다.
각각의 입력은 하나의 뉴런에 연결되어 있습니다.


2. 은닉층(Hidden Layer):
모델의 학습이 이루어지는 층으로, 여러 층으로 구성될 수 있습니다.
각 은닉층의 뉴런은 이전 층의 모든 뉴런과 연결되어 있습니다.
은닉층을 더 많이 사용하면 모델이 더 복잡한 패턴을 학습할 수 있습니다.


3. 출력층(Output Layer):
최종 예측을 출력하는 층입니다.
분류 문제인 경우 클래스의 확률 값을, 회귀 문제인 경우 예측 값을 출력합니다.

 


활성화 함수와 역전파


1. 활성화 함수(Activation Function):
뉴런의 출력을 결정하는 함수로, 주로 비선형 함수를 사용합니다.
대표적인 활성화 함수로는 ReLU(Rectified Linear Unit), Sigmoid, Tanh 등이 있습니다.


2. 역전파(Backpropagation):
신경망의 학습 과정 중 오차를 최소화하기 위해 가중치를 조정하는 알고리즘입니다.
출력층에서 시작하여 역방향으로 오차를 전파하며 가중치를 업데이트합니다.

 

현업 활용 예시: 이미지 분류


배경:이미지 분류 모델을 구축하여 다양한 카테고리로 이미지를 분류하고자 합니다.
해결 방법:딥러닝의 대표적인 모델 중 하나인 인공 신경망(ANN)을 사용하여 이미지 분류 모델을 구축합니다.

from keras.models import Sequential
from keras.layers import Dense
from keras.datasets import mnist
from keras.utils import to_categorical

# MNIST 데이터셋 로드
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 데이터 전처리
train_images = train_images.reshape((60000, 28 * 28)).astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28)).astype('float32') / 255

train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

# 인공 신경망 모델 생성
model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(28 * 28,)))
model.add(Dense(10, activation='softmax'))

# 모델 컴파일
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# 모델 학습
model.fit(train_images, train_labels, epochs=5, batch_size=64, validation_split=0.2)

# 모델 평가
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f'Test Accuracy: {test_acc * 100:.2f}%')

 

이 예시에서는 Keras를 사용하여 간단한 인공 신경망 모델을 만들어 MNIST 숫자 이미지를 분류합니다. 인공 신경망은 이미지, 텍스트, 음성 등 다양한 데이터 유형에서 활용되고 있으며, 이를 통해 현업에서는 고도의 복잡성을 가진 문제에 대한 솔루션을 개발하고 있습니다.



현업에서는 더 깊은 신경망 아키텍처, 전이 학습, 데이터 증강 등을 포함하여 인공 신경망을 더욱 효과적으로 사용하고 있습니다. 

728x90