격자 모델이 도움이 되는 이유

사용자에게 근처의 커피숍을 추천하는 시스템을 설계한다고 가정해 보겠습니다. 여러분은 모델이 '두 카페가 같을 경우, 더 가까운 곳을 선호한다'라는 점을 학습하기를 원할 것입니다. 아래에서는 근처에 많은 커피숍이 있는 도쿄(보라색) 지역의 사용자에 대한 훈련 데이터에 정확히 부합하는 유연한 모델(분홍색)을 보여줍니다. 분홍색으로 표시된 유연한 모델은 노이즈가 있는 훈련 사례에 과대 적합하고 카페가 가까울수록 좋다는 전반적인 경향을 놓칩니다. 카페가 서로 훨씬 멀리 떨어져 있는 텍사스에서 얻은 테스트 사례(파란색)에 대한 순위를 매기는 데 이 분홍색 모델을 사용할 경우 모델이 가끔 더 멀리 떨어져 있는 카페를 선호하는 것으로 이상하게 동작합니다.
다른 모든 입력이 동일하게 유지되고 거리만 달라지는 모델의 특징 공간을 구분해야 합니다. 도쿄에서 얻은 훈련 사례(보라색)에 정확히 부합하는 유연한 함수(분홍색)는 10km 떨어진 카페가 5km 거리에 있는 동일한 카페보다 더 좋다고 예측합니다. 이 문제는 카페가 더 넓은 지역에 걸쳐 퍼져 있는 텍사스의 사례(파란색)를 통해 여기서 제시된 바와 같이, 데이터 분포가 달라진 경우 테스트를 수행할 때 더 명백하게 드러납니다.
유연한 단조 함수(녹색)는 위의 그림에 제시된 유연한 비단조 함수(분홍색)와 비교했을 때 훈련 사례에 정확히 부합할 뿐만 아니라 텍사스 사례에 대해서도 일반화할 수 있습니다.
이와 대조적으로, 도쿄에서 얻은 동일한 사례를 통해 훈련된 격자 모델은 그러한 단조적 관계와 유연한 단조 함수의 결과(녹색)를 충족시키는 데 제약이 있을 수 있습니다. 녹색 선은 도쿄의 훈련 사례에 정확하게 부합할 뿐 아니라, 더 멀리 있는 카페를 선호하지 않음으로써 텍사스 사례에 대해서도 올바르게 일반화 작업을 수행합니다.

일반적으로 커피의 질, 가격 등 각 카페에 대한 다양한 입력 데이터가 있을 수 있습니다. 유연한 모델은 훈련 데이터가 희소성을 띄고 노이즈가 있는 특징 공간의 일부에서 특히 '다른 입력 데이터가 모두 동일하다면 가까울수록 좋다'라는 형태의 전역적인 관계를 포착하기 어렵습니다. 사전 지식(즉, 입력이 예측에 미치는 영향)을 포착하는 기계 학습 모델이 실제로 더 잘 작동하며, 디버깅하기가 더욱 쉽고 해석 가능성이 더 높습니다.

사전 빌드된 Estimator

Google에서는 TensorFlow Estimator와 같이 다양한 격자 모델 아키텍처를 제공합니다. 우리가 제공하는 가장 단순한 Estimator는 보정된 선형 모델이며, 이는 1차원 격자를 사용하여 각 특징에 대한 최적의 1차원 변환을 학습한 후 보정된 모든 특징을 선형적으로 결합합니다. 이 모델은 훈련 데이터세트가 매우 작거나 복잡한 비선형 입력 상호 작용이 없는 경우 제대로 작동합니다. 또 다른 Estimator는 보정된 격자 모델입니다. 이 모델은 데이터세트에서 복잡한 비선형 상호 작용을 나타낼 수 있는 2계층 단일 격자 모델을 사용하여 보정된 특징을 비선형적으로 결합합니다. 보정된 격자 모델은 보통 2~10개의 특징이 있는 경우에 적합합니다. 단, 10개 이상의 특징이 있는 경우에는 사전 빌드된 앙상블 아키텍처를 사용하여 훈련할 수 있는 보정된 격자의 앙상블로 최적의 결과를 얻을 것으로 예상합니다. 단조 격자 앙상블은 랜덤 포리스트[4]에 비해 0.3%~0.5%의 정확도 향상을 이룰 수 있으며, 새롭게 제공되는 이러한 TensorFlow Lattice Estimator는 단조성[5]을 갖는 학습 모델에서 이전의 최첨단 기술에 비해 0.1%~0.4%의 정확도 향상을 이룰 수 있습니다.

직접 빌드해 보세요

더욱 심층적인 격자 네트워크를 사용하여 실험하거나 딥 러닝 신경망 또는 기타 TensorFlow 아키텍처의 일부로 부분적 단조 함수를 사용하여 연구하고 싶으실 수도 있습니다. 이를 위한 기본 구성 요소로서 보정자, 격자 보간 및 단조성 예측을 위한 TensorFlow 연산자를 제공합니다. 예를 들어, 아래 그림은 9계층 심도의 격자 네트워크[5]를 나타낸 것입니다.
보정자 계층(신경망에서 ReLU의 합과 같이 동작함)을 사용하여 격자 앙상블 및 선형 임베딩 계층을 교대로 사용하는 9계층 심도 격자 네트워크 아키텍처[5]의 예입니다. 파란색 선은 단조 입력에 해당하며, 계층별로 유지되므로 이런 식으로 전체 모델에 대해 유지됩니다. 계층마다 구분이 가능하므로 TensorFlow Lattice를 사용하여 이 아키텍처는 물론, 임의의 다른 아키텍처도 구성할 수 있습니다.
TensorFlow Lattice에서는 모델의 유연성과 표준 L1L2 정규화를 선택할 수 있는 옵션과 더불어 다음과 같은 새로운 정규화 기능도 제공합니다.
  • 위에서 설명한 것처럼 입력 선택에 대한 단조성 제약 조건[3]
  • 학습된 함수를 더욱 평활화하기 위해 격자에 대해 이루어지는 라플라시안 정규화[3]
  • 불필요한 비선형 특징 상호작용을 억제하는 왜곡 정규화[3]
TensorFlow Lattice가 의미상 유효한 입력 데이터를 다루는 보다 큰 커뮤니티에서 유용하게 활용될 수 있기를 바랍니다. TensorFlow Lattice는 정책 목표를 충족시키고 현업에서 활동하는 전문가들이 보유하고 있는 사전 지식을 활용할 수 있게 지원하기 위해 기계 학습 모델 제어와 해석 능력 향상을 목표로 대규모로 진행되는 연구의 일환으로 개발되었습니다. 여러분과 이에 대한 정보를 공유할 수 있어 정말 기쁩니다. 본격적으로 시작하려면 Google의 GitHub 저장소가이드를 확인하시고 여러분의 의견을 들려주시기 바랍니다.

감사의 말

팀 전체의 막대한 노력이 있었기에 TensorFlow Lattice를 개발하고 오픈소스로 제공할 수 있었습니다. 이 프로젝트에 참여해 주신 Andrew Cotter, Kevin Canini, David Ding, Mahdi Milani Fard, Yifei Feng, Josh Gordon, Kiril Gorovoy, Clemens Mewald, Taman Narayan, Alexandre Passos, Christine Robson, Serena Wang, Martin Wicke, Jarek Wilkiewicz, Sen Zhao, Tao Zhu 등, 모든 관계자께 감사의 인사를 드리고 싶습니다.

참고 문헌
[1] Lattice Regression, Eric Garcia, Maya Gupta, Advances in Neural Information Processing Systems (NIPS), 2009
[2] Optimized Regression for Efficient Function Evaluation, Eric Garcia, Raman Arora, Maya R. Gupta, IEEE Transactions on Image Processing, 2012
[3] Monotonic Calibrated Interpolated Look-Up Tables, Maya Gupta, Andrew Cotter, Jan Pfeifer, Konstantin Voevodski, Kevin Canini, Alexander Mangylov, Wojciech Moczydlowski, Alexander van Esbroeck, Journal of Machine Learning Research (JMLR), 2016
[4] Fast and Flexible Monotonic Functions with Ensembles of Lattices, Mahdi Milani Fard, Kevin Canini, Andrew Cotter, Jan Pfeifer, Maya Gupta, Advances in Neural Information Processing Systems (NIPS), 2016
[5] Deep Lattice Networks and Partial Monotonic Functions, Seungil You, David Ding, Kevin Canini, Jan Pfeifer, Maya R. Gupta, Advances in Neural Information Processing Systems (NIPS), 2017



개발자 여러분이 앞으로도 이 기회를 활용하실 수 있도록, Google Play의 새로운 혁신과 Play Console의 신규 기능을 소개하고자 합니다. Medium에서 Google Play를 팔로우하세요. 여러분의 비즈니스 목표 달성에 도움이 되는 발표자들의 전략, 권장사항 및 예시 등을 확인할 수 있습니다. 계속해서 빠르게 성장하고 있는 Google Play의 비즈니스 현황에 관해 알리고자 State of Play 2017 보고서를 발행하여 매년 Google Play가 얼마나 발전했으며 어떻게 개발자의 성공을 돕고 있는지 발표하기로 했습니다.

Google Play는 스마트폰, 태블릿, Wear 기기, TV, Daydream, 새로운 Google Pixelbook과 같은 Chromebook을 비롯하여 여러분이 사용하는 모든 기기에 생명을 불어넣습니다. Google Play에서는 사용자가 Play 스토어에서 지금보다도 더욱 쉽게 양질의 콘텐츠를 찾고 재참여할 수 있도록 개선할 예정입니다.

Google Play에서 새롭게 제공되는 게임 환경

최고의 앱 및 게임 선정

Google Play에서는 품질이 뛰어난 앱 및 게임을 추천하기 위한 선별과 편집에 힘을 쏟고 있습니다. 개선된 에디터 추천은 현재 17개국에서 제공되고 있으며, 최근 Android Excellence에 새로운 앱 및 게임이 추가되었습니다. 또한 최근 샌프란시스코 인디 게임 페스티벌의 수상자를 발표하고, 제2회 유럽 인디 게임 콘테스트의 후보자를 모집하는 등 인디 게임을 계속 지원하고 있습니다.

양질의 게임 발견

Google Play에서는 예고편과 게임플레이 스크린샷을 포함하여 개선된 게임 홈을 선보였습니다. 또한 유료 게임을 위한 '프리미엄'과 출시 예정 게임 및 인기 게임을 위한 '신규'라는 2가지 둘러보기 섹션이 곧 추가될 예정입니다.

설치를 넘어 참여 독려

Play 스토어에서는 사용자가 이미 설치한 인기 게임의 주요 인게임 이벤트를 알리는 ‘실시간 운영’ 배너 및 카드를 더욱 확대할 예정입니다. 또한 '지금 사용해 보기' 버튼을 통해 스토어 등록정보에 Android 인스턴트 앱을 도입했습니다. 사용자는 탭 한 번으로 설치 없이 앱 환경을 바로 이용할 수 있습니다.

Google Play Console에서는 앱 수명주기의 모든 단계에서 여러분과 여러분의 팀원에게 유용한 도구를 제공합니다. Play Console을 사용하여 앱 품질을 개선하고, 자신감 있게 출시를 관리하고, 비즈니스 실적을 개선하세요.



품질에 중점 두기

Android vitals는 2017년 I/O에서 발표되었으며, 이미 인기 개발자 가운데 65%가 Android vitals 대시보드를 사용하여 앱 성능을 파악하고 있습니다. Google Play에서는 5가지의 새로운 Android vitals를 추가하고 지원 기기를 확대하여 여러분이 배터리 소모, 비정상 종료, 렌더링 시간과 관련된 문제를 해결하도록 도울 예정입니다. 앱 성능이 우수할수록 Google Play 검색 및 탐색 알고리즘에서 우선적으로 검색됩니다.

또한 사전 출시 보고서를 개선하고 모든 개발자가 사용 설정하지 않고도 이용할 수 있도록 할 예정입니다. 알파 또는 베타 APK를 업로드하면 Firebase Test Lab에서 제공하는 실제 주요 기기에 자동으로 앱이 설치되어 테스트됩니다. 사전 출시 보고서에서는 비정상 종료, 디스플레이 문제, 보안 취약점을 확인할 수 있으며, 이제는 발견된 성능 문제에 관해서도 알아볼 수 있습니다.

새로운 앱을 설치하는 사용자는 앱이 문제 없이 열리고 작동하기를 기대합니다. Google Play에서는 대부분의 기기에서​ 비정상 종료,​ 닫힘,​ ​멈춤​​ 또는 다른​ ​​​비정상적인​ ​작동과 같이 불만족스러운 환경을 지속적으로 제공하는 앱을 금지하는 정책을 도입할 예정입니다. 이 정책의 목적은 Google Play에서 앱과 게임을 설치하는 사용자에게 만족스러운 경험을 제공하고, 개발자에게 신뢰할 수 있는 생태계에 참여하는 혜택을 제공하는 것입니다. 정책 센터에서 자세히 알아보기


안정적인 출시

베타 테스트를 실시하면 앱/게임을 프로덕션 채널로 출시하기 전에 신뢰할 수 있는 사용자에게 테스트용으로 제공하여 아이디어를 반복해서 구현하고 의견을 수집할 수 있습니다. 이제 특정 국가를 대상으로 알파 및 베타 테스트를 타겟팅할 수 있습니다. 이렇게 하면 아직 앱이 출시되지 않은 국가에서 베타 테스트를 실시하고, 다른 국가의 사용자에게는 프로덕션 앱을 제공하는 등의 방식으로 진행할 수 있습니다. 국가별 타겟팅 기능은 단계적 출시를 통해 곧 제공될 예정입니다.

또한 기기 카탈로그도 개선되었습니다. 인기 개발자 가운데 66% 이상이 다양한 기기에서 뛰어난 사용자 환경을 제공하기 위해 기기 카탈로그를 활용합니다. 이제 기기 검색 내역을 저장하고 특정 기기에서 여러분의 앱이 지원되지 않는 이유를 확인할 수 있습니다. 기기 카탈로그로 이동해 서비스 약관을 검토하여 시작해 보세요.



구독 비즈니스 성장시키기

2017년 I/O에서는 작년 한 해 동안 Play의 구독자 수와 구독 비즈니스 수익이 모두 2배로 증가했다는 사실이 발표되었습니다. 또한 정상적인 결제와 실패한 결제 절차를 간단하게 테스트할 수 있는 Play 결제 라이브러리새로운 테스트 도구를 사용하여 구독 서비스의 설정과 관리를 더욱 쉽게 만들 예정입니다.

Google Play에서는 여러분이 더 많은 구독자를 확보하고 유지할 수 있도록 도와드립니다. 이제 최소 3일간의 더 짧은 무료 평가판을 제공할 수 있으며, 앱별로 하나의 무료 평가판을 제공하도록 하여 무료 평가판이 남용될 가능성을 줄일 예정입니다. 또한 사용자가 구독을 취소하면 알림을 받도록 선택할 수 있으며, 사용자가 취소한 구독을 더욱 쉽게 재활성화할 수 있게 만들 예정입니다. 모든 개발자가 계정 보류를 사용할 수 있게 되어, Google Play에서 사용자와 갱신 구독료 결제 문제를 해결하는 동안 사용자가 서비스에 액세스하지 못하도록 차단할 수 있습니다. 마지막으로 2018년 1월부터는 12개월 이상 구독을 유지하는 구독자의 거래 수수료를 변경할 예정입니다.


Google Play 보안 포인트 프로그램 발표

Google에서는 오랫동안 보안 연구 커뮤니티와 긴밀한 관계를 유지해 오고 있습니다. 오늘 소개하는 Google Play 보안 포인트 프로그램은 Google 자체 개발 앱을 비롯한 인기 Android 앱에 관한 보안 연구에 인센티브를 제공하기 위한 것입니다. Google에서는 이 프로그램을 통해 보안 취약점을 찾고, 개발자에게 이러한 보안 취약점을 해결하기 위한 보안 권장사항을 제공할 예정입니다. Google에서는 다른 포인트 프로그램을 통해 거둔 성공을 다시 이룰 수 있기를 바라며, 개발자 및 연구 커뮤니티 간의 협업을 통해 적극적으로 Google Play 생태계의 보안을 개선하고자 합니다.




잠시 2016년으로 돌아가볼까요? 코카콜라 고객 충성도 프로그램은 전과 동일하게 여전히 많은 인기를 끌었습니다. 홍보 행사와 경품 추첨 행사에 참여하기 위해 수백만 개의 제품 코드가 입력되었습니다. 하지만 2006년에만 해도 아예 존재하지도 않았던 모바일 탐색이 2016년 말에는 50% 이상의 비중을 차지했습니다. (MCR.com을 대체하여) Coke.com을 모바일 퍼스트 웹 환경으로 출범한 것은 이러한 탐색 행동 변화에 대응하는 차원의 조치였습니다. 14자 길이의 코드를 휴대기기에 엄지손가락으로 입력하는 사용자 환경은 프로그램의 성공에 영향을 미칠 정도로 사용자에게는 어렵게 느껴질 수 있었습니다. 우리는 모바일 잠재고객에게 가능한 한 최상의 환경을 제공하고 싶은데, 최근 인공 지능 분야가 진보함에 따라 새로운 기회가 열렸습니다.


원활한 구매 증명 추구

코카콜라는 수년간 기성 OCR(광학 문자 인식) 라이브러리와 서비스를 사용하여 제품 코드 판독을 시도했으며 그 성공률은 무척 낮았습니다. 코카콜라의 인쇄 공정에서는 보통 프린트헤드 아래에서 매우 빠른 속도로 움직이는 뚜껑이나 냉장고 팩 포장지에 낮은 해상도의 도트 매트릭스 글꼴을 사용합니다. 이러한 글꼴은 모두 정확도가 낮은 문자열로 인쇄되고, 따라서 기성 OCR 기술이 제대로 인식하기 어렵습니다. 심지어 육안으로 읽기 어려울 수도 있습니다. OCR은 모바일 사용자의 코드 입력 과정 간소화에 결정적인 역할을 합니다. OCR은 코드 사진을 찍어서 홍보 캠페인 참여를 위해 자동으로 구매 등록되도록 할 수 있어야 합니다. 우리에게는 제품 코드 인식 전용 OCR 시스템이 필요했습니다.
병뚜껑 및 냉장고 팩의 예

연구를 진행한 결과 아주 성공적인 솔루션인 CNN(Convolutional Neural Network)을 구축할 수 있었습니다. CNN은 첨단 인공 지능 제품의 핵심이 되는 '딥 러닝' 신경망 기술군 중 하나입니다. Google은 CNN을 활용하여 스트리트 뷰 이미지에서 상세 주소를 추출해왔습니다. CNN은 손으로 쓴 숫자를 인식하는 데도 뛰어난 성능을 발휘합니다. 이러한 번호 인식 활용 사례는 문자 모양이 다양한 작은 문자 집합을 포함하는 이미지에서 문자열을 추출하는 등 우리가 해결하려고 했던 문제 유형에 완벽한 대안이었습니다.


TensorFlow를 활용하는 CNN

과거에는 사용 가능한 훈련 및 추론 라이브러리가 복잡해서 CNN과 같은 딥 러닝 신경망을 개발하기 어려웠습니다. Google이 2015년 11월에 오픈소스로 공개한 기계 학습 프레임워크인 TensorFlow는 딥 러닝 신경망 개발을 간소화하도록 설계되었습니다.

TensorFlow는 인기 있는 손실 함수와 다양한 종류의 뉴런층에 대한 상위 수준 인터페이스를 제공하여 다양한 CNN 모델 아키텍처를 더 쉽게 구현할 수 있게 해줍니다. 다른 여러 모델 아키텍처를 빠르게 반복할 수 있었기에 코카콜라에서 사용자설정 OCR 솔루션을 빌드하는 데 필요한 시간이 상당히 단축되었습니다. 여러 다른 모델을 며칠 만에 개발, 훈련 및 테스트할 수 있었기 때문입니다. TensorFlow 모델은 이식할 수도 있습니다. 이 프레임워크는 로컬 휴대기기('최첨단 AI') 또는 클라우드에서 원격으로 호스팅되는 서버에서 기본적으로 모델 실행을 지원합니다. 이를 통해 웹 기반 플랫폼과 모바일 플랫폼을 비롯한 여러 가지 다양한 플랫폼 간에 '일단 만든 후에 어디서든 실행'하는 접근법으로 모델을 실행할 수 있습니다.


기계 학습: 훈련을 통해 완벽에 근접

어떤 신경망이든 훈련에 사용되는 데이터의 질에 따라 그 품질이 결정됩니다. 우리는 성능 목표를 실현할 수 있도록 CNN을 훈련시키는 데 대규모의 레이블이 지정된 제품 코드 이미지 세트가 필요하다는 점을 알고 있었습니다. 훈련 세트는 다음과 같은 세 단계로 빌드됩니다.
  1. 출시 전 시뮬레이션된 이미지
  2. 출시 전 실제 이미지
  3. 프로덕션 단계에서 사용자가 레이블을 지정한 이미지
출시 전 훈련 단계는 수백만 개의 시뮬레이션된 제품 코드 이미지를 프로그래밍 방식으로 생성함으로써 시작됩니다. 이러한 시뮬레이션된 이미지에는 기울기, 조명, 그림자, 흐림이 제각기 다른 변형이 포함되어 있었습니다. 예측 정확도(즉, 상위 10회 예측에서 14자가 모두 정확히 예측된 빈도)는 모델이 시뮬레이션된 이미지만 사용하여 훈련된 경우 실제 이미지의 50% 수준이었습니다. 이는 전이 학습의 기준선(baseline)을 제공했습니다. 즉, 시뮬레이션된 이미지로 초기에 훈련된 모델이 실제 이미지를 기준으로 훈련되는 더욱 정확한 모델의 기반이 되었습니다.

이제 해결해야 할 과제는 충분한 수의 실제 이미지를 가지고 시뮬레이션된 이미지를 강화하여 우리의 성능 목표를 충족시키는 것으로 바뀌었습니다. 우리는 '훈련자'가 코드 사진을 찍고 이들 사진 이미지에 레이블을 지정하는 데 사용할 수 있는 iOS 및 Android 기기 전용 훈련 앱을 만들었습니다. 이렇게 레이블이 지정된 이미지는 훈련에 사용하도록 클라우드 저장소로 전송되었습니다. 우리는 병뚜껑과 냉장고 팩에 수천 개의 제품 코드를 찍는 프로덕션 실행 단계를 수행했으며 이렇게 만든 제품을 여러 공급업체에 배포했습니다. 그러면 공급업체에서 앱을 사용하여 초기 실제 훈련 세트를 생성했습니다.

보강되고 강화된 훈련 세트를 만들기는 했지만 다양한 환경 조건에서 최종 사용자가 만든 이미지를 대체할 만한 것은 없습니다. 우리는 스캔이 경우에 따라 부정확한 코드 예측 결과를 초래한다는 점을 알고 있었으므로 사용자가 이렇게 잘못된 예측을 빠르게 수정할 수 있는 사용자 환경을 제공해야 했습니다. 이러한 환경을 제공하기 위해서는 두 가지 구성 요소가 필요했습니다. 하나는 제품 코드 유효성 검사 서비스로서 2006년 최초의 고객 충성도 플랫폼을 출범한 이후로 지금까지 예측된 코드가 실제 코드인지 확인할 목적으로 계속해서 사용되고 있으며, 다른 하나는 예측 알고리즘으로서 회귀 테스트를 수행하여 14자 각각의 위치에서 문자당 신뢰도를 확인합니다. 예측된 코드가 유효하지 않은 경우 각 문자에 대해 가장 높은 수준의 예측과 신뢰도가 사용자 인터페이스로 반환됩니다. 신뢰도가 낮은 문자는 시각적으로 강조표시되어 주의가 필요한 문자를 사용자가 업데이트하도록 안내합니다.
사용자는 오류 수정 사용자 인터페이스를 통해 유효하지 않은 예측을 수정하고 유용한 훈련 데이터를 생성할 수 있습니다.

이러한 사용자 인터페이스 혁신을 통해 능동 학습 프로세스가 가능해집니다. 즉, 피드백 루프를 통해 모델이 수정된 예측을 훈련 파이프라인에 반환함으로써 점진적으로 개선해나갈 수 있습니다. 이러한 방식으로, 사용자는 시간이 지남에 따라 문자 인식 모델의 정확도를 유기적으로 향상시키게 됩니다.
제품 코드 인식 파이프라인

최적화를 통해 최대 성능 구현

성능과 관련하여 사용자의 기대 수준을 충족하기 위해 제품 코드 OCR 파이프라인에 대한 몇 가지 야심 찬 요구 조건을 수립했습니다.
  • 빠른 속도: 제품 코드 이미지가 OCR 파이프라인에 전송된 후의 평균 처리 시간 1초를 달성해야 했습니다.
  • 정확성: 모델이 능동 학습을 통해 시간이 지남에 따라 향상될 수 있도록 보장하면서 출시 시점에 95%의 문자열 인식 정확도 달성을 목표로 했습니다.
  • 작은 크기: OCR 파이프라인은 모바일 앱에 직접 배포되고 모델이 시간의 경과에 따라 향상되므로 OTA 업데이트를 수용할 수 있을 정도로 작아야 합니다.
  • 다양한 제품 코드 매체를 처리해야 합니다. 글꼴 유형, 병뚜껑, 판지 소재의 냉장고 팩 매체 등으로 구성된 수십여 가지 다양한 조합이 있습니다.

처음에는 모든 제품 코드 매체에 단일 CNN을 사용한 아키텍처를 연구했습니다. 이 접근법으로는 모바일 앱으로 배포하기에 너무 큰 모델이 만들어졌으며 실행 시간이 원하는 수준보다 너무 길었습니다. 우리의 응용 AI 파트너인 Quantiphi, Inc.에서는 다양한 모델 아키텍처를 반복해 본 후 결국 여러 CNN을 사용하는 아키텍처를 선택했습니다.

이 새 아키텍처는 정확도를 저하시키지 않고도 모델 크기를 상당히 줄여 주었지만, 여전히 모바일 앱에 대한 OTA 업데이트를 지원하기 위해 필요한 수준보다는 꽤 높은 수준이었습니다. 우리는 그 다음으로 TensorFlow의 미리 빌드된 양자화 모듈을 사용하여 연결된 뉴런 간에 가중치의 충실도를 낮춤으로써 모델 크기를 줄였습니다. 양자화 모듈은 모델 크기를 1/4로 줄였지만, Quantiphi가 SqueezeNet이라고 하는 새로운 접근법을 사용하여 혁신을 이루었을 때 모델 크기가 급격히 감소했습니다.

SqueezeNet 모델은 UC 버클리와 스탠포드의 연구진으로 구성된 팀이 2016년 11월에 발표한 모델입니다. 이 모델은 작지만 고도로 복잡한 디자인을 사용하여 Imagenet과 같은 유명한 벤치마크를 기준으로 훨씬 더 큰 모델과 유사한 수준의 정확도를 충족시켜 줍니다. Quantiphi는 SqueezeNet CNN을 사용하도록 문자 인식 모델의 아키텍처를 재구성한 후 특정 매체 유형의 모델 크기를 1/100로 줄일 수 있었습니다. SqueezeNet 모델은 본질적으로 작으므로 기능이 더욱 풍부한 특징 감지 아키텍처를 구성하여 SqueezeNet 없이 훈련된 첫 번째 모델 배치에 비해 훨씬 더 작은 크기에서 더 높은 정확도를 달성할 수 있었습니다. 이제 우리는 원격 기기에서 쉽게 업데이트할 수 있는 매우 정확한 모델을 가지고 있습니다. 능동 학습 전 최종 모델의 인식 성공률은 96%에 가까웠고, 이를 문자 인식 정확도로 변환하면 99.7%에 달하는 수준입니다(즉, 1,000개 문자를 예측할 때 불과 3번의 누락만 발생).
다양한 유형의 가림, 변환, 카메라 초점 문제를 처리하는 유효한 제품 코드 인식의 예

AI를 통해 경계 뛰어넘기

인공 지능이 진보하고 TensorFlow가 성숙 단계에 들어감에 따라 우리는 결국 오랫동안 원했던 구매 증명 기능을 구현할 수 있게 되었습니다. 제품 코드 인식 플랫폼은 2017년 2월 후반에 출시된 이후 십여 가지 홍보 활동을 지원했으며 스캔된 코드 수가 180,000여 개에 달했습니다. 이제 이 플랫폼은 북미 지역에서 펼쳐지는 코카콜라의 모든 웹 기반 홍보 활동에서 핵심 구성 요소가 되었습니다.

AI 지원 제품 코드 인식 플랫폼으로 전환한 것은 다음 두 가지 주요 이유에 따라 가치가 있었습니다.
  • 원활한 구매 증명이 시기적절하게 이루어졌습니다. 이는 전반적으로 모바일 퍼스트 마케팅 플랫폼으로 전환한 것과 같은 결과였습니다.
  • 코카콜라는 기존의 기성 OCR 소프트웨어에서 작동하는 충실도가 높은 글꼴을 지원하도록 생산 라인의 프린터를 업데이트해야 한다는 요구 사항을 없앰으로써 수백만 달러의 비용을 절감하는 효과를 얻었습니다.

제품 코드 인식 플랫폼은 코카콜라 내부에서 대규모로 새로운 AI 지원 기능을 최초로 실행한 사례입니다. 이제 우리는 새로운 제품 개발에서 전자 상거래 소매 최적화에 이르기까지 여러 비즈니스 라인에 걸친 AI의 응용을 연구하고 있습니다.