임베딩을 활용해 컴퓨터 비전 데이터 선별하기
데이터 선별(Data Curation)이라는 개념은 머신러닝 개발에 있어 원시 데이터(Raw Data)가 실질적인 액션으로 이어지기까지의 간극을 메워주는 핵심적인 프로세스로 자리잡았습니다. 특히 컴퓨터 비전 데이터 선별에는 데이터 선택, 정리, 이미지 어노테이션, 데이터 증강 등 복잡하고 섬세한 작업들이 포함되어 있죠.
데이터 선별은 데이터를 수집하는 것이 다가 아닙니다. 오히려 올바른 데이터 타입을 선택하는 과정에 가깝습니다. 데이터 선별 시에는 서로 관련되어 있으면서도 내가 해결하려는 문제를 잘 대변하는 다양한 데이터를 선별해야 합니다.
저희 심층 웨비나의 내용을 글로 각색한 이번 포스팅에서는 머신러닝 프로젝트 성공의 중추가 되는 데이터 선별의 중요성에 대한 인사이트를 제시하고 어떻게 데이터 선별을 통해 데이터 불균형을 예방하고, 투명성을 확보하고, 모델 성능을 개선시킬 수 있는지 공유합니다.
데이터 선별의 힘
데이터 선별은 원시 데이터를 정리, 통합, 개선해 머신러닝 모델을 위한 고품질 데이터셋을 구축하는 핵심적인 프로세스입니다. 비단 데이터 수집에서 끝나는 것이 아닌, 내가 해결하려는 문제에 대한 충분한 연관성, 대표성을 지닌 다양하고 적절한 데이터를 선별하는 것이 목적입니다.
컴퓨터 비전에서 데이터 선별이란 일반적으로 데이터 선택, 정리, 이미지 어노테이션, 데이터 증강 등의 작업을 수반합니다. 따라서 데이터와 당면한 문제에 대한 깊은 이해가 필수적이며, 또 내가 취합한 데이터가 어떻게 사용될지의 맥락에 대한 이해도 필요합니다. 그러려면 문제 영역, 모델 사용 의도, 선별 과정 동안 발생할 수 있는 잠재적인 데이터 편향 등을 미리 고려해야 합니다.
머신러닝 프로젝트의 중추
데이터의 품질이 모델의 성능에 직접적인 영향을 미치기 때문에 데이터 선별은 어느 프로젝트에서든 중요할 수 밖에 없습니다.
여러분은 데이터셋을 직접 구축해 나가면서 모델이 더 정확한 예측값을 제시할 수 있도록 더 고품질의 유의미한 데이터만을 선별할 수 있습니다. 더 구체적으로는, 데이터 선별만 잘 해도 클래스 불균형이나 데이터 편향을 방지할 수 있습니다. 그러니 원시 데이터가 실제로 적용 가능한 인사이트가 될 수 있도록 간극을 메워주는 역할을 한다고 볼 수 있겠습니다.
공정성과 투명성
데이터 선별이 중요한 이유는 비단 모델 성능을 개선할 수 있기 때문만은 아닙니다. 여러분의 모델을 더 깊이 이해하고 모델이 공정하고 윤리적이며 투명하게 운영될 수 있도록 하는데도 중요하죠. 데이터를 신중하게 생성함으로서 모델이 실제 세상의 다양성과 복잡성을 반영해 더 공정하고 평등한 결과를 내도록 만들 수 있습니다.
모델 성능 개선
앞서 언급했듯이 데이터 선별은 모델 성능 향상에 직접적인 영향을 미칩니다. 데이터를 생성한다는 것은 기본적으로 모델이 더 잘 학습할 수 있는 환경을 제공하는 것과 같습니다.
데이터를 구축할 때는 모델이 한 번도 본 적 없는 데이터에 대해서도 더 잘 대처할수 있도록 다양성과 대표성을 확보해 주어야 합니다. 그러기 위해서는 모델을 호도할 수 있는 노이즈나 에러를 없애는 클리닝 작업도 수반되어야 합니다. 다시 말해, 데이터를 더 잘 선별할 수록 모델 성능도 더 좋아진다는 뜻입니다.
신뢰와 이해 강화하기
이 모든 과정이 오직 성능을 향상시키기 위한 것만은 아닙니다. 데이터가 섬세하게 선별되었다는 신뢰를 쌓는 과정이기도 하죠. 그렇게 신뢰가 쌓이면 사용자들과 이해관계자들도 중요한 결정을 내릴 때 모델에 의지할 수 있게 됩니다.
데이터 문제와 모델 성능 사이의 관계를 이해하는 것은 효과적인 데이터 선별의 핵심입니다. 만일 모델 성능이 특정 클래스에 대해 부진하다면 데이터셋 내에 그 클래스를 대변하는 샘플의 수가 부족한 것일 수도 있습니다.
실제 시나리오에 데이터 선별 적용하기
어떤 경우에는 특정 클래스의 샘플을 더 많이 확보하고 추가하는 것이 중요할 수도 있습니다. 또는, 만일 모델이 과적합(Overfitting) 상태라면 모델이 과하게 복잡하거나 학습 데이터의 다양성이 충분하지 못해서일 수 있습니다.
이런 경우에는 데이터 선별 워크플로우가 데이터를 증강하거나 더 다양한 샘플을 수집해 주어야 합니다. 이 과정은 반복적이며 데이터와 모델 모두에 대한 깊은 이해가 수반되어야 합니다. 또 모델의 복잡성과 데이터의 다양성 사이에서 적절한 균형을 찾는 과정이기도 합니다.
전통적인 데이터 선별 방식의 장단점
아직도 다양한 도메인에서 데이터를 관리하고 전처리할 때 전통적인 데이터 선별 방식을 따르고 있습니다. 전통적인 방식에는 랜덤 샘플링과 메타데이터 기반 선별 등이 있는데, 기본적으로 간단하고 직접적인 방식들이고 데이터를 필터링, 정리, 활용하는 데 효과적입니다.
이런 방식들도 어느 정도는 세밀하고 구체적일 수 있겠으나, 그 나름의 한계와 어려움들도 존재합니다.
랜덤 샘플링
랜덤 샘플링은 데이터의 하위 집합을 선택하는 전통적인 데이터 선별 방식입니다. 워낙 간단하고 쉽기 때문에 가장 흔히 사용하는 선별 방식일 것입니다. 하지만 랜덤 샘플링은 근본적인 한계가 있는데, 예를 들면 데이터셋 전체의 다양성을 전부 반영하지는 못한다는 것입니다. 그래서 흔히 일부 클래스나 속성들이 너무 적게 선별되기도 합니다.
또 데이터 품질을 고려하지 않기 때문에 모델 성능 최적화가 어렵습니다. 다양성이 큰 대규모 데이터셋의 경우 랜덤 샘플링을 하면 중요한 데이터의 패턴이나 데이터 사이의 관계성을 읽어내지 못할 수 있습니다. 그러면 강건하지 못하거나 처음 보는 데이터에 쉽게 적응하지 못하는 모델이 탄생할 수도 있습니다.
메타데이터 기반 데이터 선별
메타 기반 선별은 라벨이나 어노테이션과 같은 메타데이터를 바탕으로 데이터를 선별하는 전통적인 방법입니다. 이 방법은 랜덤 샘플링보다는 더 구체적이고 섬세하게 데이터를 선별합니다. 하지만 메타데이터의 품질과 완성도에 너무나 크게 의존해야 하기 때문에 한계가 명확한 방식이기도 합니다.
메타데이터 역시 데이터셋 전체의 다양성을 완벽히 대변하지는 못합니다. 특히 메타데이터의 모든 특징을 100% 대변하지 못하는 경우 선별이 불완전, 부정확, 편향되거나 데이터셋마다 품질이 들쭉날쭉할 수 있습니다. 특히 데이터를 여러 소스에서 취합했을 경우 이런 경향성이 더욱 두드러집니다.
많은 경우 데이터 사이언티스트와 머신러닝 엔지니어들은 데이터를 처음 수집한 곳에서부터 작업의 가지를 뻗어나가기 때문에 메타데이터를 바꾸거나 개선할 여지가 많지 않습니다. 그래서 메타데이터가 데이터 선별을 위한 귀한 인사이트를 제공할 수 있고 선별을 시작하기에 적절한 출발선 역할을 할 수 있음에도 불구하고 제한적으로밖에 메타데이터를 활용하지 못하고 다른 방법을 통해 원시 데이터에 대한 더 깊은 인사이트를 얻으려 노력할 수 밖에 없죠.
전통적인 선별 방식의 문제
전통적인 데이터 선별 방식들도 어느 정도는 효과적이지만 분명한 한계점도 존재합니다. 먼저 데이터를 완벽하게 대변하지 못합니다. 매뉴얼 라벨링과 메타데이터에 의존하기 때문에 데이터의 모든 뉘앙스와 복잡성을 반영하지 못하는 거죠. 또, 보다 고급 방식들은 사람들이 직접 데이터를 선별하고 라벨링해야 하기 때문에 시간과 인력 소모가 엄청납니다.
그래서 프로젝트의 전체적인 속도를 늦출 뿐 아니라 사람의 개입으로 인한 오류나 편향이 발생할 가능성이 높아집니다. 세 번째로, 전통 방식 중 더 고급 방식들은 대규모 데이터셋에 적용하기 어렵습니다. 데이터 수량이 커지면 효과적으로 데이터를 관리하고 선별하기 어려워집니다. 마지막으로 이런 방식들은 확장성과 적응성에 한계가 있어 특정한 데이터 니즈에 맞게 방식을 변경하거나 진화시킬 수 없습니다. 그러다보니 컴퓨터 비전의 빠른 변화에 발맞추기가 힘들죠.
임베딩으로 선별하기
머신러닝과 컴퓨터 비전 분야에 있어 임베딩은 아주 강력한 도구입니다. 기본적으로 임베딩이란 일종의 기능 추출 내지 기능 학습의 일종이며, 이미지나 자연어와 같은 원시 입력 데이터를 더 낮은 차원의 연속적인 벡터 표현(Representation)으로 치환하는 것입니다.
이 벡터 표현, 또는 임베딩은 데이터의 관계나 패턴을 압축해 머신러닝 알고리즘이 예측이나 분류를 정확하게 수행하기 쉽도록 도와줍니다.
임베딩은 특히 원시 데이터나 라벨링되지 않은 데이터와 같은 비정형 데이터에 큰 강점을 보입니다. 덕분에 엔지니어들은 대규모 데이터셋을 더 효율적으로 처리하고, 모델 성능을 개선하고, 데이터 기저의 구조에 대해 더 깊이 이해할 수 있습니다.
임베딩에는 합성곱 신경망(CNNs), 오토인코더, 사전학습 네트워크 등을 사용해 개발한 임베딩들과 같이 다양한 종류가 있습니다. 임베딩은 각 세대와 스타일마다 다양한 방식으로 활용되고 있습니다.
비정형 이미지를 검색 가능하게 만들기
시각 데이터에서 생성된 임베딩으로 할 수 있는 다양한 일 중 하나는 바로 시각적 유사성을 바탕으로 엄청난 양의 비정형 원시 이미지를 검색할 수 있게 만드는 것입니다. CNNs를 사용해 각 이미지를 벡터로 치환하고 K-최근접 이웃(K-nearest neighbors) 알고리즘을 사용해 벡터 공간 안에서 주어진 이미지에 가장 가까운 이미지를 탐색하는 거죠.
임베딩으로 세밀한 특징까지 잡아내기
어떤 기술을 사용하냐에 따라 임베딩으로 촬영된 시점의 조도나 시간 등을 이미지 단위로 비교할 수도 있고, 또는 특정한 객체의 존재 여부와 같이 더 자세한 특징을 파악할 수도 있습니다.
벡터 공간 분석을 통해 이미지나 임베딩의 정보를 추출하는 방식은 아주 다양합니다. 이미지 검색이 될 수도 있고, 추천 시스템, 사진 관리자 등 다양한 목적을 지원할 수 있죠.
임베딩용 딥러닝 모델
한 가지 짚고 넘어가면 좋을 만한 내용이 바로 CNNs나 오토인코더와 같은, 입력 데이터의 압축된 저차원 버전을 제공하도록 학습된 딥러닝 모델입니다.
사전 학습 네트워크 및 전이 학습
또 다른 좋은 방법이 사전 학습된 네트워크나 전이 학습을 활용하는 것입니다. 사전 학습을 마친 네트워크는 데이터에서 어떻게 유용한 정보를 추출할 수 있는지 이미 대형 데이터셋으로 학습한 네트워크입니다. 네트워크가 추출해준 특징들을 가지고 전이 학습을 시도할 수 있습니다.
임베딩 시각화하기
임베딩이 준비되면 t-SNE나 PCA와 같은 기술을 사용해 임베딩의 차원을 감소시키고 2차원 공간에 시각화할 수 있습니다. 사람의 눈이 쉽게 해 낼 수 있는 작업이죠. 여기 보이는 2D 시각화는 슈퍼브에이아이의 큐레이트 플랫폼에서 가져온 자료입니다.
여길 보면 우리 데이터셋의 전체적인 시각적인 구조나 내용물을 쉽게 파악할 수 있습니다. 그리고 시각적으로 비슷하거나 아주 다른 이미지들을 골라낼 수 있죠. 아래 이미지와 같이 긴 팔과 반 팔 티셔츠가 선택되었고, 임베딩 알고리즘이 시각적으로 유사하다고 판단한 다양한 종류의 신발들이 보입니다.
임베딩 개선하기
임베딩이 생성되었다고 끝이 아닙니다. 임베딩을 확인하고 개선해야죠. 이제는 임베딩이 특정한 작업을 얼마나 잘 수행하는지 확인하고 우리 데이터로 임베딩을 더 다듬어야 합니다. 앞서 말했듯이 임베딩을 이미지 검색이나 추천 시스템에서도 실용적으로 사용할 수 있지만, 그보다도 더 중요한 것이 바로 이미지 선별이나 정리를 획기적으로 개선할 수 있다는 것입니다.
슈퍼브 큐레이트
슈퍼브 큐레이트는 임베딩을 사용해 컴퓨터 비전 데이터 선별 과정을 혁신화하는 도구입니다. 먼저 슈퍼브 큐레이트 플랫폼의 이미지에 임베딩이 어떻게 적용되는지 확인해보죠.
먼저 업로드된 각 이미지의 임베딩을 생성해야 합니다. 아래 예시에서는 여러 임베딩 알고리즘을 복합적으로 사용해 각 이미지를 대변할 1,024차원의 벡터를 생성했습니다.
큐레이트에서 임베딩 생성하기
이제 이 1,024 차원의 벡터를 쉽게 가시화할 수 있도록 2차원으로 압축합니다. 그러면 데이터의 트렌드를 확인하거나 시각적으로 유사한 이미지끼리 묶인 클러스터들을 확인할 수 있습니다.
앞서 언급한 바와 같이 큐레이트는 사용자들이 유사도에 기반해 데이터를 검색할 수 있게 해 주는데, 전체 데이터셋의 규모가 크더라도 상관 없습니다. 라벨링 및 학습을 목적으로 특정한 종류의 데이터만 세밀하게 추출하기를 원한다면 이러한 데이터들을 하위 집합으로 선택해 슬라이스화하면 됩니다.
이렇게 하면 메타데이터나 사람의 라벨링에 의존하지 않아도 빠르게 유의미한 데이터 하위 집합을 추출할 수 있고, 데이터에 대해 더 깊이 이해하고 싶거나 유사한 데이터 하위 집합들을 생성하고 싶을 때도 임베딩을 사용하면 되기 때문에 직관적이고 효과적입니다.
하지만 데이터 하위 집합을 선택할 때 반드시 먼저 고민해야 하는 질문이 있습니다. 모든 모델 학습 파이프라인의 근본에 닿아 있는 질문이죠. 컴퓨터 비전 분야에서 라벨링 된 데이터를 생성하려는 거의 대부분의 사람들이 겪는 문제로, 데이터의 양이 한 번에 라벨링 할 수 없을 만큼 많다는 겁니다. 그러다보니 먼저 라벨링 할 데이터 하위 집합을 잘 선택할 수 있어야 합니다.
결국 모든 데이터를 다 라벨링 할 예정이라고 하더라도, 맨 먼저 라벨링할 집합과 나머지 집합을 바른 순서로 선택할 줄 알아야 라벨링 워크플로우를 효과적이고 효율적으로 운영할 수 있습니다.
액티브 러닝 이터레이션
슈퍼브에이아이에서는 이터레이티브(Iterative) 액티브 러닝 모델을 사용해 가장 최적의 방식으로 대량의 데이터를 라벨링할 수 있도록 돕습니다. 즉, 먼저 작은 하위 집합을 라벨링하고, 그 데이터로 라벨링 모델을 학습시킨 뒤, 학습한 모델로 다음 하위 집합을 1차적으로 라벨링하는 것입니다. 이렇게 자동으로 생성된 라벨들을 교정하고, 새로운 모델을 다시 학습시키는 과정 등을 반복하죠. 최대한 빠르게 가장 효과적인 모델을 만들 수 있다면 ML 팀의 전체적인 라벨링 타임라인을 획기적으로 줄일 수 있습니다.
이 기능을 시연하기 위해 조금 큰 데이터셋인 MNIST 핸드라이팅 데이터셋을 사용해 보겠습니다. 전체적인 데이터셋에 약 7만 장의 라벨링되지 않은 이미지가 포함된 것을 확인할 수 있습니다.
먼저 우리 라벨링 데이터로 보낼 첫 번째 하위 집합을 선택합니다. 어떤 데이터를 먼저 자동 라벨링 할지 간편하게 선택하기만 하면 됩니다. 이번 예시에서는 라벨링되지 않은 데이터로 작업하니 먼저 2만 장 정도 되는 이미지들을 선택하고, 이 이미지들을 추가할 슬라이스의 이름을 정하겠습니다.
데이터 선별 리뷰 및 리포트
모든 자동 데이터 선별(오토큐레이트) 프로세스는 한 개 이상의 슬라이스를 생성하며, 각 슬라이스는 검토, 추가 분할, 병합이 가능합니다. 물론 라벨러들이 작업할 수 있게 슈퍼브 플랫폼으로 다시 보내는 것도 가능하죠. 이 슬라이스들은 슬라이스 탭에서 확인할 수도 있고, 또는 그냥 바로 슬라이스를 클릭해 큐레이션 히스토리로 들어가 살펴볼 수도 있습니다.
또 한 가지 기억해야 할 것은 각각의 프로세스마다 임베딩 기반 데이터 생성 알고리즘이 어떻게 작동할지, 또는 작동했는지를 확인할 수 있는 리포트가 생성된다는 것입니다. 어떤 데이터 생성 과정이든 이런 리포트가 있는 것은 아주 중요합니다.
이런 하위 데이터셋이 정확히 어떻게, 그리고 왜 선별되었는지를 대략적으로라도 이해하는 것은 아주 중요합니다. 그래야 모델이 투명한지, 윤리적인지를 판단할 수 있기 때문입니다. 슈퍼브에이아이가 제공하는 이 리포트는 항상 동일한 크기의 큐레이션 데이터셋과 랜덤으로 선정된 데이터셋을 비교한 결과를 제공합니다.
이는 이전에 언급한 1,024 차원의 임베딩 공간을 생성하는 데 있어 핵심적인 프로세스입니다. 먼저 이미지를 서로 다른 크기의 클러스터로 묶습니다. 각 클러스터 내의 이미지들은 의미상 서로 유사한 이미지라고 볼 수 있습니다.
동일한 클러스터 안의 이미지들은 모델을 학습시킬 때 비슷한 용도로 활용될 가능성이 높습니다. 어떤 클러스터는 꽤 클 수도 있는데, 그런 경우 비교적 비슷한 생김새의 이미지들이 많다는 뜻이므로 이런 큰 그룹에서는 더 적은 수의 이미지를 선택하는 것이 좋을 수도 있습니다.
반대로 희소한 클러스터는 클러스터 안에 이미지의 수가 비교적 적을 수 있습니다. 그리고 이런 이미지들은 데이터셋 내의 다른 이미지들과는 꽤 다른, 소위 엣지 케이스라고 부르는 데이터일 가능성이 높습니다. 이런 엣지 케이스는 모델 학습에 아주 중요하므로 이런 데이터를 충분히 선별하는 것이 좋습니다.
리포트를 보면 알고리즘이 데이터를 거의 15,000개의 서로 다른 클러스터로 그룹화한 것을 볼 수 있습니다. 이 중 랜덤 샘플링은 전체 클러스터의 2/3에서만 데이터를 추출한 반면, 슈퍼브 큐레이트는 100%의 클러스터에서 데이터를 선별한 것을 확인할 수 있습니다.
이 리포트를 통해 오토큐레이트 알고리즘이 랜덤 샘플링과 어떻게 다른지 확인할 수 있습니다. 랜덤 샘플링이 클러스터에서 일부 이미지를 추출하는 것은 맞지만, 클러스터 크기가 작아질 수록 해당 클러스터에서 데이터를 추출할 확률도 줄어듭니다.
더 자세한 예시를 보고 싶다면 큐레이션 리포트에서 어떤 클러스터가 희소/밀집한 클러스터로 분류되었는지 확인할 수 있습니다. 여기에서 보면 랜덤 샘플링에서는 선이 더 두꺼운, 알아보기 쉬운 문자들이 다수 포함되었으며, 어쩌면 필요 이상으로 많이 선택되었음을 알 수 있습니다. 반면 이런 지저분하고 깔끔하지 않은, 파편화된 점들은 아마도 엣지 케이스로, 최초 라벨링 및 학습 시 높은 우선순위로 활용해야 하는 데이터일 가능성이 높습니다.
지금까지 임베딩은 라벨링되지 않은 원시 데이터를 다룰 때 뿐 아니라 훨씬 다양한 상황에서 유용하게 활용될 수 있다는 것을 배웠습니다. 라벨링 된 데이터의 임베딩을 객체 단위까지 생성하고 클러스터링하면 다양한 재미있는 일들을 할 수 있는데요. 예를 들어 라벨 품질을 관리하거나, 객체들이 의미적으로 어떻게 분포되어 있는지도 확인할 수 있고, 처음 라벨링할 데이터를 선별할 때 적용했던 기준들을 동일하게 적용해 테스트용으로 사용할 데이터 하위 집합을 재선별할 수도 있습니다.
한 단계 진보한 데이터 선별
머신러닝과 컴퓨터 비전 분야에 있어 데이터 선별이란 원시 데이터가 실질적인 액션으로 이어지기까지의 간극을 메워주는 핵심적인 프로세스입니다. 단순히 데이터를 수집하는 영역을 넘어, 신중하게 데이터를 선택, 정리, 어노테이션, 증강해 내가 해결하려는 문제를 잘 대변하면서도 다양성과 관련성을 잃지 않는 데이터를 확보하는 일입니다.
이러한 관점에서 임베딩은 아주 든든한 지원군입니다. 특히 원시 데이터, 라벨링되지 않은 데이터와 같은 비정형 데이터를 다룰 때 아주 유용하죠. 임베딩이 있으면 이런 데이터도 검색할 수 있고, 세밀한 특징들을 찾거나 다양한 분야에 적용할 때 큰 도움이 됩니다.
슈퍼브 큐레이트는 이 분야에서 아주 유망한 도구로, 임베딩을 활용해 데이터 선별 프로세스를 혁신하고, 데이터 선별 및 정리를 지원하며, 이터레이티브 액티브 러닝을 촉진해 라벨링 워크플로우를 효율화할 수 있도록 지원합니다.
아래는 이번 웨비나의 Q&A 세션을 전사한 내용입니다. 참석자들의 날카로운 질문과 발표자들의 심도 있는 답변이 담겨 있습니다. 차원 선택부터 엣지 케이스 검출 기능 등 다양한 영역에 걸쳐 풍성한 질답이 오간 만큼 슈퍼브 큐레이트의 기능과 활용법에 대한 궁금점을 어느 정도 해소하실 수 있을 것입니다.
이번 웨비나와 포스팅을 통해 여러분의 머신러닝 프로젝트를 최적화할 수 있는 귀중한 인사이트를 얻어가시기를 바랍니다.
Q: 1,024 차원 중에서 어떻게 2 차원을 선택하시나요?
A: 1,024 차원 중에서 그냥 2개를 고르는 것이 아닙니다. 1,024를 줄이는 거죠. TC나 PCA 같은 여러 기술들을 활용합니다. 다양한 TC 기술을 복합적으로 사용하는데, 정확한 배합은 저희만의 비법입니다.
Q: 엣지 케이스 검출에 대해 더 자세히 설명해주세요.
A: 이미지들이 얼마나 의미적으로 다른 이미지들과 가까운지를 바탕으로 이미지들을 그룹화합니다. 엣지 케이스는 다른 어떤 이미지와도 유사하지 않은 이미지를 말합니다. 그래서 한 그룹 안에 속한 이미지가 소수이거나 한 장일 수 있습니다.
Q: 엣지 케이스에 집중하면 대다수를 차지한 이미지에 대한 성능이 떨어지나요?
A: 굉장히 좋은 질문이고 저희도 많이 고려하고 있는 부분입니다. 저희는 “흔한 케이스”의 데이터는 그대로 두고 점차적으로 엣지 케이스를 추가하면서 최적의 모델 성능을 찾아가시기를 권장하고 있습니다. 대다수에 대한 성능이 저하되는 시점이 언제냐는 프로젝트마다 다르기 때문에 딱 하나의 숫자나 퍼센티지를 말씀드리기는 어렵습니다.
Q: 엣지 케이스 분석으로 인해 중앙 분포가 틀어지는 시점, 즉 엣지 케이스가 포화 상태인 시점을 측정할 수 있는 방법이 있나요?
A: 현재 슈퍼브 큐레이트에는 그런 기능이 없지만 이미 저희도 작업 중인 부분이기는 합니다. 곧 출시될 “모델 진단”과 “모델 모니터링” 기능을 사용하면 이 부분에 대한 진단과 모니터링이 가능해질 것이고, 그러면 모델을 빠르게 이터레이션해서 서로 다른 학습 데이터에 대한 성능 테스트도 원활히 진행할 수 있을 겁니다.
Q: 슈퍼브에이아이에서 특별히 자랑하고 싶은 부분이 있나요?
A:
- 이미지 뿐 아니라 객체에 대해서도 고품질의 임베딩 생성이 가능한 기본 제공 모델들이 저희 장점이자 강점이겠네요. (이미지 단위 임베딩을 제공하는 일부 경쟁사들이 있습니다만 저희와 비교했을 때는 상대적으로 임베딩의 품질이 떨어집니다. 보통 하나의 임베딩 모델만 사용하고 객체 데이터에 대해서는 임베딩을 제공하지 않기 때문입니다.)
- 그리고 한 번의 클릭으로 다양한 유저 시나리오와 니즈에 맞춘 데이터 선별이 가능한 저희의 독자적인 오토큐레이트 알고리즘도 자랑거리입니다.
- 그리고 슈퍼브 라벨에서 모델까지, ML옵스 사이클 전체를 하나의 플랫폼으로 커버할 수 있다는 것 역시 엄청난 장점입니다. 예를 들어 슈퍼브 큐레이트에서 선별한 학습용/검증용 데이터셋을 사용해 슈퍼브 모델로 모델을 학습시키고, 학습된 모델의 성능을 슈퍼브 큐레이트를 통해 데이터 중심적인 방법으로 진단할 수 있습니다.
Q: 비디오도 가능한가요?
A: 좋은 질문입니다. 비디오에 대해서도 실험을 좀 해 봤는데요. 일단 어떤 방식의 데이터 선별이든 하위 집합을 선택할 모집합의 다양성이 충분해야 효과적인 선별이 가능하다고 말씀드리고 싶습니다. 비디오 프레임 간의 의미적인 유사성이 큰 비디오라면 알고리즘의 효용성이 조금은 떨어질 수 있습니다만, 이 부분은 아직 실험 중인데다가 저희도 저희 기법을 통해 특정한 객체가 있는 비디오나 프레임에서 가장 유의미한 프레임을 추출할 수 있을 것인지 궁금하기도 합니다. 여태까지 저희가 이미지 데이터셋만 테스트해보기는 했지만, 비디오 역시 앞으로 확실히 살펴볼 분야 중 하나입니다.
Q: 가시화한 산포도(Scatter plot)에서 샘플링을 하시지 않을까 생각합니다. 전부 다 쓰려면 너무 복잡할 테니까요. 만일 샘플링을 하고 계신다면 특별한 전략이 있나요 아니면 랜덤인가요?
A: 먼저 임베딩 벡터의 차원을 2D로 낮추기 위해 UMAP을 사용합니다. 샘플링 방식은 클러스터를 구성하지 못한 희소한 엣지 케이스들도 산포도에서 잘 드러날 수 있도록 랜덤 샘플링보다는 더 복잡한 방식을 채용하고 있습니다. 데이터 샘플링을 위해 먼저 임베딩 공간의 공간 정보를 사용하는데요. 기본적으로 임베딩 공간에 X, Y 좌표(타일)를 그리고 각 타일에서 균등하게 데이터를 샘플링해 2D 투사도가 데이터의 실제 분포와 일치하도록 만듭니다.
Q: 다차원을 2차원이 아닌 3차원으로 축소하면 더 세밀한 정보를 얻을 수 있을까요?
A: 저희 임베딩 공간의 실제 차원은 1,024 차원이기 때문에 이걸 2D나 3D로 낮추는 건 데이터 클러스터 관점에서는 “기술적으로” 큰 차이가 없습니다. 3D로는 패턴이나 클러스터를 가시화해서 보기 어렵다는 점도 있지만, 3D에서는 영역이나 클러스터를 나누기 훨씬 어렵다는 것도 문제입니다.
Q: 어떤 베이스 모델을 사용하시나요? 혹시 프로덕트 내부에서 베이스 모델을 변경할 수 있는 옵션도 제공되나요?
A: 임베딩/큐레이션 모델은 CLIP, DINO, BEiT 등의 조합을 기반으로 하고 있습니다. 각 모델들이 서로 어떻게 상호작용하는지는 저희 독자적인 기술력이므로 밝히기 어렵습니다. 일단 지금은 모델들이 정적이고 세 모델 모두 임베딩 계산 시 사용된다고 말씀드릴 수 있겠습니다. 앞으로든 임베딩 모델도 업그레이드하거나 추가할 예정이고 (DINOv2 또는 SAM) 사용자들이 자신의 임베딩 모델을 가져오거나 업로드할 수 있게 허용하는 방법도 고려중입니다.
Q: 라벨링 오류가 발생한 데이터를 찾기 위해 어떤 머신러닝 알고리즘을 사용하나요?
A: 저희 독자적인 알고리즘을 사용합니다. 기본적으로 어떤 객체 인스턴스가 다른 인스턴스와 시각적으로 유사(유사한 임베딩 벡터값을 가지고 있는)하지만 붙어있는 클래스 태그가 다르다면 라벨링 오류, 즉 미스라벨이 발생했을 확률이 상당히 높다고 볼 수 있습니다.