페이스북은 어떻게 가짜 계정을 잡아낼까?

이미지
페이스북은 지난 2019년 매 분기당 20억 개에 달하는 가짜 계정들을 차단하였다고 합니다. 가짜 계정은 스팸, 피싱, 악성코드 유포 등 다양한 사이버 범죄 목적으로 사용할 수 있기 때문에 빨리 찾아내고 차단하는 것이 중요합니다. 페이스북에서는 이러한 가짜 계정들의 생성을 막기 위해 규칙 기반 및 간단한 기계학습 기반의 필터링을 진행하고 있습니다. 그러나 이러한 노력에도 불구하고 많은 가짜 계정들이 필터링을 뚫고 생성되어 활발히 활동하고 있으며, 사람이 하나하나 검사하기에는 너무도 많아 자동으로 걸러내는 방법이 필요합니다. 이미 활성화된 계정들 중 악의적 목적을 가진 가짜 계정들만을 걸러내는 일은 매우 어렵고, 잘못하면 일반 사용자의 계정을 차단할 위험도 있습니다. 이에 페이스북에서는 Deep Entity Classification (DEC)라는 딥러닝 기반 가짜 계정 탐지 기술을 활용하고 있다고 합니다. DEC에 대해 소개하기 전에 일반적으로 떠올릴만한 머신러닝을 이용한 가짜 계정 탐지 방식을 살펴보겠습니다. 먼저 다수의 계정 데이터를 확보합니다. 그리고 각 계정의 위치, 친구, 연령, 직업 등의 정보들을 특징점으로 사용하고, 해당 계정이 가짜 계정인지 일반 계정인지를 구분하여 학습용 데이터셋을 만듭니다. 그리고 모델을 학습시켜서 사용하면 왠지 잘 될 것 같습니다. 하지만 이러한 고전적인 접근 방식에는 크게 두 가지 문제가 존재합니다. 첫 번째로 , 이와 같은 방식으로는 제한된 수의 특징점만을 활용할 수 있으며 악의적인 사용자들이 특징점으로 사용되는 정보를 조작하여 시스템을 통과할 수 있습니다. 예를 들어, 친구가 3명 이하인 계정이 가짜 계정일 확률이 높다고 판단한다면 가짜 계정끼리 친구를 많이 맺어 시스템을 속일 수 있는 것이죠. 두 번째로 , 많은 수의 계정 데이터에 대해 일반 사용자인지 가짜 계정인지 라벨링, 즉 구분해주기가 어렵습니다. 라벨링을 위해선 사람이 직접 판단해줘야 하는데, 앞서 언급했듯이 사람이 직접 가짜인지 진...

딥러닝에서도 운이 중요하다고? Lottery Ticket Hypothesis

이미지
지난 12월에 열린 NeurIPS 2019에서 발표된 "One ticket to win them all: Generalizing lottery ticket initializations across datasets and optimizers"라는 논문에 대해 이야기하고자 합니다. 해당 논문은 lottery ticket hypothesis에 대해 다루고 있으며, 우리말로 번역하자면 복권 가설 정도가 될 것 같습니다. 처음 들으면 뭔가 상당히 기대하게 만드는 이름인데 우선 lottery ticket hypothesis에 대해 알아보겠습니다. Lottery ticket hypothesis란 딥 뉴럴 네트워크를 학습할 때, 모든 매개변수들이 다 중요한 것이 아니라 그 중 초기화가 잘 이루어진 일부 매개변수들이 성능 확보에 있어 특히 중요 하다는 내용의 가설입니다. 이렇게 초기화가 잘 이루어진 매개변수들을 winning ticket이라고 하며, 많은 매개변수들 중 일부만이 winning ticket이 되므로 이를 복권에 비유한 것입니다. 기대와는 다르게 복권 당첨과 관련된 내용을 담고 있지는 않지만, 딥러닝에 있어서 상당히 중요하고 앞으로도 활용 가치가 높은 이론입니다. 그림을 통해서 좀 더 쉽게 설명드리겠습니다. 우선 위의 그림은 일반적인 뉴럴 네트워크 학습 과정을 나타낸 것입니다. 학습이 진행됨에 따라 정확도가 점점 향상되는 것을 볼 수 있습니다. 또한 학습이 완료된 후에는 모든 매개변수들이 같은 세기를 가지는 것이 아니라 상대적으로 작은 세기를 가지는 매개변수들도 있고 강한 세기를 가지는 매개변수들도 있는 것을 알 수 있습니다. 선이 두꺼울수록 강한 연결임을 나타낸 것이고, 따라서 절대값이 큰 매개변수라고 보시면 됩니다. 그리고 다음으로는 pruning, 즉 가지치기를 통해 작은 세기를 갖는 매개변수들을 삭제하는 과정을 거칩니다. 그리고 가지치기를 한 후 남은 매개변수들에 대해서 학습된 최종 값이 아닌 ...

오픈소스 음원 분리 엔진 Spleeter

이미지
지난 11월 초, 프랑스의 온라인 음악 스트리밍 회사인 deezer에서 딥 러닝 기술을 활용한 음원 분리 엔진 spleeter를 개발하여 무료로 배포하였습니다. Spleeter를 이용하면 음악 파일로부터 보컬, 드럼, 베이스 등의 각 파트를 손쉽게 분리해낼 수 있습니다. 기존의 음원 분리 작업 방식은 고가의 소프트웨어를 이용해야 함은 물론이고 많은 시간을 들여야 깔끔하게 분리해낼 수 있었지만, spleeter는 몇 개의 파트로 분리하고 싶은지만 명시하면 자동으로 각 파트를 분리해줍니다. Spleeter는 다음과 같은 세 가지 모드의 음원 분리를 지원합니다. 2 stems: 보컬 / 악기 연주 4 stems: 보컬 / 드럼 / 베이스 / 나머지 악기 5 stems: 보컬 / 드럼 / 베이스 / 피아노 / 나머지 악기 딥 러닝에 기반한 음원 분리 엔진이기에 네트워크를 학습할 때 사용한 분리 모드 세 가지만 지원하는 것으로 보입니다. 기타, 바이올린 등 다른 악기 파트도 분리하고 싶다면 네트워크를 새로 학습시킬 수는 있지만 많은 양의 음악 데이터와 학습 시간이 필요하리라 예상됩니다. Deezer 연구팀에서는 의료 영상 분석에 사용되었던 U-net을 이용하여 spleeter를 개발하였습니다. U-net은 위 그림과 같은 구조를 가지고 있으며, 이미지를 입력받은 후 해당 입력에 대한 분석 정보를 담은 결과 이미지를 출력으로 내보냅니다. 아래와 같이 세포 이미지를 입력받아서 세포가 있는 부분만 나타내는 출력 이미지를 내보내는 식입니다. 원래는 이미지를 대상으로 한 네트워크였지만, spleeter에서는 음악을 입력받고 원하는 파트별로 분리된 음악을 출력함으로써 음원 분리를 수행하게 됩니다. 학습을 위한 데이터셋으로는 MUSBD 데이터셋 및 Bean 데이터셋을 사용하였다고 합니다. MUSBD는 공개된 음원 분리 데이터셋이며, Bean 데이터셋은 deezer의 자체 데이터셋으로 미공개입니다. 학습된 엔진 및 소스코드는 깃허브에 공개되어 ...

이제 인공지능과 함께 코딩하세요!

이미지
마이크로소프트의 연례 기술 컨퍼런스 Ignite 2019에서 인공지능 기반의 코딩 지원 기능인 Visual Studio IntelliCode (이하 IntelliCode)의 확장 버전이 공개되었습니다. 지난 4월에 IntelliCode의 초기 버전이 공개되었던 바 있으며, 해당 버전의 경우 코딩 시에 구문 단위로 자동완성 추천을 하는 기능이었습니다. 아래 그림에서와 같이 코딩을 하는 동안 인공지능이 다음에 쓸 구문을 별표로 추천해주는 방식입니다. 인공지능 기반의 추천이 아니더라도, 개발용 프로그램들에는 사용 가능한 구문 혹은 현재 쓰여진 알파벳이 들어간 구문을 추천하는 기능이 이미 있습니다. IntelliCode가 이러한 기존의 자동완성 기능과 차별화되는 점은, 단순히 이름을 매칭하는 것이 아니라 인공지능을 통해 현재 코딩하는 상황에 따라 쓸 확률이 높은 구문을 추천해준다는 것입니다. 여기에서 한 차원 더 나아가 이번 확장 버전에서는 코드 라인 전체 자동완성  기능 및 코드 리팩토링(refactoring)  기능이 추가되었습니다. 하나씩 차례로 살펴보도록 하겠습니다. 먼저 코드 라인 전체 자동완성 기능은 아래 그림에서와 같이 첫 구문만 입력하면 라인 전체를 자동완성하여 추천해주는 방식으로 작동합니다. 해당 기능은 자동 문장생성 인공지능 모델로 유명한 Open AI의 GPT-2를 기반으로 구현하였다고 합니다. GPT-2는 단어 혹은 문장을 입력하면 그 뒤에 올만한 문장들을 자동으로 생성하는 모델입니다. 학습을 위해서는 많은 양의 글을 모아놓은 데이터셋이 필요하며, 학습에 쓰인 글의 스타일대로 문장을 생성하게 됩니다. 즉, 소설을 학습시키면 소설에서 쓰이는 스타일의 문장을 생성하게 되며 기사를 학습시키면 기사에서 쓰이는 스타일의 문장을 생성합니다. IntelliCode 연구개발팀에서는 이러한 특성에 착안하여 오픈소스 공유 플랫폼인 GitHub의 코드를 이용하여 GPT-2 기반의 모델을 학습시켰습니다. 코드를 입력받은...

딥마인드, 알파스타를 통해 스타크래프트2까지 정복하다.

이미지
지난 10월 30일, 저명 국제 학술지 <네이처>에서는 구글 딥마인드의 스타크래프트2 인공지능 '알파스타(AlphaStar)'가 상위 0.2%의 실력에 해당하는 그랜드 마스터 등급을 달성하였다는 내용의 논문을 발표하였습니다. 알파스타는 지난 1월에도 스타크래프트2 프로 선수 2명과의 경기에서 10승 1패의 성적을 거둔 바 있으나, 이 때는 사람이 따라할 수 없는 빠른 분당 행동수(Actions Per Minute, APM)로 경기를 진행하였을 뿐 아니라 인공지능이 입력받는 정보도 사람이 보는 화면과 다르게 더 상세하였습니다. 이번에 발표된 버전의 알파스타는 사람이 보는 화면과 같은 정보를 입력받고 사람도 충분히 가능한 분당 행동수로 게임을 진행하여 그랜드 마스터 등급을 달성하였습니다. 알파스타는 다음 두 가지의 주요 특징을 통해 그랜드 마스터 등급의 성능을 달성할 수 있었습니다. 모방 학습(Imitation Learning) 및 자가 대전(Self-play) 리그 플레이 우선 모방 학습 및 자가 대전에 대한 내용입니다. 딥마인드에서는 실제 사람들의 대전 기록을 이용하여 지도 학습으로 알파스타를 학습시켜서 어느 정도의 실력을 갖추게 한 뒤, 알파스타 에이전트의 자가 대전을 통해 성능을 더욱 향상시켜 나갔습니다. 매 시간 단위마다 알파스타가 취할 수 있는 행동의 수는 10 26 가지에 달한다고 합니다. 이렇게 방대한 경우의 수를 가진 게임에서 효율적으로 알파스타의 성능을 향상시키기 위해 우선 기존의 대전 기록을 통해 빠르게 성능을 높인 다음에 자가 대전을 적용한 것입니다. 위의 그림은 스타크래프트2의 각 리그별 MMR (Match Making Rating) 분포를 나타낸 그림입니다. 우측에 AlphaStar supervised라고 표시되어 있는 부분을 살펴보면 대전 기록을 이용한 지도 학습만으로도 이미 다이아몬드 리그 이상의 성능을 확보하였으며 그 후 자가 대전을 통해 성능을 더욱 높여갔음을 알 수 ...