오늘 나는 (TIL)

[TIL 240906] 딥러닝 속 ANN (Artificial Neural Network)과 GA (Genetic Algorithm)

thebuck104 2024. 9. 6. 16:26

 

딥러닝

"컴퓨터가 스스로 생각을 할 수 있을까?" 라는 질문에서 시작한 인공지능 (Artificial Intelligence, AI) 는 이제는

"컴퓨터는 우리가 명시적으로 지시한 특정 목표를 달성할 수 있는가?"의 생각 아래 머신 러닝 (Machine Learning, ML)의 단계까지 도달하게 되었다. 질문과 해답을 넣어주면 둘 사이의 규칙을 알려주는 머신 러닝은 이제는 인간의 신경망 처럼 질문과 해답 사이에 수많은 은닉층 (Hidden Layer)을 통해 더욱 복잡한 규칙을 구현할 수 있게 되었으며 진화 알고리즘의 자연선택에서 영감을 받은 유전적 알고리즘 또한 최적화 문제에 많이 사용되고 있다.

 

Artificial Neural Network

ANN은 기본적으로 데이터로부터의 학습이 필요하다. 이 때, 데이터와 라벨을 입력받아 오차를 최소화 하는 방향으로 내부 가중치와 편향을 조정하며 데이터를 학습한다. 이 학습은 ANN 속 입력층, 은닉층, 출력층 으로 되어있는 뉴런층 (Neural Network)로 이루어지며 각 층의 뉴런들은 상호연결되어 있다. 이 때, 뉴런에서는 ReLU나 시그모이드 같은 활성화 함수 등을 통해 결과를 도출하고, 다음 뉴런으로 결과를 다시 입력한다. 이 과정에서 ANN은 나아가 기울기 하강법 (Gradient Descent)을 통해 연속적이고 지속적으로 가중치를 업데이트 한다.

 

ANN은 보통 이미지 분류, 음성 인식, 자연어 처리, 자율주행 등 패턴인식과 예측 작업에 주로 사용되며, 학습은 많은 양의 레이블이 되어있는 데이터를 필요로 한다. 그렇기에 복잡한 패턴을 잘 인식하고, CNN이나 RNN 처럼 다양한 구조를 통해 여러 작업에 응용할 수 있다. 하지만, 데이터 학습 과정이 그만큼 다량의 리소스를 요구할 경우가 많고, Overfitting의 문제가 발생할 수도 있기에, 하이퍼파라미터 튜닝이 중요하다.

 

 

Genetic Algorithm

GA의 경우 자연 선택 (Natural Selectoin) 에 서 영감을 받아 문제를 해결하는 최적화 알고리즘이다. 이 경우, 복잡한 최적화 문제를 해결하는데 많이 사용되는 알고리즘이다. GA는 선택 (Selection), 교차 (Crossover), 돌연변이 (Mutation) 등의 생물학적 원리를 이용해 답을 점진적으로 개선한다. 이 때, ANN의 활성화 함수와 비슷한 개념으로 적합도 함수를 사용해 값의 품질을 평가한다. 이런 식으로 여러 세대에 걸쳐 값을 진화시키며, 최적화 문제의 최종 값을 도출해 낸다. 

 

기존 ANN의 '학습' 개념과는 다르게, GA는 여러가지 다양한 값을 생성해내고, 이들을 기반으로 진화 과정을 시뮬레이팅 하며 최적화 값을 도출해낸다. 그렇기에 GA는 집단 기반 탐색 (Population Based Search)를 기반으로 연속적 탐색 보다는 개별적 해결 방법을 평가하게 된다. 이러한 시뮬레이션들을 통해 경로 탐색, 일정 관리, 설계 최적화 등 여러 최적하 문제를 해결하는 데 사용되며, 복잡하고 큰 탐색 공간에서 최적 또는 근접 최적의 값을 찾는 데 유용하게 사용된다. 이러한 방법을 통해 기울기 정보가 없는 문제도 해결이 가능하지만, 계산속도가 느릴 수 있으며, 완벽히 전체적인 최적화 값을 찾지 못할 가능성도 있다. 

 

Gene, Chromosome and Population

 

Selection, Crossover and Mutatoin

 

Neuroevolution Network

신경망 진화 네트워크는 이러한 ANN과 GA의 특성을 합친 알고리즘으로, 유전 알고리즘을 통해 ANN의 구조나 가중치를 진화시킬 수 있다. 예컨대, 하이퍼파라미터나 네트워크 속 층들의 토폴로지를 최적화해줄 수 있는 것이다.