loading...

Probabilistic programming ' UAI 2018 – MLTrain 참가 후기 '

Probabilistic programming : UAI 2018 – MLTrain 참가 후기

필자는 AUAI에서 주최하는 [UAI 2018 MLTrain 세미나]를 다녀왔습니다. AUAI(The Association for Uncertainty in Artificial Intelligence)는 주로 Uncertainty 문제에 대한 학습 및 추론 연구를 하는 비영리 단체입니다.

이미지 출처: http://auai.org/uai2018 이미지 출처: http://auai.org/uai2018 MLTRAIN로고-이번 MLTrain에서는 Pyro와 Probabilistic Soft Logic 같은 Probabilistic programming 언어(개발자가 확률 모델을 쉽게 정의하고, 자동으로 해결하는 High level language)의 사용 사례를 다루었습니다.

Java, C Script를 통한 Explicit Programming이 익숙한 필자에게 Probabilistic programming는 생소했지만, 재미있는 프로그램을 만드는 데 도움이 될 만한 흥미로운 주제였습니다.
Train session은 크게 ‘PSL’과 ‘Pyro’ 2가지로 나뉘어 진행됐습니다. 아래 URL(github)로 들어가 보면, 예제코드를 통해 PSL과 Pyro의 간단한 사용방법을 알 수 있습니다.

- PSL (Probabilistic Soft Logic): https://github.com/linqs/psl
- Pyro: https://github.com/uber/pyro


PSL: Probabilistic Soft Logic

PSL(Probabilistic Soft Logic)은 확률론적 모델 개발을 위한 기계학습 프레임워크입니다. 간단한 논리적 구문을 사용해 모델을 정의하고, 빠르게 볼록 최적화하여 모델을 해결할 수 있죠. 아래에서 간단한 예를 통해 PSL의 특징을 살펴보겠습니다.

Collective Rule을 통한 User-User Relation

Collective Rule을 통한 User-User Relation

위 내용을 통해 Alice의 Personality를 외적인 성향(Ext)으로 추론할 수 있습니다. 이외에도 Collective Rule에는 User-Item Relation, User-Group Relation이 있습니다.

Collective Rule을 통한 User-User Relation

위 Rule들을 통해 각 User의 Personality를 추론한 결과는 아래와 같습니다.

Local Predictor는 Classification Model의 결과입니다. ※ Local Predictor는 Classification Model의 결과입니다.

전체 결과는 약 0.77로 Classification Model의 결과보다 좋지 않습니다.
Classification Model보다 성능이 좋지 않은데, 이러한 추론을 계속해야 할까요?
이 결과는 User Relation(Friendship links)이 Personality를 추론하는 데 그다지 좋은 영향을 주진 않음을 보여줍니다. 하지만 Group Relation(Joins)은 좋은 영향을 주는 것을 알 수 있죠.
PSL의 장점은 각 Rule의 결과를 측정하고, Rule들의 가중치 변경을 통해 결과를 향상시킬 수 있다는 점입니다. 아래와 같이 각 Rule의 가중치를 변경하고 결과를 알아보겠습니다.

각 Rule의 가중치를 변경하고 결과를 알아보겠습니다 가중치 변경을 통해 결과가 0.91로 향상된 것을 볼 수 있습니다.

가중치 변경을 통해 결과가 0.91로 향상된 것을 볼 수 있습니다. 이처럼 직관적인 Model 설계는 PSL의 장점 중 하나입니다.

Probabilistic programming에 대한 기대

MLTrain 세미나에서 가장 많이 들었던 단어는 ‘Inference(추론)’였습니다. Deep learning에서는 ‘Prediction(예측)’이라는 단어를 주로 사용하는데, 그 차이를 살펴봄으로써 Probabilistic programming을 조금 더 이해할 수 있었습니다.

Inference: 각 변수(Feature) 간의 관계를 이해하고, 어떤 변수가 결과에 미치는 영향을 분석하며 결과를 추론
Prediction: 각 변수(Feature)의 관계에 상관없이 원하는/좋은 결과를 예측

Probabilistic programming은 AI 분야에서도 특히 어려운 쪽에 속합니다. 하지만 위에서 살펴봤듯이, 기존 Model에 요소들을 추가함으로써 성능을 높일 수 있으니 한번 활용해보면 좋을 듯합니다.



▶   해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에 저작권이 있습니다.
▶   해당 콘텐츠는 사전 동의없이 2차 가공 및 영리적인 이용을 금하고 있습니다.



이 글이 좋으셨다면 구독&좋아요

여러분의 “구독”과 “좋아요”는
저자에게 큰 힘이 됩니다.

subscribe

구독하기

subscribe

이건
이건 IT테크놀로지 전문가

삼성SDS 개발실

플랫폼운영그룹(운영)에서 CoreApps의 시스템 구축 및 운영을 담당하고 있으며, 재미를 찾는 호기심 많은 초보 개발자입니다.

공유하기