Posts

공유 모빌리티 회사로 합류

Image
공유 모빌리티 시장 여러 자료를 살펴보니 2010년부터 공유 모빌리티 시장이 빠르게 발전하기 시작했다.  최근에는 1천만명 이상으로 성장했고 Frost & Sullivan에 따르면 2025년까지 그 이용자 수는 3600만 명으로 연간 성장률은 16.4% 성장을 예측하고 있다. Global Market Insights는 2024 년에 전세계 자동차 공유 시장의 가치를 110억 달러로 예측한다. 
현재 주요 공유 모빌리티 시장은 서유럽과 미국이며, 전문가들은 아시아가이 분야에서 가장 빠른 성장을 경험할 것이라고 예측하고 있다. 그랩이라는 회사는 동남아 8개국 336개 도시에 각종 모빌리티 서비스를 제공하는 세계 3대 차량 공유 서비스로 성장해있다.
Source: Frost & Sullivan, Future of Car Sharing Market to 2025
한국은? 이건 지극히 내 생각이지만, 현재 이용 고객은 300만 정도 되는 것 같다. 디디추싱이 한국 진출을 노리고 있지만 국내 플레이어도 빠르게 움직이고 있다보니 2배는 문안하게 성장 가능하지 않을까 생각한다.

B2C만 보았을 땐 규모에 경제 특성이 있어서 자연독점으로 가게 될 공산이 크고, P2P 우버 처럼 규제를 벗어나 다양한 서비스로 진화할 수 있을지는 미지수.

성공 키포인트? 카셰어링 서비스는 휴대폰에 앱을 설치하면 계정을 등록하고 차량을 렌트하며 시간과 함께 이동 거리를 측정하고 렌트 비용을 지불하는 방식으로 동작한다. 이 과정에 신뢰성과 유용성은 고객 만족에 영향을 미치는 주요 문제 중 하나다. 그 중 가장 중요해보이는 3가지는 아래와 같다:

등록 절차 – 보안 상의 이유로 자동차 공유 회사는 운전 면허증, 신용 카드 번호 또는 개인 신분증 사진 등을 요구한다. 사용자를 유지하려면이 프로세스의 단순화와 신뢰성을 극대화해야한다.신뢰성 – 코드 및 이미지 스캐닝, GPS, 지불. 모든 프로세스를 올바르게 처리하려면 응용 프로그램의 각 구성 요소가 매끄럽고 빠르게 실행되고 가능한 적은 배…

인간 본성의 법칙 (책 리뷰 + 잡담)

Image
점심 먹고 서점에 들러서 집어든 책이 하나 있다. "인간 본성의 법칙", 몇 장 읽어보면서 바로 몰입되는 책. 아직 다 읽지 못해서 리뷰 하긴 뭐 하지만, 과거 내 행동들에 대한 부끄러움, 감정을 배제한 이성적 의사결정에 큰 깨달음을 얻었다.

 사실 표정이 순수하고 자연스럽지 못한 사람은 그 입에서 아무리 유식하고 논리 정연한 이야기가 나온다 해도 본능적으로 의심하게 되지 않나?


 인간의 본성을 이해하고, 나를 이해하고, 내 행동들을 조금 더 이성적으로 결정한다면 아마도 나는 더 좋은 사람이 될 수 있으리라. 마음을 비워라. 감정을 내려놓자.

무한의 세계

무한 집합의 크기Cardinality, 즉 원소의 개수를 수학에서는 '농도'라고 말한다. 유한 집합의 크기는 그대로 원소의 개수 이지만, 무한 집합의 경우는 원소의 개수를 낱낱이 셈하는 것은 불가능하기 때문에 '농도'라는 말을 사용하고 히브리 문자 ℵ로 표시하고 aleph라 읽는다.

자연수 전체의 개수, 즉 농도가 ℵ0인 집합은 \(\{ℵ0,ℵ1,ℵ2,…\}\) 와 같이 자연수로 번호Index를 붙일 수 있는 집합이라 하여 가부번 무한(집합)이라고 하고 \(\{ℵ_n : n ∈ ℕ\}\) 와 같다.

자연수 다음에 등장하는 것은 유리수(분수)이다. 분수는 직선 상에서 아무리 짧은 부분을 잡아도 그 속에 또 분수가 촘촘히 박혀 있다. 즉, 유리수의 집합은 조밀한 농도를 지닌다. 그러나, 분수 전체의 집합도 자연수의 집합과 1대 1 대응이 가능하며, 따라서 유리수 집합도 같은 가부번 집합이다.

그런데, 0 에서 1 사이의 선분 상의 점을 나타내는 수들의 집합은 아무리 해도 1, 2, 3, ...과 같이 번호를 매길 수 없다. 실수 집합의 농도는 연속의 선분 상의 점의 개수와 같기 때문에 연속체 농도 또는 비-가부번 농도라고 부르며, ℵ1으로 나타낸다. 즉, 실수의 집합은 자연수보다 훨씬 큰 무한 집합이다.

거시세계와 미시세계가 프랙탈 구조로서 연속되어 있다는 석가모니의 우주관에서 소름이 돋을수 밖에 없다! 우주의 무한 크기에 놀랄 것 없이 우리 자체가 훨씬 큰 무한일지 모르겠다.

CTC 손실 함수

\(L\)을 label의 집합, \(L’\)을 공백이 포함된 label의 집합이라고 하자. 길이 T를 갖는 sequence에 대하여, 모든 가능한 paths(network output)의 집합을 \(L’^T = \pi\) 라 하자. 실제 labeling z를 갖는 input x에 대하여, 제대로 labelling이 될 확률을 최대화 하는 문제가 된다. 이후에 maximum likelihood estimation 을 이용해 최적화한다.

\(\hat\theta = arg \max_{\theta} \prod_{i=1}^N p(Z^{(i)} | X^{(i)} ; \theta)\)

output에서 얻은 labels에서 중복되는 label과 공백을 없애는 n:1 함수를 B라고 정의하자. 함수 B는 “Collapsing” operation한다고 칭한다. 예시는 다음과같다.
B(_A__AAAA_BBBCCCC) = B(A_A_BBBB_CC) = AABC

B의 역함수 B-1 가 정의 가능하며, 이 함수는 ground truth에 대하여 모든 possible paths로 map이 가능하다.
B-1(ABCC) = -A-AAA-BBBCCC, 등등등등등 (1:n 함수?형태)

역함수의 성질을 수식으로 표현하면 우측과 같다: \(\{ B(x)|x \in B^{-1}(z)\} = z \)

이제, 주어진 labelling z에 대한 가능도를 정의할 수 있으며, z로 Collapse 가능한 모든 paths가 나올 확률의 합으로 가능도를 정의할 수 있다.

\(p(Z|x ; \theta) = \sum_{\pi \in B^{-1}(z)} p(\pi | x ; \theta) \)

앞서 본 인풋x에 대해 labeling z 를 최적화 하려는 식(아래의 식) 안에 대입을 하고 합의 형태로 바꿔 minimazation 문제로 바꾸면 최종식은 다음과 같다.

\(\hat\theta = arg \max_{\theta} \sum_{i=1}^Nlog [ \sum_{\pi \in B^{-1}(z^…

How socket.io-redis adapter works? 레디스 어댑터 동작원리

Image
보통 실시간 메시징 처리에 socket.io와 redis를 많이 사용하는데, 그 동작 메커니즘이 자세히 소개된 글을 찾기 어려웠다. 이유는 간단한데, 소스코드가 그냥 간단해서 글로 쓰고 자시고 건더기도 없어 그런듯. 
기본적으로 socket.io는 Server, Namespace, Room, 그리고 Socket으로 구성되어있고 멀티 노드를 위해 pluggable 디자인 방식으로 Adapter라는 것이 존재한다. 
Default In-Memory 방식은 배열에 socket과 room 정보를 저장하기 때문에 웹 서버에 붙어있는 clients 외 에는 알 길이 없다. 이때 redis adapter를 사용하면 다음과 같이 동작하는데, sender가 원격에서 넘어왔다면 그냥 내 로컬 clients에게 deliver하는 것으로 종료하고 그렇지 않으면, 다른 노드에게 publish하여 메시지를 전달한다. 

분산 인프라 치고는 놀랍게도 Javascript 몇 줄 안되는 소스코드로 node, socket.io, 그리고 redis가 동작한다. 좀 이해하기 쉽게 도식화하면 다음과 같다:

딥 러닝의 블랙 박스 열어보기

Image
Opening the black box of Deep Neural Networks via Information
- https://arxiv.org/pdf/1703.00810.pdf

지금까지 딥 러닝은 어떻게 동작하는지 이해할 수 없다고 믿어져왔다. 그러나, 천재들은 그 근본 원리를 이해하려고 노력하고 있지.

이 논문은 SGD가 무슨 역할을 하는지에 대한 해석으로, 이들은 SGD가 drift와 diffusion단계로 구분된다고 설명한다.

첫 drift 단계에서는 multidimensional space를 탐험하고, 수렴을 시작하면 diffusion 단계로 접어들어 (첨부 그림에서 점선 오른쪽에 해당) 굉장히 느려지기 시작하며 chaotic 한 단계로 들어가는데 이게 바로 네트워크가 압축하는 법을 배우는 과정이라는 것이다.



SGD의 무질서도는 local minima에 빠지지 않고 더 나은 방향으로 수렴 할 가능성을 제공 할 뿐만 아니라, diffusion 단계에서 매우 효과적인 internal representations(?)를 생성하는데 자기가 볼쩍에 다소 과한것으로 보이며, 자기들의 IB iterations with stochastic relaxation methods로 DNN 학습 방법을 개선할 수 있을거라고 얘기한다.

제프리 힌트 교수가 지대한 관심과 찬사를 보냈기에 많은 관심을 받고 있는 내용인데, 딥 러닝 대가들의 근본 원리와 최적화 이론에 대한 얘기라, 나는 훔쳐만 봤지 뭔소리인지는 정확히는 이해하기 어렵다.