2015. 6. 9. 18:08 먹고살려고 하는 일

이번 WWDC의 방향성에 대해 간단하게 살펴봅니다.


OS X가 요세미티에서 앨 캐피텐으로, iOS가 ver 8에서 9로, watchOS가 1에서 2로 버젼업되면서 전체적으로 큰 변화보다는 디테일에 치중한 마이너 업그레이드들로 완성도를 높여가는 모습을 보여줍니다. 그런 가운데에서도 패드나 맥북의 아이댄티티의 진화를 위한 Split Screen기능이나 뮤직 서비스의 확장 같은 굵직한 변화도 포함하고 있으며, 개발자적 관점에서 큰 의미를 지닐 통합개발을 위한 Swift의 ver 2의 소개 및 오픈소스화도 언급되었습니다.


이번 WWDC에서 주목할만한 것은 deep linking과 app indexing을 통해 앱의 독립성 및 닫힌 정보관리를 극복하기 위한 움직입니다. 이는 이미 google에서도 작년부터 활발히 연구 및 적용되고 있습니다. 앱 내에서만 독립적으로 관리되던 컨텐츠들을 일정 규칙으로 인덱싱하여 통합검색에 노출시킬 수 있도록 하는 것이 app indexing이며, 웹에서의 하이퍼링크로 앱 내의 컨텐츠로 연결해주는 것이 deep linking 입니다. 이는 앱이 더 이상 독립적인 블랙박스가 아닌 웹과 유기적으로 seamless하게 상호작용 할 수 있게 된다는 이야기로, 모바일 프레임웍에서는 큰 컨셉의 변화가 일어나는 현상이 될 것이라 생각합니다. 앱을 만드는 개발자들은 이제 '어떻게 앱에 좋은 기능을 잘 구현할까'에 더불어, '어떻게 웹 및 앱들과의 상호작용을 설계할까'에 대한 고민을 해야 할껍니다.
또 하나는 Proactive라는 단어가 잘 설명해주고 있는데요. 이제 모바일 디바이스는 시키는 일을 잘 수행하는 역할에서, 사용자가 무엇을 하고 싶어하는지를 예측하고 제시하는 단계로 진화하게 된다는 것입니다. google에서는 구글나우를 통해 비슷한 개념의 적용이 이루어지고 있죠. 사용자가 무릎을 칠만한 적절한 제시를 하기 위해서는 사용자의 여러 과거 액티비티 데이터들을 효율적으로 분석하여야 합니다. 이 데이터들을 학습하여 사용자의 패턴을 분류해내고, 다시 현재의 환경데이터를 기반으로 상황에 부합하는 제시를 하게 됩니다. 예를 들면, 퇴근 즈음 근처 정류장에 집에가는 버스 도착시간을 보여준다던지 하는 것이죠. 이 부분은 머신러닝이나 딥러닝 등의 이름으로 다양한 연구가 이루어지고 있으며, 데이터 분석 인프라나 기법의 발전을 기반으로 많은 성과를 내고 있는 분야이기도 합니다. 애플에서는 위의 개념들을 기존 OSX나 iOS의 아이댄티티를 유지한 채로 자연스럽게 진화시키고 있는 모습을 보여줍니다.


Keynote를 봐도 알 수 있듯이 OSX나 iOS는 점점 닮아가고 있습니다. iCloud를 통한 단순한 데이터 연계로 시작되었던 seamless 컨셉은, 두 OS가 하나로 닮아가서 결국은 하나의 경험으로 완성될 수 있도록 진행되고 있습니다. 
iPad Air 2부터 적용되는 Spilt Screen기능(멀티태스킹)은 동일한 UX로 OS X에도 적용이 되고 있는 모습을 확인할 수 있습니다. 이미 멀티윈도우가 가능한 OS X에서 Spilt Screen이 가지는 의미는 무엇일까요? 이는 효율적인 UX에 대한 끝없는 시도(멀티태스킹을 수행하는데에는 기존의 윈도우 방식 보다는 Spilt Screen이 훨씬 직관적이고 효과적이며 MS에서 먼저 소개되었습니다) 그리고, 모바일과 랩탑이라는 서로 다른 디바이스에서도 동일한 사용자 경험을 제공하려는 의지입니다. 게다가 이런 노력을 사용자 경험에만 치중하는 것이 아니라 Swift이라는 단일 개발 프레임웍을 같이 제시하여, 개발자들이 최소한의 노력으로 OS X와 iOS를 연계할 수 있는 환경을 만들어내고 있습니다.(이번에는 기존에는 별도였던 OS X와 iOS 개발자 프로그램을 통합한 프로그램도 저렴한 가격에 제공하기 시작했죠)


Keynote에서는 위의 큰 컨셉 하에 여러 세부 기능들을 차곡차곡 소개하고 있습니다. 관심 있으신 분들께서는 시간 날 때 Apple.com에서 하나하나 읽어보시면 좋을 것 같네요.(개발자적 관점에서는 UI 테스트프레임웍이 xCode에 추가된 것이 반가왔습니다.) 어떻게 보면 '조각조각 대단한 것은 하나도 없네' 싶을 수도 있지만, 개인적으로는 매번 볼 때마다 많은 생각을 하게 됩니다. 다음에는 어떤 내용들이 소개될지 벌써부터 궁금해지네요.

posted by zstus
2015. 6. 3. 18:44 먹고살려고 하는 일

요즘 주변에 딥러닝이 화두다. 딥러닝은 컴퓨터가 사물이나 데이터를 분류(를 통한 인식까지도) 하는데 사용되는 방법론 중의 하나이며, 특히 인공신경망 알고리즘을 심화시킨 심화신경망 알고리즘을 활용한 학습과정을 이야기 한다.

 

사람은 음악을 듣거나 사물을 볼 때 순간적으로 그 대상을 식별하고 인식하게 되며, 그것이 바로 모든 작업의 시작이 된다. 음악을 듣고 그 것이 누구의 음악인지 바로 알아낸 후 그 정보를 활용해 쇼핑몰을 검색해 해당 음악가의 CD를 사거나, 차도에서 중앙차선을 넘어가는 차를 보고 그 인지된 정보로 교통법규를 위반한다는 판단을 한 후 신고하기도 한다. 하지만, 컴퓨터는 그 도입의 인지단계가 사람만큼 쉽지 않은 것이 문제다. 컴퓨터는 소리 혹은 영상과 같은 모든 정보들을 동일하게 0과  1이 조합된 데이터로 받아들일 수 밖에 없기 때문이다. ‘기계가 이 장면을 사람이 보는 것처럼 인지할 수 있다면’ 정말 거짓말처럼 컴퓨터로 한 단계 진화된 서비스를 수행할 수 있게 된다. 


인공신경망은 사람이 뇌를 사용해 사물을 학습하는 과정을 그대로 활용한 이론이다. 이 이론은 1942년에 소개가 되었지만 여러 가지 한계로 제대로 된 성과를 보여주지 못해 크게 주목을 받지 못했다. 학습을 통한다는 것 자체가 수많은 데이터를 분석 처리해서 공통적인 패턴을 찾아낸다는 이야기이기 때문에, 그 때의 컴퓨터 연산능력/데이터 처리속도의 한계 등으로 실제 적용할만한 결과를 만들어내는 것이 쉽지 않았다. 

하지만, 하드웨어는 눈부시게 발전했으며, 빅데이터로 소개되고 있는 분석 프레임웍도 지속적으로 진화하여 예전에는 생각지도 못했던 대용량의 데이터 분석이 가능하게 되었다. 게다가, 인공신경망 이론을 보완하는 알고리즘의 출현까지 서로 시너지를 내어 기계 인지학습분야가 눈에 보이는 여러 성과들을 보여주고 있는 상태이다. 


뉘앙스엔진을 활용한 음성인식이나 페이스북의 얼굴인식에서부터 딥러닝을 활용한 구글의 사진 속 음식의 칼로리를 계산하는 인공지능의 개발까지 모두 [사람의 도움이 유리된 기계 만의 사물 인지]에서부터 시작된 서비스들이다. 일단 [인지]가 가능해지면 그 뒤에 여러 논리적인 알고리즘을 덧붙여 - 이건 IT하는 사람들이 누구나 자신 있어하는 고전적인 일이다 – 여러 수준 높은 서비스들을 만들어낼 수 있다. 결국 판단하는 것 보다 컴퓨터가 스스로 정보를 수집하는 것이 더 어려운 문제인 것이다.

 

물론 아직도 갈 길은 멀지만 머지 않아 헤일로의 코타나나 엑스마키나의 에이바를 내 주변에서 만나게 될 지도 모를 일이다.

posted by zstus
2014. 11. 5. 11:55 사는이야기

커피를 주문하러 엔제리너스에 들어갔다. 포스 앞에서 뭘 시킬까 고민을 하고 있는데, 앞의 직원이 웃으며 뒷쪽의 포스터를 가리키네. 따뜻한 말 한마디 이벤트라 저게 뭐지? 포스 앞에 오래 서있는 것 딱 질색이지만 뒤에 기다리는 손님이 없어서 천천히 읽어봤는데, 미리 정해진 따뜻한 멘트로 주문 하면 할인을 해주는 행사를 진행하고 있다는 것이다. 즉,

'아메리카노 한잔 주세요' 하면 20% 할인이고(원래 이렇게 하지 않나?), '안녕하세요? 제가 좋아하고 사랑하는 아메리카노 한잔 주실 수 있을까요?' 정도까지 해낸다면 무려 50% 할인이다. 사실 할인해준다는데 싫어할 사람이 있을까 싶지만, 저렇게 실실 쪼개면서 '자. 내가 시키는대로 할꺼지?'하고 있는 점원을 보고 있으니 짜증이 확 솟구치는 것을 어쩔 수 없다.

'50%인데.. 안할 수 있겠어? ㅋㅋ'

마치 서부시대의 악당이 총싸움에 이겨서 가랑이를 벌리고 주인공에게 그 사이로 지나가라고 하고 있는 듯한 표정인데 이건.
나는 남이 무슨 말을 하라고 하는 상황을 죽기보다도 싫어 하고, 그런 경우 그 말이 하고 싶었다 해도 그냥 안하고 마는 성격이다. 초등학교 시절 보이스카웃에서 선서를 따라하는게 어찌나 싫었던지 웅얼웅얼 끝까지 제대로 해본 적이 없을 정도다. 친한 사람들에게서도 그 핀잔을 받으며 꿋꿋하게 살아왔는데 내가 왜 내돈주고 커피 마시려는데 이런 시련을 겪어야 하는거지?

기분좋은 이벤트에 내가 뭐하는 거지 싶긴 했지만, 나는 나도 모르게 인상을 찌푸린 상태로 이렇게 내뱉고 있었다.

'아.메.리.카.노'

...
..

지금은 좀 후회되네. -_-





posted by zstus
2014. 7. 30. 23:30 먹고살려고 하는 일
2011년 IBM은 지난 2년 동안 생산된 정보가 인류 탄생 이후 생산된 정보량보다 많다는 발표를 했다. 정보에 대한 정의를 어떻게 내리느냐에 따라 이견이 있을 수도 있겠지만, 데이터에 큰 관심을 가지고 있지 않은 사람들도 이미 스스로 혹은 자신도 모르게 자신의 정보를 여기저기 흘리고 있는 상황에서 해당 내용을 반발할 논리를 찾는 것이 더 힘들 정도이다. 
기업 내에서도 특별한 목적을 가지고 설계하여 쌓아둔 데이터들보다 의도하지 않게 쌓이고 있는 데이터들이 점점 더 많아지고 있다. 게다가, 이미 잘 구조화 된 데이터라도 수 주는 돌려야 통계자료를 만들 수 있던 옛날과는 달리 발달한 기술 및 하드웨어 덕에 구조화 되어있지 않은 데이터를 가공해 넣는 시간까지 포함해도 하루 이틀이면 뚝딱 통계 자료가 나와버리니, 컨설팅 혹은 IT 서비스 업체들은 빅데이터 타이틀만 가지고 무조건 도입하라고 기업 문을 두드리는 현상이 발생하는 것도 이상하지는 않다.(무작정 넘어가면 안된다.)

그렇다면, 여기서 궁금해지는 것이 있는데, 데이터를 활용한 분석은 과학인가 하는 것이 그것이다. 비즈니스를 하는 사람들 중 데이터 분석에 대한 이야기에 대해 이렇게 반응하는 사람들도 꽤 있다. 

'데이터 분석은 소용이 없어. 비즈니스는 과학이 아니란 말이야.’

아무리 과학적인 분석을 수행해도, 비즈니스적 경험을 통한 직관이 더 중요하고 성공 가능성이 높다는 이야기일 것이다. 그렇다면, 분석은 정말 과학일까? 
분석은 물론 과학이다. 좀 더 상세히 이야기하면 분석하는 방법론 및 도구들이 모두 과학이라는 것이다. 하지만, 그 분석 도구를 통해 생산된 통계 데이터는 과학이 아니다. 데이터는 과학적인 것 처럼 보이지만, 그 데이터 필드를 채우는 실제 데이터들은 개인의 행동 패턴이나 상황 혹은 상태를 담고 있는 정보다. 이는 모두 개인화 된 정보들이며, 일반화 된 정보와는 성격이 전혀 다르다. 모든 로우 데이터들은 실제로 존재하는 누군가의 행동/성향과 1:1로 매핑이 되는 것이다. 
개발자는 구구단 계산 프로그램을 만들기 위해 구구단을 일반화시킬 수 있는 공식을 생각해 내고, 이것을 프로그램으로 구현한다. 이것은 과학적 산출물이 된다. 하지만, 개발자가 한국어를 영어로 번역하는 프로그램을 만들어야 한다면 고민하는 시간이 길어질 수 밖에 없다. 번역에 대한 과학적 공식을 만들기 위해서 수많은 인문학, 언어학적인 고민이 수반되어야 하기 때문이다. 제대로 된 번역을 이행하기 위해서는 여러 실제 번역 정보들을 바탕으로 로직을 계속 업그레이드 해야 하는데, 관사만 예로 들어도 명사에 a/an 혹은 the를 사용하는 유형에 대한 공식을 일반화시키는 것은 쉬운 일이 아니다. 언어는 과학적 정리를 목적으로 탄생한 것이 아니라, 커뮤니케이션을 목적으로 만들어진 것이기 때문이다. 그렇다면, 어떻게 완벽한 번역 로직을 만들어낼 것인가? 아마 만들어낼 수 없을 것이다. 
그래서 데이터를 활용하는 것이다. 사람이 사용하는 문장 경우의 수는 몇 개나 될까? 물론 셀 수도 없이 많겠지만 무식하게 한국어로 사람들이 번역을 원할 것 같은 문장을 만들고, 이를 자연스럽게 번역하여 데이터에 쌓아둘 수 있다고 상상해보자. 그게 가능하다면 번역 프로그램에서 사용자가 요청한 문장을 저장해 둔 문장 내에서 찾고 이와 매핑되어 있는 번역 문장을 넘겨줄 수 있다. 물론 데이터가 많이 쌓이기 전에는 해당 문장이 존재하지 않는 경우가 더 많을 것이다. 그 때는 처음에 만들었던 어설픈 번역 로직을 사용해서 수행한 번역을 보여주자. 그리고는 밑에 링크를 만들어두는 것을 잊지 않는다. ‘이 번역보다 나은 번역을 제안해 주시겠습니까?’ 그 링크를 클릭하여 접수된 번역은 다시 우리 데이터베이스에 추가되어 다음 번에 더 완벽한 번역을 제공할 수 있게 될 것이다. 이런 번역 알고리듬(물론 이보다는 훨씬 복잡한 알고리듬이 있다.)은 언어를 도해하여 공식을 만들어냈다고 보기는 힘들 수도 있지만, 가장 정확한 번역을 제공할 가능성이 높다.

말이 길어졌지만 하고 싶은 이야기는 데이터 기반의 분석이라는 것도 실제로 한 사람 한 사람의 개인 의지가 반영된 정보를 종합하여 보기 편한 형태로 요약한 것이라는 이야기이다. 분석 데이터 그 차제는 인문학적 트랜드를 담고 있는 가장 의미 있는 정보이고, 이 분석 데이터를 기반으로 미래를 예측하거나 비즈니스에 활용하는 것은 다음 단계의 일이다. 학자들은 데이터를 기반으로 구구단 공식을 만들어내듯 경제 예측 공식을 만들어낼 것이고, 비즈니스맨이라면 해당 데이터 기반에 자신의 비즈니스적 경험이나 직관을 활용하여 새로운 액션플랜을 만들어낼 수도 있다. 

통계 및 분석자료를 들여다 보는 것은 ‘카드를 긁는 고객을 눈 앞에서 바라보는 작업'이라는 것을 잊지 말자.


posted by zstus
2014. 7. 14. 09:56 먹고살려고 하는 일

오늘은 검색 알고리듬 이야기.

태초에 웹이 있었지만 웹이 지식의 보고가 된 가장 결정적인 사건은 검색사이트의 등장이었다. 꽤 오래 전에는 기업들이 직관적인 인터넷 주소를 점유하기 위해 노력했지만, 이제는 아무도 그것에 신경쓰지 않는다. 대부분 검색사이트를 통해 진입하는 것이 일반화 되어있기 때문이다. 

그렇다면 검색엔진이라는 것은 IT사이드에서 창조해 낸 새로운 알고리듬일까? 검색엔진의 기본은 인덱스를 사용하는 것이며, 사실 인덱스는 이미 기존에도 꾸준히 사용해오던 방식이다. 사전이나 학술서들의 맨 뒤 색인 페이지가 바로 그것이다. 인덱스의 기본은 페이지 내의 키워드와 그 키워드가 포함되는 페이지를 연결해두는 것이다. 그리고, 그 키워드들을 알파벳 순서로 나열해두면 작업이 끝난다. 사람들은 사전을 검색하는 요령으로 맨 뒷페이지에서 키워드를 찾고 그 옆에 제시된 페이지로 이동을 한다. 웹페이지도 동일하다. 검색회사에서는 세상의 모든 웹페이지 내의 키워드들을 추출하고 그것과 해당 키워드가 존재했던 페이지의 주소를 연결해둔다. 이것이 검색엔진의 핵심 알고리듬이다.
여기에 메타워드 트릭이 추가되어 더욱 정교한 검색이 가능해졌다. 메타워드를 사용한 검색은 페이지 내 키워드를 모조리 인덱싱하던 것에서, 해당 키워드가 존재하는 부분에 대한 정보(제목, 바디, 주석 등등)까지 함께 고려하여 검색하는 것이다. 예를 들어 키워드 검색을 할 때 바디보다 제목에 키워드가 들어있으면 더 히트율이 높은 페이지라 생각하고 보다 상위에 보여주는 식이다.

이쯤에서 리얼월드에는 존재하지 않는 웹의 구조를 활용한 획기적인 페이지랭크 알고리듬이 등장하게 된다. 이 페이지랭크 알고리듬(검색사이트에서는 검색 후 히트율이 높을 것 같은 페이지부터 차례로 보여주는게 되는데, 이 때 페이지 간의 랭킹을 계산하는 알고리듬)이 현재의 구글을 만들어냈다. 
이 알고리듬이 리얼월드에 존재하지 않는 이유는 바로 하이퍼링크를 사용하기 때문이다.(리얼월드에는 하이퍼링크가 없으니까) 하이퍼링크는 웹의 가장 중요한 기능으로 페이지 중 특정단어를 클릭하면 그 단어에 맞는 사이트로 이동하게 된다. 페이지랭크 알고리듬은 특정 페이지의 랭크를 정할 때 해당 페이지로 연결되는 외부 하이퍼링크의 갯수가 많을 수록 랭크를 높게 주게 된다. 물론 이 외에 여러가지 알고리듬으로 하이퍼랭크 알고리듬을 보정하게되며, 구글도 현재 200개 이상의 보정 알고리듬을 함께 돌리고 있다. 

요즘은 자고 일어나면 새로운 인프라나 테크놀로지가 출현된다. 어떤 것이 살아남거나 소멸할지 재빨리 판단해야하고, 나아가서 그 인프라의 특성을 이용해 또 어떤 의미있는 알고리듬들을 만들어낼 수 있을지 고민하는 것은 IT를 하는 사람들만의 특권이다. 뒤꿈치 따라가며 감탄만 하지 않으려면 부지런히 움직일 일이다.

posted by zstus