인공지능 기술을 품은 제품이 기하급수적으로 늘어나고 있습니다. 디자이너가 하는 일에도 상당한 변화가 있는데요. 위기는 기회다라는 말처럼, 남들보다 한 발 빠르게 적응하는 것이야 말로 디자이너의 강점이라고 봐요. 그런 면에서 몇 가지 조언을 드리고자 이 글을 작성했습니다.
인터넷에 공부할 자료는 엄청 많은데, 인공지능 개론 글들은 약/강 인공지능, 지도학습/비지도학습, Regression/Classifier, Deep learning 등등의 분류와 정의에 큰 시간을 할애합니다. 전부 이해하려고 집착하다가 지쳐요. 상당한 경험이 쌓인 후에 다시 돌아봐도 충분합니다. 어떤 자료들은 인공지능의 구현에 초점을 맞춰요. 아무리 진입장벽이 낮아졌다지만, 의미있는 경험을 쌓으려면 최소한 일주일은 투자해야 해요. 교육과정에서 얻을 수 있는 경험은 "모델 셋업하고 데이터 넣었더니 정확도가 나오네!" 정도니까, 구현에 집착할 것 없어요. 공부에도 가성비가 중요합니다. 디자인의 전문성은 분야나 대상에 따라 필요한 지식을 빌려다 쓰는 거라고 생각해요. 최소한의 노력와 시간을 들여서 최대한의 효과를 내야죠. 분류와 구현을 스킵하고, 인공지능의 디자인 이슈에 포커스를 맞추는게 가성비 면에서 제일 좋아요. 몇가지 예를 들어드릴께요.
현재까지는 인공지능 = 기계학습으로 보심 됩니다. 기계가 학습을 하려면 데이터가 필요해요. 그 데이터는 대부분 인간의 행위를 기록한 것들인데, 데이터가 없을 때는 만들어서 써야하죠. 그래서 학습 데이터를 만들기 위한 플랫폼도 많아요. 가장 유명한 것이 Amazon의 Mechanical Turk이구요. 더 B2B로 전문적인 솔루션을 제공하는 Figure Eight같은 업체도 많이 있습니다. 학계에서는 Lab in the wild가 대표적인 케이스죠. 저도 제 프로젝트를 하면서 Mechanical Turk를 많이 써봤는데요. 데이터를 수집하기 위한 태스크 디자인이 정말 중요해요. 너무 어렵거나 긴 집중을 요구하면 데이터에 노이즈가 팍팍 생겨요. 상황 설정도 잘해야 고퀄의 데이터가 모입니다. 사실 제일 좋은 건 이런 외부 플랫폼보다는 제품 자체에서 실제 사용자들의 일부로부터 데이터를 수집하는 건데요. 예를 들면 Gmail Lab에서 신규 기능들을 풀어놓고 일부 사용자들이 써보게 하죠. 올 초에 유튜브의 영상 분류 이슈가 있었죠. 사용자가 새로운 영상을 올리면 유튜브는 그 등급이나 광고용 태그를 자동으로 찾아내는데요. 과거에 아무리 모델을 잘 학습시켜 놓았어도, 매일 기존에 없던 종류의 영상이 새로 올라오고, 업로더들도 의도적으로 모델을 속이기 위해 계속 노력을 해요. 실시간으로 모델을 업데이트하고 대처하기 위해서 유투브는 전세계에 최소 수 만명의 컨텐츠 검수자들을 풀타임으로 고용해서 학습데이터를 양산하죠. 컨텐츠 검수자들의 효율과 정확도를 올리려면 그들에게 특화된 인터페이스가 필요해요. 그런 과정에서 데이터를 모으면 그게 다 다음 버전의 학습데이터가 되요. 어떤 식으로 학습데이터를 만들고, 계속 유지보수해갈지를 고민하는 것은 인공지능 디자이너가 다루어야 할 주요 과제 중 하나가 되었습니다.
사용자들이 인공지능과 상호작용하는 방식은 전통적인 제품과 사뭇 달라요. Uber드라이버들은 자신들에게 일을 할당해주는 인공지능을 인간 매니저에 비해 더 공정할 것이라고 생각하지만, 어떻게든 그 패턴을 파악해서 이익을 극대화 하기 위해 노력해요 (M.K. Lee, 2015). 인공지능 모델이 풀 수 있는 문제의 범위를 제대로 전달하지 못하면 사용자들은 너무 어려운 문제를 요구하고, 실수했을 때 실망해요. 대표적인 예가 마이크로소프트의 개XX (영어 버전에서는 Clippy)입니다. 필연적으로 발생하는 모델의 실수에 어떻게 대처해야 하는지는 Why PBD systems fail이라는 소논문에서 자세히 다루어져 있습니다.
비전문가들은 인공지능을 특정 제품으로 이해하려 합니다. 예를 들면, 알렉사, 알파고, 왓슨, 자율주행차, 로봇 청소기 등을 인공지능이라고 받아들이고, 디자인의 대상으로 이해하는 건데요. 인공지능을 보다 효과적으로 이해하려면 모델을 이해해야 합니다. 하나의 인공지능 제품은 다양한 모델의 결합이거든요. 알렉사처럼 음성인식비서는 사람의 음성을 텍스트로 변환하는 모델, 텍스트에 맞는 정보를 찾아주는 모델, 그걸 다시 사용자에게 들려주기 위해 음성으로 합성해내는 모델이 결합되어 있다는 걸 숙지해야 합니다. 그래야 제품이 이상하게 동작할 때 어떤 모델에서 문제가 발생했는지를 지적할 수 있죠. 전혀 다른 종류의 제품이더라도 같은 모델을 사용하는 경우도 많아요. 예를 들어, 동영상에서 사람의 위치와 움직임을 찾아내는 모델은 자율주행차 뿐만 아니라 대부분의 로봇, 감시 카메라, 인공지능 동영상 편집기 등 수많은 제품에서 비슷한 원리로 사용되거든요. 모델 단위로 이해하는 것이 왜 중요하냐면, 디자이너가 세상에 존재하지 않는 새로운 제품을 만들어내려고 할 때 이미 널리 쓰이고 있는 모델을 부품처럼 조합해야 하기 때문이에요. 스마트폰을 디자인 할 때, 적어도 디스플레이, 배터리, 전원 버튼 등의 부품을 배치하는 것처럼요. 같은 종류의 모델이라면, 현재 기술력으로 달성할 수 있는 정확도도 비슷해요. 예를 들어서, 사람의 음성으로부터 텍스트를 뽑아내는 모델은 현재 90%이상의 정확도를 낸다고 하니까 왠만한 제품을 제안할 때 걱정없이 포함시켜도 되죠. 하지만 텍스트로부터 사용자의 의도를 인식하는 문제는 분야에 따라 정확도도 너무 다르게 나와요. 막 던졌다가는 개발팀에서 불화살이 날라옵니다.
디스플레이나 배터리랑 달리, 인공지능 모델은 물리적인 스펙이 없는데, 그럼 마구 상상의 나래를 펼쳐도 되는 건가요? 노노! 그렇지 않습니다.
첫 번째, 모델의 인풋과 아웃풋을 정확하게 이해해야 해요. 예를 들자면, 스팸 필터는 단일 이메일을 스팸or정상 이메일로 분류하는데, 어떤 모델은 confidence score라고 모델이 얼마나 결과를 확신하는지도 같이 알려주기도 해요. 영상에서 물체를 인식할 때도 어떤 모델은 가장 확율이 높은 물체의 태그를 내놓지만, 다른 모델은 물체의 위치와 크기도 알려줘요. 쇼핑몰 상품 추천같은 경우에는 하나가 아니라 여러 개의 상품을 제시하는데, 사실은 사용자와 유사한 제품을 구매했던 사람들이 공통적으로 구매한 제품 중에서 사용자가 구매한 제품과는 거리가 먼 제품을 점수 매겨서 높은 순으로 보여주는 거에요. 모델의 정확한 인풋과 아웃풋은 때때로 사용자가 이해하는 모델의 역할과 달라요. 굳이 다 설명하는게 오히려 혼란스러울 수도 있고, 제품의 목적에 따라 두리뭉실하게 표현하는 경우도 많거든요. 디자이너들은 일단 정확히 이해해야죠.
두 번째, 모델의 정확도를 알아야 해요. 항상 완벽한 모델은 없거든요. 모델마다 정확도를 표현하는 방식도 제각각인데요. 약간의 확율적 지식이 요구되지만, 그렇게 어렵진 않아요. 일반적으로 쓰이는 Precision / Recall은 확실히 알아야 하고, Confusion matrix도 볼 줄 알아야 합니다. 그리고 정확도가 어떤 범위의 데이터에서 계산 된건지도 알아야 해요. 예를 들자면, 자율주행차의 모델이 90%의 precision과 80%의 recall로 보행를 인식한다고 하는데, 알고보니 비가 오는 상황의 데이터는 없었던 거에요. 정확도는 주어진 학습/평가 데이터 안에서만 적용된다는 사실을 항상 명심해야 해요. 더해서, 모델이 어떤 식으로 실수를 하는지 알아야 사용자가 큰 불편을 느끼거나 사고를 내지 않도록 제품을 디자인 할 수 있죠.
세 번째, 모델이 어떤 식으로 학습되는지를 알아야 해요. 학습이 전혀 필요없는 모델도 간혹 있지만, 대부분의 모델은 특정 데이터를 이용해서 학습되어 있거든요. 때로는 주기적으로 학습 데이터를 추가하고, 사용자마다 다른 데이터를 써서 학습시키기도 해요. 전자부품에서 전력이 얼마나 필요한지가 중요하듯이, 인공지능 모델은 학습 데이터가 얼마나 필요하고 언제 학습시킬지가 중요한 스펙이에요.
전통적인 제품 디자인은 제품의 동작 원리를 잘 설명하고 사용자가 책임지고 조작할 수 있도록 도와주는 것이 주요 목표중 하나였어요. 하지만 인공지능은 조금 달라요. 복잡한 모델의 동작원리를 설명할 방법도 없거니와, 그걸 전부 이해하면 굳이 인공지능을 쓰는 것보다 좋은 대안이 많아요. 그래서 또 가성비가 중요해요. 사용자가 인공지능을 최소한으로 이해하면서 잠재력을 최대한 뽑아내는 것.
일단, 처음에 몇 번은 무조건 되는 결과를 보여야 신뢰가 생겨요. 그러려면 모델이 확실하게 풀 수 있는 문제만 제공하도록 사용자를 유도하는게 디자이너의 역할입니다. 신뢰가 쌓이면 사용자가 조금씩 다양한, 그리고 더 어려운 문제를 제시하도록 유도할 수 있어요. 하지만 그러면서 모델은 조금씩 실수를 하게 될거에요. 실수는 나쁜게 아니에요. 완벽한 모델을 만드는건 엔지니어의 몫으로 남겨두고, 디자이너는 사용자가 모델의 성능에 대한 정확한 인식을 갖게 도와줘야 해요 - "이런 문제는 모델이 이 정도로 정확히 풀수 있구나". 실수가 발생했을 때에도 그냥 미안하다고 할 게 아니라 모델의 한계점을 잘 설명해줘서, 사용자가 비슷한 문제를 계속 던지거나 / 아예 사용을 중단하는 일이 없도록 해야죠. 더 나아가서, 사용자의 피드백을 받아서 모델을 수정하고, 수정된 결과도 알려줄 수 있으면 더할 나위 없을 겁니다.
일단은 제품이니까, 사용성 평가도 중요해요. 근데 인공지능 모델은 상황에 따라 만족도가 들쭉날쭉해요. 인터페이스 보여주고 기능 한번 써본 담에 "나 이거 좋아!"라고 할수 있는게 아니라, "음... 얘가 내가 원하는 걸 잘 맞추면 좋아할거고, 아님 안 쓸건데?" 뭐 이런 식으로 나오거든요. 정량 지표나 A/B테스트도 함께 적용하는게 효과적일 거에요. 정량 지표는 모델이 정말 잘 작동하고 있는지 디테일한 모니터링을 할 수 있어야 해요. 넷플릭스를 예로 들어볼께요. 영화를 추천해주는 모델이 있는데 그 정확도를 평가하려면 사용자의 어떤 행위를 기록해야 할까요? 단순히 영화를 선택하는 것 뿐만 아니라, 끝까지 봤는지, 중간에 얼마나 스킵을 했는지, 추천 리스트랑 어떤 식으로 인터랙션을 했는지 등등 다양한 행위를 기록해야 사용자가 모델을 어떤 식으로 받아들이고 있는지, 앞으로 개선하려면 어떻게 해야하는지 디자인 할 수 있어요. 마지막으로 디자이너만 할 수 있는 필살기가 하나 있어요. 사용자가 머리속으로 가지고 있지만 드러내지 않는 시그널이 자연스럽게 그리고 정확하게 표현되도록 환경을 조성할 수 있죠.
인공지능 모델을 직접 만들 일은 없을 거에요. 근데, 인공지능에 들어갈 학습 데이터, 평가용으로 모은 로그 데이터, 기타 등등의 자료는 아마 JSON이나 CSV로 만들어질 거에요. CSV는 엑셀로 읽어서 분석할 수 있지만, JSON은 Python같은 스크립트 언어로 분석해야 해요. 이건 정말 대안이 없어요. 인공지능 디자인에서는 포토샵보다 Python이 더 중요해요. Keep Calm and Learn Python!