본문 바로가기
카테고리 없음

인공지능 자료 처리의 동적 구조

by 타로101 2024. 5. 5.

자료 처리 시스템의 속도를 높이는 전략 중 하나는 계산 그래프에 동적 구조를 가진 시스템을 구축하는 것입니다. 이는 여러 신경망 중에서 주어진 입력을 처리할 때 알맞은 것을 동적으로 선택하고, 개별 신경망이 입력의 특정 정보를 동적으로 결정하는 것을 가능케 합니다. 이러한 동적 구조를 조건부 계산이라고도 합니다. 또한, 시스템의 실행 속도를 높이기 위해 입력의 관련된 부분만 필요할 때 계산하도록 설계하는 것도 중요합니다.

 

인공지능
인공지능


계산의 동적 구조는 소프트웨어 공학에서 중요한 원리 중 하나입니다. 이는 신경망에서도 적용됩니다. 가장 간단한 형태는 특정 입력에 따라 적용할 신경망의 일부를 동적으로 선택하는 것입니다.

 

분류기 중첩과 물체 검출

과거부터 분류기의 추론을 가속하기 위해 분류기들의 중첩이 사용되어 왔습니다. 특이한 물체를 검출하는 경우에도 이러한 중첩 전략을 활용할 수 있습니다. 정확한 물체 검출을 위해서는 높은 성능을 가진 분류기를 사용해야 하지만, 이는 실행 비용이 많이 듭니다. 그러나 검출하려는 물체가 자주 나타나지 않으므로 물체가 없는 입력을 빠르게 거르는 것이 중요합니다. 이를 위해 여러 분류기를 훈련합니다. 첫 번째 분류기는 낮은 성능을 가진 모델을 사용하며, 재현율을 높이기 위해 훈련됩니다. 중간 과정의 분류기들은 모델의 성능을 점진적으로 높이고, 마지막 분류기는 높은 정밀도를 가지고 훈련됩니다. 이러한 방식으로 모든 보기에 대해 완전한 추론 비용을 소비하지 않으면서도 물체의 존재를 확신할 수 있습니다.

 

중첩된 신경망 구현 방법과 응용

이러한 중첩된 신경망을 구현하는 방법에는 두 가지 주요 접근 방식이 있습니다. 하나는 중첩의 후반부에 있는 신경망들의 수용력을 개별적으로 높이는 것이고, 다른 하나는 중첩의 개별 신경망들의 수용력을 조합하여 높은 수용력을 달성하는 것입니다. 이러한 방법은 얼굴 검출기나 번지수 전사와 같은 다양한 응용 분야에서 사용될 수 있습니다.

 

동적 구조의 다양한 형태

결정 트리 자체도 동적 구조의 한 예입니다. 각 노드는 주어진 입력에 대해 평가해야 할 부분 트리를 동적으로 결정하기 때문입니다. 딥러닝과 결합하여 동적 구조를 형성하는 방법의 하나는 각 노드가 신경망을 사용하여 분기를 결정하는 결정 트리를 훈련하는 것입니다. 그러나 주로 추론 계산 속도를 높이는 것이 목표이므로 이 방법은 잘 사용되지 않았습니다.
게이터는 동적 구조를 가진 신경망의 한 예입니다. 여러 전문가망 중 하나를 선택하여 현재 입력에 대한 출력을 계산합니다. 초기 버전에서는 게이터가 각 전문가망마다 여러 가중치를 산출하고 가중 평균을 최종 결과로 출력했습니다. 이러한 방식은 계산 비용을 줄이지 않았지만, 게이터가 하나의 전문가망만 선택하도록 변경하면 훈련 시간과 추론 시간을 상당히 줄일 수 있습니다. 그러나 이 방법은 조합적이지 않으므로 게이트 결정 개수가 적어야 합니다. 여러 부분집합을 선택해야 할 때는 유연한 스위치를 사용할 수 없습니다. 이러한 문제를 해결하기 위해 연구자들은 다양한 접근 방식으로 조합적 게이터를 훈련했습니다. 이를 위해 Bengio는 여러 기울기 추정량을 실험하고, Bacon과 Bengio는 강화 학습 기법을 사용하여 일종의 조건부 드롭아웃을 학습하는 방법을 연구했습니다. 이러한 접근 방식은 계산 비용을 줄이면서도 근사의 품질을 유지할 수 있었습니다.
또 다른 동적 구조는 한 은닉 단위가 여러 단위 중 하나를 스위치를 통해 선택하여 입력받는 방식입니다. 이러한 동적 경로 결정은 주의 메커니즘으로 간주할 수 있습니다. 그러나 대규모 응용에서 이러한 엄격한 스위치의 효과는 아직 입증되지 않았습니다. 현재, 일반적으로 여러 가능한 입력에 대해 가중 평균을 적용하는 접근 방식이 주로 사용되며, 이러한 방법은 동적 구조가 제공하는 계산상의 이점을 활용하지 못합니다.

 

동적 경로 결정과 병렬성 감소 문제

동적 구조 시스템의 활용에서 가장 큰 문제는 서로 다른 입력에 대해 다른 코드 경로로 분기하므로 병렬성이 줄어든다는 것입니다. 동적 구조가 존재하면 신경망의 연산이 단순한 행렬 곱셈이나 보기 미니배치에 대한 합성곱으로 서술되는 연산으로 줄어들지 않습니다. 이러한 특화된 서브루틴을 구현하기는 어려워서 CPU 구현에서는 실행 속도가 떨어지고 GPU 구현에서는 메모리 트랜잭션이 줄어들고 워프의 스레드를 차례로 실행해야 하므로 실행 속도가 느려집니다. 이러한 문제를 완화하기 위해 보기들을 실행 경로에 따라 여러 그룹으로 나누고 동시에 처리하는 전략을 사용할 수 있습니다. 그러나 이런 작업 부하 분할 전략은 실시간 환경에서 부하 불균형 문제를 일으킬 수 있습니다. 예를 들어, 한 컴퓨터에 중첩의 첫 단계를 맡기고 다른 컴퓨터에 중첩의 마지막 단계를 맡기면 전자는 과부하가 발생할 수 있고 후자는 할 일이 없이 놀게 될 수 있습니다. 또한, 신경망 결정 트리의 각 노드를 서로 다른 컴퓨터가 처리하게 하는 경우에도 이와 비슷한 부하 불균형 문제가 발생할 수 있습니다.

 

결론

자료 처리 시스템의 속도를 높이는 전략 중 하나는 계산 그래프에 동적 구조를 가진 시스템을 구축하는 것입니다. 이러한 동적 구조는 여러 신경망 중에서 주어진 입력을 처리할 때 알맞은 것을 동적으로 선택하고, 개별 신경망이 입력의 특정 정보를 동적으로 결정하도록 합니다. 이는 계산 속도를 향상하는 동시에, 입력의 관련된 부분만을 필요할 때 계산하도록 설계하는 중요한 전략입니다.