Posts

RNN 기반 fraud detection

(Session-Based Fraud Detection in Online E-Commerce Transactions Using Recurrent Neural Networks) http://iiis.tsinghua.edu.cn/~weixu/files/SWang_ECMLPKDD_2017.pdf

 잘 작성된 논문을 읽고 도저히 블로깅을 안할 수 가 없네 (독창적이거나 인상적인게 거의 없는데 그냥 잘썼음 ㅋ). 

주 내용은 이상감지를 위한 가장 중요한 정보는 사용자의 브라우징 동작이나 세션 내의 사용자 클릭의 순서인데, 기존의 룰-기반, 그래프-기반, 전통적인 기계학습이나 CNN 모델은 시계열 상의 순서가 무시된 aggregated feature들만 사용하는 단점이 있다. 그래서 RNN 모델을 가지고 사용자 클릭 순서와 브라우징 행동을 파악(특징 추출)한 다는 것인데 중요한건 중국 최대 e-Commerce 회사에 적용되어 실제 활용되고 있는 모델이라는 것.

Holonomic brain theory and Capsule Network

Hinton's CapsNet explains about entity's pose, lighting and deformation, instead of shape feature and pattern. While I reading Hinton's idea, I thought about Holonomic brain theory.

"If a holographic image, containing the image of an apple, is cut in half and then illuminated by a laser, each half will contain the overall image of the apple! Even if the halves are sliced again and again, from each little piece of the film can be restored the image of a whole apple (although the image will become less clear with the reduction of the parts)."

Our brain is also very similar. We don't store images in brain, we store some transformed code. We don't lose our memory, it just fade out.

Gear Watchface Designer on Mac OS X

Image
재직 시절에 (싸게) 구매했던 기어 S3를 쓰다보면 watchface 권태기를 3개월마다 겪게 되는데, 그럴때마다 구매한게 지금 거진 20개 가까이 된다. 그런데 내 마음에 썩 들지도 않고 얼마 안하지만 아깝기도 해서 직접 만들어보기로 했다.

디자이너들을 위한 개발 도구는 Gear Watchface Designer를 검색해서 설치하면 되는데, Java 버전에 따라 키보드와 마우스가 먹통이 되는 현상이 있다. Java다 보니 뭐 맥북이든 윈도우즈든 상관은 없고, 최신버전 JDK에서는 동작하지 않고 반드시 JDK 8u151 [1] 버전을 설치해야 한다. 이것 때문에 개삽...

아래는 내가 지금 만들고 있는 watchface 인데, free 이미지를 활용해서 Roman 스타일로 내 맘에 꼭 든다 ㅋ 돈 받고 팔아봐야지~


Elegant Roman Javik 검색하면 나옴~

[1]. JDK 8u151 버전 설치 링크: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html?printOnly=1

경희대 강연자료

학생들 대상이라 .. 내 인생은 이랬노라 전달해주며 도움될만한 그리고 조금 뜨거워지도록 자극받을 만한 내용을 적었다. SW를 10년 이상 했지만 할만 한건지는 나도 잘 모르겠음.

Storm vs. Spark Streaming: 내부 메커니즘의 차이점

Image
트렌드 면에서는 기계학습에 밀린 것 같지만, 실시간 처리 또는 스트리밍 처리는 대단히 중요한 기술이다. 오픈소스로 존재하는 Storm과 Spark을 한번 비교해보자. 물론 솔루션 선택은 자유이고, 상황에 맞는 것이 바로 최적의 솔루션이다.

1. Task Prallel vs. Data Parallel

계산 프로그래밍 모델에서부터 느낄 수 있는 가장 뚜렷한 차이는 먼저, Storm은 Task Parallelism이고 Spark Streaming은 Data Parallelism이다.  개인적으로는 보다 완성도 높은 시스템을 구현할 수 있는 Storm의 계산 그래프 구조를 선호하지만 코드의 복잡도 면에서는 Spark이 유리할 수 있다.

2. Streaming vs. Micro-batches

Spark streaming의 경우는 엄밀히 말하면 실시간 처리보다는 작은 단위의 배치 연속이라고 할 수 있다. Storm은 전형적인 event-driven record at a time processing model로써 살아있는 데이터를 처리한다고 하면, Spark은 휴면 상태로 넘어간 데이터를 처리한다. 때문에 Latency에서 차이가 발생하는데 Storm은 subsecond, Spark의 경우에는 사용자 임의지정 few seconds가 된다.

여기에서 중대한 차이점이 발생하는데, Storm의 경우에는 데이터 유실이 없어야 할 때 (no data loss), Spark은 중복 연산이 없어야할 때 (exactly once) 선택하는 것이 좋다.

한편, Storm Trident는 Micro-batches 스타일도 가능하다고 한다.



3. Stateless vs. Stateful

앞서 소개한대로 Storm은 매 레코드 별로 처리하기 때문에 State을 유지하지 않기 때문에 장애 복구 메커니즘이 Spark보다 복잡하고 re-launching 시간이 더 걸릴 것이다.  Stateless vs. Stateful는 (뭔가 더 있을 것 같지만) 장애 복구 외의 차이점은 전혀 없다.

4. Integr…

Belief Propagation 알고리즘

Image
한 때, 병렬 그래프 연산과 알고리즘에 심취한 적이 있다. 그중에 신뢰 전파(Belief Propagation) 알고리즘에 대해 적어본다. 이 알고리즘은 Graphical model에서 inference problem의 근사해를 추정하는 기법으로, Graph 상에 관측된 특정한 확률변수의 분포가 주어졌을 때, 직간접적으로 영향 받는 모든 관측되지 않은 확률 변수의  Marginal distribution을 추정하는 기법이다.

즉, 아래와 같은 Poly Tree 구조 안에 C 노드와 E 노드가 Evidence가 주어졌을 때, \( P(B|C,E) = ? \)



알고리즘은 각 노드 간 Down or Upward Message Passing과 Data Fusion 단계를 거쳐 각 노드의 확률 분포를 추정하기 때문에 병렬 연산을 위해서 Bulk Synchronous Parallel 모델이 대단히 적합하다 할 수 있다.

문득, Google의 DistBelief는 이러한 분산 베이지안 네트워크의 메시지 전달 방식이라 지어진게 아닌가 싶다. 그나저나 요즘의 나는 트리 탐색 구현 정도나 할 수 있을까 모르겠네?

딥 러닝의 비밀을 파헤치는 새로운 이론

Image
예루살렘 히브리 대학 (Hebrew University of Jerusalem)의 컴퓨터 과학자이자 물리학 교수인 티쉬비(Naftali Tishby)가 작년 베를린의 한 컨퍼런스에서 딥 러닝이 어떻게 작동 하는지를 설명하는 새로운 이론을 제시했다.

"deep learning is an information bottleneck procedure that compresses noisy data as much as possible while preserving information about what the data represent."

딥 러닝이란, 데이터의 노이즈는 줄이고 그것이 무엇을 표현 하는지에 대한 주요 정보만 남기는 정보 병목 (Information bottleneck) 절차라는 것이다.

정보 병목 기법 (Information bottleneck method) 은 두 랜덤변수의 결합확률분포가 주어진 경우, 두 변수 간의 상호 정보량을 최대한 보존하면서 한 변수를 압축하는 기법이다 (위키 참고 [1]).

위키에 Information theory of deep learning 섹션은 정리되다 말았지만, X가 실제 개 사진의 픽셀같은 복잡한 대량의 데이터 셋이고, Y가 “개”와 같이 그 데이터를 표현하는 단순한 변수라 가정해보자. 딥 러닝은 즉, Y의 정보를 최대한으로 보유하고 있는 X 의 축약된 표현을 구함으로써 일반화라는 목표에 도달하는 과정이라는 것이다.

내가 이 내용에 관심을 갖게 된 이유는, 딥 러닝 대부인 힌튼 교수께서 친히 티쉬비의 연구 결과에 찬사를 보냈다고 한다.

 “I have to listen to it another 10,000 times to really understand it, but it's very rare nowadays to hear a talk with a really original idea in it that may be the answer to a really major puzzle.”

한편…

에이전트 오브 쉴드 엉뚱 짤막 후기

전형적인 미드 중 하나로 .. 뭔가 스파이 비밀조직에서 팀을 이루고 문제를 해결해나가는 스토리다. 한국은 누구랑 친해? 또는 누구랑 놀지마, 친하게 지내, 그리고 경쟁적이고 아파트 평수로 파를 가르는 문화가 있는데 아이를 키우는 입장에서 정말 부럽다는 생각이 든다. 다양성을 인정하고 팀으로 문제를 해결하는 환경으로 바뀌어나갔으면 좋겠어.

딥 러닝으로 다시 태어난 "하드코어 폐인"

Image