티스토리 뷰

인공지능은 사고나 학습 등 인간이 가진 능력을 컴퓨터를 통해 구현하는 기술입니다. 인공지능은 컴퓨터의 처리 방식과 다르게, 사람이 원하는 결과 데이터를 제공하면 인공지능이 알아서 처리 방법을 만들어 사람에게 처리 결과를 보여줍니다.

컴퓨터 처리 방식
인공지능 처리 방식

 

인공지능에는 딥러닝과 머신러닝이 있는데, 가장 큰 차이 점은 머신러닝은 학습에 필요한 feature(특징)을 사람이 직접 제공해야 하지만, 딥러닝은 스스로 feature를 추출해 데이터 학습에 적용할 수 있는 것입니다.

 

 

딥러닝이란?

머신 러닝의 특정한 한 분야로서 인공 신경망(Artifiaial Neural Network)의 층을 연속적으로 깊게 쌓아 올려 데이터를 학습하는 방식을 말합니다. Deep 하다는 의미는 층을 연속적으로 쌓아 올렸기 때문에 붙은 단어입니다. 딥러닝은 굉장한 양의 연산을 필요로 하기 때문에 하드웨어가 발달하지 않은 초기에는 어려웠지만 기술이 발달함에 따라 슈퍼컴퓨터를 기반으로 이러한 문제점을 해결했으며, 병렬 연산에 최적화된 GPU가 개발되면서 딥러닝 기술이 발전하게 되었습니다.

 

 

딥러닝 알고리즘 종류 (ANN, RNN, CNN, RNN)

ANN 기법의 여러 문제가 해결되면서 모델 내에 은닉층을 많이 늘려 학습의 결과를 향상시키는 방법으로 등장한 DNN(Deep Neural Network)이 있습니다. 컴퓨터가 스스로 분류레이블을 만들어 내고, 공간을 왜곡하고 데이터를 구분 짓는 과정을 반복하여 최적의 구분선을 도출할 수 있습니다. 많은 데이터와 반복학습이 필요하며, 사전 학습과 오류역전파 기법을 통해 현재 널리 사용되고 있습니다. CNN, RNN, LSTM, GRU 등의 방법론이 DNN을 응용한 알고리즘입니다.

 

 

1. ANN (Artificial Neural Network)

 

딥러닝은 인공 신경망(ANN)을 기초로 하고 있는대, 인공신경망이라고 불리우는 ANN은 사람의 신경망 원리와 구조로 모방하여 만든 기계학습 알고리즘입니다. 인간의 뇌에서 뉴런들이 어떤 신호, 자극 등을 받고, 그 자극이 어떠한 임계값을 넘어서면 결과 신호를 전달하는 과정에서 착안되었습니다. 

ANN은 입력 값을 이용해 인공 뉴런의 출력 값을 계산하고, 인공 뉴런이 계산한 출력 값과 사용자가 기대하는 출력 값을 비교합니다. 이때 기대하는 출력 값을 생성할 수 있도록 가중치를 조절합니다. 하지만 ANN은 이러한 학습 과정에서 최적의 파라미터를 찾기 어렵고 학습 시간이 너무 느리다는 문제가 있습니다.
(입력 데이터 간의 순서나 시간의 의존성을 고려하지 않기 때문에, 시계열 등의 데이터 처리에는 한계가 있습니다.)

 

 

2. DNN (Deep Neural Network)


ANN 기번의 여러 문제가 해결되면서 모델 내 은닉층을 많이 늘려서 학습의 결과를 향상시키는 방법이 등장하였고, 이를 DNN(Deep Neural Network)라고 합니다. DNN은 은닉층을 2개 이상 지닌 학습 방법을 뜻합니다. 컴퓨터가 스스로 분류레이블을 만들어 내고 공간을 왜곡하고 데이터를 구분 짓는 과정을 반복하여 최적의 구분선을 도출해 냅니다. 많은 데이터와 반복학습이 팔요하며 사전학습과 오류역전파 기법을 통해 현재 널리 사용되고 있습니다. 그리고 DNN을 응용한 알고리즘이 바로 CNN, RNN입니다. (이 외에도 LSTM, GRU 등이 있습니다.)

 

 

3. CNN(합성곱신경망: Convolution Neural Network)

 

기존의 방식은 데이터에서 지식을 추출해 학습이 이루어졌지만, CNN은 데이터의 특징을 추출하여 특징들의 패턴을 하악하는 구조입니다. CNN은 사람의 시신경 구조를 모방한 것으로, 데이터를 feature로 추출하여 이 feature들의 패턴을 파악하는 구조입니다. feature추출은 Convolution 과정과 Pooling 과정을 통해 진행됩니다. CNN은 Convolution Layer와 Pooling Layer를 복합적으로 구성하여 알고리즘을 만듭니다.

CNN은 현재 가장 널리 사용되는 신경망 유형입니다. CNN을 이용하면 수동으로 특징을 추출할 필요가 없어지기 때문에, 이미지를 분류하는 데 사용할 특징을 식별하지 않아도 되며, 자동화된 특징 추출은 Object classification과 같은 컴퓨터 비전 작업에서 딥 러닝 모델을 매우 정확하게 구현한다는 장점을 가지고 있습니다.

Convolution: 데이터를 추출하는 과정으로 각 성분의 인접 성분을 조사해 특징을 파악하고, 도출된 특징을 추상화하여 특정 층으로 압축하여 이렇게 도출된 층을 Convolution Layer라고 부릅니다.

Pooling: Convolution과정을 거친 Layer의 사이즈를 줄이는 과정입니다. 데이터 사이즈를 줄여 노이즈를 없애고 일괄적인 feature를 제공합니다. 보통 Convolution 과정에서 만들어진 feature의 가장 큰 값만 가져와 사이즈를 줄이는 데, 이것을 max pooling이라고 합니다.

 

 

 

4. RNN (순환신경망: Recurrent Neural Network)

 

RNN은 입출력을 시퀀스 단위로 처리하는 시퀀스 모델입니다. 앞서 나온 신경망은 은닉층에서 활성화 함수를 지닌 모든 값은 오직 출력층 방향으로만 향했습니다. 그러나 RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로 보내고, 다시 은닉층 노드의 다음 계산의 입력을 보내는 특징을 가지고 있습니다. 이순환구조를 이용하여 과거의 학습 Weigt(가중치)를 통해 현재 학습에 반영합니다. 기존의 지속적이고 반복적이며 순차적인 데이터 학습의 한계를 해결한 알고리즘으로, 현재의 학습과 과거의 학습의 연결이 가능합니다.

 

 

내가 생각하는 알고리즘

사실 알고리즘이라고 하면, DFS, BFS, 완전 탐색, 다익스트라, 이분 탐색 등 코딩 테스트 하면서 배운 것만 생각하고 있었는데 딥러닝 알고리즘을 공부하면서 알고리즘의 종류는 다양하고 세상엔 무수한 알고리즘이 존재할 수도 있겠다고 생각했습니다. CNN, RNN과 같은 알고리즘을 사용하고 또 응용해서 영상도 인식하고, 텍스트도 분류하고 번역도 하는 등 AI를 기술의 기반이 되어 편리한 세상을 만들어가는데 중요한 알고리즘이 아닐까 싶습니다.

'ICT-AI-WEB 교육' 카테고리의 다른 글

Keras  (0) 2023.09.01
원-핫 인코딩(One-hot encoding)  (1) 2023.08.31
Python 기본 문법  (0) 2023.08.30
생성형(Generative) AI란?  (0) 2023.08.24
댓글