-
[Week 10] Advanced TopicCourses/Andrew Ng - Machine Learning 2022. 2. 25. 22:48
Online learning
미리 입력된 데이터셋이 아닌 실시간으로 유입되는 데이터를 모델링하는 온라인 학습에 대해 알아봅니다. 대부분의 웹사이트의 경우 이용자들이 서비스를 이용하면서 새로운 데이터를 계속 생성하고 이를 머신 러닝 모델에 학습시킬 수 있습니다.
배달 서비스 회사를 운영한다고 가정했을 때, 사용자들은 A장소에서 B장소로 배달을 요청합니다. 입력되는 데이터는 장소, 물건 종류 등등입니다. 주어진 데이터를 바탕으로 배달 가격을 제안합니다. 사용자가 제안 가격을 받아들이면 y==1 positive 예제가 되고 거절하면 y==0 negative 예제가 됩니다. 알고리즘은 데이터셋을 학습하여 최적화 된 배달 가격을 제공하려고 합니다.
사용자가 접속하여 입력한 출발지와 목적지, 웹사이트가 제시한 가격이 x가 됩니다. y는 사용자가 서비스를 사용하기로 선택했는지의 여부입니다. 선택했다면 y=1 , 아니라면 y=0입니다. 온라인 학습 알고리즘의 경우 한 번의 하나의 예제만을 사용합니다. 사용자가 결정을 내릴 때 마다 알고리즘이 해당 데이터 1세트로 학습을 진행합니다. 사용자가 지속적으로 유입되고 데이터가 충분하다면 효과적입니다.
즉 온라인 학습 알고리즘은 사용자 선호도에 따라 변화하여 적응할 수 있습니다. 만약에 사용자들의 관심사나 취향이 바뀌어 높은 가격에 민감해진다면 알고리즘은 더 낮은 가격을 제시할 수 있습니다. 이는 알고리즘이 사람들의 선호도에 따라 파라미터를 자동으로 조정하기 때문입니다.
다른 예제입니다. 웹사이트에서 스마트폰을 판매한다고 가정합시다. 사용자가 "안드로이드폰 1080p 카메라" 같은 검색어를 입력합니다. 검색 결과로 100개의 스마트폰 중 10개를 보여줘야 합니다.
x는 스마트폰의 특성이 됩니다. 사이즈나 AP, 카메라 스펙,모델명등이 될 것 입니다. 그리고 사용자 검색 키워드가 실제 가지고 있는 스마트폰과 얼마나 일치하는지 등을 파악합니다. 그리고 사용자가 특정 스마트폰에 대한 링크를 클릭할 확률을 추정합니다. 실제로 사용자가 누르면 y=1이고 아니면 y=0입니다. 이러한 학습 문제를 예측 클릭률(CTR)이라고 합니다.
어떤 스마트폰에 대한 클릭 확률을 알 수 있다면 가장 확률이 높은 10대의 스마트폰을 추천해줄 수 있습니다. 각 사용자가 검색을 할 때마다 새로운 데이터 셋을 획득하고 알고리즘이 파라미터를 업데이트하며 학습합니다. 이렇게 데이터 스트림이 큰 사이트를 운용할 때는 굳이 큰 데이터 셋을 저장하지 않고 온라인 학습 알고리즘을 적용하는 것이 유리할 수도 있습니다.
Map Reduce and Data Parallelism
맵 축소 접근법은 학습 셋을 여러 개로 분리한 뒤 다른 독립된 서버 혹은 코어에서 연산을 처리하는 방식입니다.
배치 경사 하강법을 4개의 서버로 진행한다고 가정합시다. 데이터셋의 크기는 4억입니다. 첫번째 서버에서 1억개를 맡고 다른 서버에서도 각각 1억개의 데이터를 맡습니다. 각각 1억개씩의 오차를 합산하고 미분을 진행합니다. 모든 서버가 작업을 완료한 뒤 temp 변수의 값을 업데이트하고 모든 값을 취합합니다. 그리고 업데이트하여 파라미터를 갱신합니다.
이러한 방식으로 연산을 병렬 처리할 수 있습니다. 이론적으로는 서버가 4대 있다면 4배 빠르겠지만 실제로는 네트워크 지연 시간이나 결과 합산 오버헤드등으로 4배보다는 약간 낮습니다.
cpu의 발달로, 대부분의 cpu가 여러 개의 코어를 갖고 있습니다. 한 컴퓨터에서 병렬 처리를 할 수 있습니다. 이 경우 네트워크 지연 문제가 없기 때문에 이점이 있습니다. 데이터 셋이 크고 함수의 합산으로 알고리즘을 표현할 수 있다면 사용을 고려해보아야 합니다.
혼자서 강의를 듣고 정리한 것이니 틀린 점이 있다면 언제든지 지적 부탁드립니다 :)
'Courses > Andrew Ng - Machine Learning' 카테고리의 다른 글
Machine learning 강의 완강 후기 (0) 2022.02.28 [Week 11] Photo OCR (0) 2022.02.28 [Week 10] Gradient Descent with Large Datasets (0) 2022.02.23 [Week 9] Recommender Systems (0) 2022.02.09 [Week 9] Buidling an Anomaly Detection System (0) 2022.02.08