필자는 AUAI에서 주최하는 [UAI 2018 MLTrain 세미나]를 다녀왔습니다. AUAI(The Association for Uncertainty in Artificial Intelligence)는 주로 Uncertainty 문제에 대한 학습 및 추론 연구를 하는 비영리 단체입니다.
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
위 내용을 통해 Alice의 Personality를 외적인 성향(Ext)으로 추론할 수 있습니다. 이외에도 Collective Rule에는 User-Item Relation, User-Group Relation이 있습니다.
위 Rule들을 통해 각 User의 Personality를 추론한 결과는 아래와 같습니다.
전체 결과는 약 0.77로 Classification Model의 결과보다 좋지 않습니다.
Classification Model보다 성능이 좋지 않은데, 이러한 추론을 계속해야 할까요?
이 결과는 User Relation(Friendship links)이 Personality를 추론하는 데 그다지 좋은 영향을 주진 않음을 보여줍니다. 하지만 Group Relation(Joins)은 좋은 영향을 주는 것을 알 수 있죠.
PSL의 장점은 각 Rule의 결과를 측정하고, Rule들의 가중치 변경을 통해 결과를 향상시킬 수 있다는 점입니다. 아래와 같이 각 Rule의 가중치를 변경하고 결과를 알아보겠습니다.
가중치 변경을 통해 결과가 0.91로 향상된 것을 볼 수 있습니다. 이처럼 직관적인 Model 설계는 PSL의 장점 중 하나입니다.
Probabilistic programming에 대한 기대
MLTrain 세미나에서 가장 많이 들었던 단어는 ‘Inference(추론)’였습니다. Deep learning에서는 ‘Prediction(예측)’이라는 단어를 주로 사용하는데, 그 차이를 살펴봄으로써 Probabilistic programming을 조금 더 이해할 수 있었습니다.
Inference: 각 변수(Feature) 간의 관계를 이해하고, 어떤 변수가 결과에 미치는 영향을 분석하며 결과를 추론
Prediction: 각 변수(Feature)의 관계에 상관없이 원하는/좋은 결과를 예측
Probabilistic programming은 AI 분야에서도 특히 어려운 쪽에 속합니다. 하지만 위에서 살펴봤듯이, 기존 Model에 요소들을 추가함으로써 성능을 높일 수 있으니 한번 활용해보면 좋을 듯합니다.
▶ 해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에 저작권이 있습니다.
▶ 해당 콘텐츠는 사전 동의없이 2차 가공 및 영리적인 이용을 금하고 있습니다.
삼성SDS 개발실
플랫폼운영그룹(운영)에서 CoreApps의 시스템 구축 및 운영을 담당하고 있으며, 재미를 찾는 호기심 많은 초보 개발자입니다.