인공 신경망이란 무엇인가?
인공 신경망(Artificial Neural Network)은 생체 신경망의 기능을 기반으로 하는 시스템으로, 생물학적 신경 시스템을 모방한 시뮬레이션이라고 할 수 있습니다. 인공 신경망의 특징은 다양한 구조가 존재하며, 구조에 따라 서로 다른 알고리즘 방식이 요구된다는 점입니다. 하지만 복잡한 시스템처럼 보여도 그 본질적인 원리는 생각보다 단순합니다.
신경망은 신호 처리 분야에서 가장 유용한 도구 중 하나로 꼽힙니다. 이 분야는 매우 학제 간(interdisciplinary)적인 성격을 띠지만, 여기서는 공학적 관점에서 살펴보겠습니다.
공학적 관점에서의 신경망의 두 가지 역할
공학 분야에서 신경망은 크게 두 가지 핵심 기능을 수행합니다. 하나는 패턴 분류기(pattern classifier)이고, 다른 하나는 비선형 적응 필터(non-linear adaptive filter)입니다.
인공 신경망은 동적인 시스템으로, 데이터로부터 입력과 출력 사이의 관계(입출력 함수)를 스스로 학습하는 비선형 시스템입니다. '적응적(adaptative)'이라는 표현은 시스템의 매개변수가 작동 중에 변경된다는 의미이며, 이 과정을 흔히 훈련(training) 단계라고 부릅니다.
훈련 단계가 끝나면 신경망의 매개변수는 고정되며, 시스템은 주어진 문제를 해결하는 단계, 즉 테스트(testing) 단계에 들어갑니다. 인공 신경망은 성능 평가를 개선하거나 특정 내부 제약 조건을 만족시키기 위해 체계적이고 단계별 절차에 따라 구축되는데, 이러한 절차를 일반적으로 학습 규칙(learning rule)이라고 합니다.
인공 신경망 설계 시 고려해야 할 문제
인공 신경망을 실제로 설계할 때는 다음과 같은 사항들을 반드시 검토해야 합니다.
1. 입력층 노드 수 결정
입력층에 배치할 노드의 개수를 정해야 합니다. 일반적으로 수치형 또는 이진(binary) 입력 변수마다 하나의 입력 노드를 할당하는 방식이 사용됩니다. 입력 변수가 범주형(categorical)이라면 각 범주 값마다 노드를 하나씩 만들거나, k개의 값을 지니는 변수를 [log2k]개의 입력 노드로 인코딩하는 방법도 활용할 수 있습니다.
2. 출력층 노드 수 결정
출력층에 생성할 노드의 개수도 정해야 합니다. 두 클래스(two-class) 문제라면 출력 노드 하나면 충분하지만, k개의 클래스로 구성된 문제에는 k개의 출력 노드가 필요합니다.
3. 네트워크 토폴로지 선택
은닉층(hidden layer)과 은닉 노드의 개수, 피드포워드(feed-forward) 방식인지 순환(recurrent) 구조인지 등 네트워크 위상(topology)을 결정해야 합니다. 목표 함수의 형태는 연결 가중치, 은닉 노드와 은닉층의 수, 노드의 편향(bias), 활성화 함수의 종류에 따라 달라집니다. 최적의 토폴로지를 찾는 일은 결코 쉬운 작업이 아닙니다.
한 가지 방법은 충분히 많은 수의 노드와 은닉층을 가진 완전 연결(fully connected) 네트워크에서 출발하여, 더 적은 수의 노드로 모델 구축 과정을 반복하는 것입니다. 다만 이 방식은 계산 부담이 클 수 있습니다. 대안으로, 모델 구축을 반복하는 대신 일부 노드를 제거하고 모델 평가 과정을 반복하여 적절한 모델 복잡도를 선택하는 방법도 있습니다.
4. 가중치와 편향 초기화
네트워크의 가중치와 편향값을 초기화해야 합니다. 일반적으로 무작위(random) 할당으로도 충분합니다.
5. 결측값 처리
훈련 데이터에 결측값(missing value)이 포함된 경우, 해당 샘플을 삭제하거나 가장 가능성 높은 값으로 대체해야 합니다.