본문 바로가기
인공지능 (AI)

13번째 이야기 - 딥러닝, 머신러닝, 이미지 데이터 전처리 기법

by Ψβ⅓ 2022. 9. 25.

<공짜 점심은 없습니다(No Free Lunch).>

데이비드 울퍼트와 윌리엄 맥크리디(1997)가 머신러닝 논문에서 남긴 유명한 말이 있습니다. 그 말은 바로 '공짜 점심은 없다'입니다.' 입니다. 이게 무슨 말일까요?

머신러닝을 하다 보면 결국 성능을 높이는 것이 목표가 됩니다. 일반화 성능을 높이기 위해서 머신러닝 엔지니어는 노력에 노력을 합니다. 그렇다면 모든 모델에 통용되는 마스터 키와 같은 기법은 없을까요?

결론부터 이야기하면 그런 마스터 키는 존재하지 않습니다. 머신러닝 모델의 성능 개선을 위해 우리가 취할 수 있는 다양한 선택지들이 있습니다.

 

신경망의 구조(은닉층을 몇 개로 쌓을 것인지, 어떤 신경망 모델을 사용할 것인지, 노드를 몇개로 할 것인지 등), 하이퍼파라미터 튜닝(사람이 경험과 짬바에 의존해 설정해주어야 하는 값), 데이터 전처리 기법 여러 가지를 취사선택하고,, 추가해볼 수 있는 것이죠.

항상 우선적으로 검토해볼 만한 가치가 있는 기법들이 존재합니다만, 그것이 모든 상황에서 만능으로 해결해주는 단 하나의 기법은 없습니다. 그래서 시행착오로부터 학습하고, 지식과 경험을 쌓아가는 것이 중요합니다. Trial and error를 활용한 애자일인 것이죠.

 

이미지 데이터 전처리 기법을 예를 들어 봅시다. 이미지 데이터의 경우, 계산 복잡도를 줄여주는 과정이 매우 필수적입니다. 계산 복잡도를 줄이기 위해서는 불필요한 정보 즉, 노이즈를 줄여주어야 합니다. 색 없이도 사물을 인식하는데 전혀 문제가 없다면 이미지는 컬러보다는 회색 이미지(Gray Scale)로 효율적입니다.

이미지 비교

 

여기서 잠시 주의를 기울여봅시다. 계산 복잡도를 낮추려면 무조건 회색 이미지로 변환하는 것이 답이 될 수 있을까요? 그렇지 않습니다. 차선을 인식하는 기능이 반드시 있어야 하는 자율주행 자동차의 경우에는 색이 매우 중요합니다. 이렇듯 데이터와 문제의 정의에 따라 기법은 달라집니다.

자율주행자동차

이미지 데이터의 전처리 기법은 매우 다양합니다. 이미지의 사이즈를 모두 같게 조정하는 이미지 표준화 작업, 기존 데이터 셋에 조금씩 변형을 가해 데이터의 개수를 부풀리는 데이터 강화(Data Augumentation), 배경색 제거(누끼 따기), 이미지 밝기 조절 등 말이죠. 이미지 데이터 셋에 가해지는 어떠한 조정과 변형을 모두 이미지 데이터 전처리라 할 수 있습니다.

하지만, 실제 문제 상황에 마주쳤을 때, 그 누구도 어떤 기법을 활용해 문제를 풀어야 한다고 알려주지 않습니다. 공짜 점심은 없는 것이죠. 우리에겐 상황에 따라 필요한 기법을 선택할 줄 아는 능력이 필요합니다.

그런데 상황에 따라 필요한 기법을 선택할 줄 아는 능력은 어떻게 기를 수 있는 것일까요? 이 지점이 바로 머신러닝 프로젝트 뿐 아니라 일상을 부딪히며 살아가는 인간지능의 핵심입니다.

 

다음 글에서는 어떻게 이런 능력을 기를 수 있는 것인지 아주 일반론적인 관점에서 고민해보도록 하겠습니다.

https://earth.nullschool.net/ko/#current/wind/surface/level/orthographic=-233.63,27.14,575

 

earth :: a global map of wind, weather, and ocean conditions

See current wind, weather, ocean, and pollution conditions, as forecast by supercomputers, on an interactive animated map. Updated every three hours.

earth.nullschool.net

 

상황에 따라 필요한 기법을 선택할 줄 아는 능력은 어떻게 기를 수 있는 것일까요? 사실 이 지점은 바로 머신러닝 프로젝트 뿐 아니라 일상을 부딪히며 살아가는 인간지능의 핵심입니다.

보통 조직의 구성원은 어느 한 분야의 Specialist가 되어가는 테크를 탑니다. 그러다가 시간이 지나 조직의 리더가 되고, 임원이 되면 Generalist가 됩니다.

어느 한 기법에 대해 통달하고, 자신이 있다해서 기고만장해서는 큰 코를 다칠 수 있습니다. 연차와 역량이 좀 쌓여서 자신감이 좀 붙었다 생각하는 사람들이 조직 내에서 자주 실수할 수 있는 부분입니다.

이 떄에는 그 어느 때보다도 자신이 경험한 것이 전부인 양 생각하기 쉬우며, 자신의 생각이 정론이며 다수의 상식이라는 생각에 사로잡히기 쉽기 때문입니다..

리더는 어느 한 기법이나 방법론에 대해서는 Specialist인 구성원에 비해 부족할 수밖에 없습니다.

하지만 좋은 리더 즉, 좋은 Generalist는 상황과 맥락을 살피고, 문제의 핵심을 명확히 파악합니다. 그리고 최적의 솔루션을 위한 방향을 제시합니다. (물론 좋은 Generalist가 되는 길은 매우 어렵고 이런 분들을 만나 뵙는 것이 인생의 큰 행운이라 생각합니다.)

문제해결을 위해 필요한 기법을 선택할 줄 알려면 먼저 자신의 분야에서 Specialist가 되어야 합니다.

그러나 Specialist가 되었다고 해서 Generalist로의 자연스러운 전환이 보장되는 것은 결단코 아닙니다. 좋은 부장교사였던 분께서 좋은 교감 선생님이 되지 못하고, 탁월한 교감 선생님이었던 분이 좋은 교장 선생님이 되지 못하는 경우가 분명 있습니다.

미국은 우주개발에 있어서 스푸트니크 모먼트(Sputnik moment)를 경험했습니다. 현실을 자각하고, 위기 의식을 느끼는 바로 그 순간 말입니다.

자신의 자리에서 크게 성공한 사람들은 '성공 중력'이라는 것을 경험하게 됩니다. 성공의 경험이 도리어 자신을 안전 지향적으로 이끌며, 새로운 변화에 심리적으로 저항하도록 하는 요인이 될 수 있습니다.

미국 또한 소련과의 우주 경쟁에서 성공 중력에 도취된 나머지 스푸트니크 모먼트를 경험한 것이라 볼 수 있을 듯합니다..

결국 자신의 기득지가 편견으로 작용하게 두지 않고, 의사결정과 판단에 유연함과 여지를 두며, 평생을 배우려는 경주를 아끼지 않는 Specialist들이 Generalist가 되십니다.

머신러닝 프로젝트에서도 이러한 인사이트는 동일하게 통용됩니다.

행위는 자동화됩니다. 그러나 생각과 인사이트는 자동화될 수 없습니다. 자동화와 최적화를 가능케 하는 도구인 딥러닝에 대한 호모 사피엔스의 대답은 아마도 딥 싱킹(Deep Thinking)이 아닐까 합니다.

https://tunibridge.ai/nverse? fbclid=IwAR1 vFcxmXtVvBzIxoYGWpPnSIe0 STVJ38 nRRBKYQ-1 HR4 od40 AzriuO3 psw

 

TUNiBridge Demos

 

demo.tunibridge.ai:443

 

 

<머신러닝과 딥러닝은 무엇이 다를까요?>

머신러닝은 기계학습으로 데이터를 기반으로 학습하는 방식입니다. 딥러닝은 사람의 신경망을 수학적으로 모델링한 인공 신경망을 통해 기계를 학습시키는 방법론으로 머신러닝의 하위 범주입니다.

머신러닝과 딥러닝의 차이점은 무엇인가요? 많은 유튜브와 글들이 이 질문에 대한 대답을 하고 있습니다. 그만큼 인공지능에 관심을 갖기 시작하는 사람들이 궁금해하는 질문입니다. 좋은 설명들이 있을 수 있겠지만 저는 특징 추출(Feature Extraction)의 관점에서 차이점을 설명드리고자 합니다.

머신러닝은 많은 데이터들 속에서 특정한 패턴이나 규칙, 특징 등을 추출해내어 이를 학습시킵니다. , 중요한 것은 컴퓨터 비전 파이프라인에서도 살펴보았듯이 특징 추출의 단계입니다. 특징을 추출하여 특징 벡터의 형태로 뽑아내는 것이 사실 머신러닝의 핵심이자 요체입니다. 얼마나 좋은 특징 벡터들을 뽑아냈느냐가'학습의 질'을 좌우하기 때문이죠.

머신러닝 모델이 훌륭한 성능을 내기 위해서는 AB를 잘 구분 지을 수 있는 결정적인 특징을 추출해낼 수 있어야 합니다. 기존의 머신러닝 모델 기법에서는 특징을 추출해내는 역할을 사람이 합니다. 여기서 사람이란 대상 분야에 대한 도메인 지식을 갖춘 도메인 전문가를 뜻합니다. , 인공지능 엔지니어뿐 아니라, 도메인 전문가와의 협업을 통해 결정적인 특징을 선택합니다.

그런 다음 딥러닝 이전에 시대를 풍미했던 SVM이나 의사결정 트리,, 혹은 에이다 부스트(Adaboost)와(Adaboost) 같은 분류기에 집어넣어 결과를 얻었습니다. , 기존의 머신러닝 기법은 사람이 직접 추출한 특징을 기반으로 특징 벡터를 뽑아내어 이를 학습시킵니다. 그렇기 때문에 특성 공학(Feature Enginerring)이라는 분야가 머신러닝에서는 매우 중요합니다.

머신러닝

그런데 딥러닝은 어떨까요? 딥러닝에서는 사람이 특징을 추출해낼 필요가 없습니다. 신경망이 특징을 알아서 추출해냅니다. 신경망의 특징은 각각의 뉴런(노드)이 에지(Edge)로 연결되어 있고, 이 에지는 각각의 중요도에 따라 가중치라는 값을 가지게 됩니다. 결국, 신경망은 학습을 진행해나가면서 뉴런과 뉴런의 연결인 에지들의 가중치를 중요도에 따라 알맞게 조정해나갑니다.

정리하면, 신경망은 특징 추출기와 분류기의 기능을 동시에 수행합니다. 이것이 사람이 뽑아낸 특징을 필요로 하는 머신러닝과의 가장 큰 차이점이라 할 수 있습니다.

 

딥러닝

다음 글에서는 신경망이 분류에 유용한 특징을 어떻게 구별해내는지 작동원리에 대해 살펴보도록 하겠습니다.

댓글