ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기계 학습 이론 및 그 응용에 대한 소개 : 예제를 포함한 시각적인 학습서
    MACHINE LEARNING 2017. 10. 31. 16:36
    반응형

    이 문서는 영문으로된 내용을 구글 번역기를 활용하여 번역한 내용입니다. 
    개인적인 공부 및 추후 다시 볼 수 있도록 하기 위해 개인 블로그에 번역 내용을 옮겨 놓았습니다.
    원문과 내용이 다를시 책임지지 않으며, 저작권 문제가 발생시 언제든 삭제 될 수 있습니다. 

    원문보기 : https://www.toptal.com/machine-learning/machine-learning-theory-an-introductory-primer



    기계 학습 이론 및 그 응용에 대한 소개

    기계 학습(ML)이 등장하고 있습니다. ML은 광범위한 핵심 애플리케이션에서 중요한 역할을 할 수 있다는 인식이 커지고 있으며, 데이터 마이닝, 자연 언어 처리, 이미지 인식 및 전문가 시스템과 같은 다양한 기능을 제공합니다. ML은 이러한 모든 분야에서 잠재적 솔루션을 제공하며, 우리의 미래 문명의 기둥이 될 것입니다.
    유능한 ML 디자이너의 공급은 아직 이 요구를 따라 잡지 못하고 있습니다. 이것의 주된 이유는 단지 ML이 하기 까다로워서 입니다. 이 튜토리얼은 기계 학습 이론의 기본을 소개하고 공통된 주제와 개념을 설명하며 논리를 따르고 주제에 익숙해 지도록 도와줍니다.


    기계 학습이란 무엇입니까?

    "기계 학습"은 정확히 무엇입니까? ML은 사실 매우 많습니다. 이 필드는 상당히 방대해 빠르게 성장하고 있으며, 다른 전문분야 및 유형으로 지속적으로 분할 되고 있습니다. 
    그러나 몇 가지 기본 공통 스레드가 있으며, 가장 중요한 주제는 1959년 Arthur Samuel이 작성한 이 인용문입니다. “[Machine Learning is the] field of study that gives computers the ability to learn without being explicitly programmed.”
    그리고 1997년 Tom Mitchell이 엔지니어링 유형에 더 유용함이 입증된 "잘 정의 된"정의를 제시했습니다. "컴퓨터 프로그램은 P에 의해 측정 된 T에서의 성능이 경험 E로 향상되면 일부 작업 T와 성능 측정 P에 대한 경험 E에서 배우는 것으로 알려져 있습니다."
    “A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.” -- Tom Mitchell, Carnegie Mellon University
    따라서 프로그램이 예측하기를 원한다면, 예를 들어 바쁜 교차로에서의 트래픽 패턴 (작업 T)은 과거 트래픽 패턴에 대한 데이터가있는 기계 학습 알고리즘 (경험 E)을 통해 실행할 수 있습니다. 성공적으로 "학습 한"경우 미래의 트래픽 패턴 (성능 측정치 P)을 예측할 때 더 잘 수행됩니다.
    하지만 실제로 많은 실제 문제의 매우 복잡한 특성 때문에 종종 매번 완벽하게 해결할 수있는 특수 알고리즘을 구현하는 것이 불가능하지는 않더라도 현실적이지 못하다는 것을 의미합니다. 기계 학습 문제의 예로는, “이것은 암인가?”“이 집의 시장 가치는 얼마입니까?”“이 사람들 중 누구가 서로 좋은 친구인가?”“이 로켓 엔진이 폭발 할 것인가?”“이 사람은 이 영화를 좋아할 것입니까?”“누구세요?”“뭐라고 했니?”, 그리고 “어떻게 이걸 날리지?” 이러한 모든 문제는 ML 프로젝트의 훌륭한 목표이며 실제로 ML은 각자 큰 성공을 거두었습니다.
    ML은 수치적 수단만으로는 해결할 수 없는 문제를 해결합니다.
    ML 작업의 여러 유형 중에서 감독 학습(supervised learning)과 감독되지 않은 학습(unsupervised learning)간에 결정적인 차이가 있습니다.
    • Supervised machine learning: 이 프로그램은 사전 정의된 “훈련 예제” 세트에서 “훈련” 됩니다. 그런 다음 새로운 데이터가 주어지면 정확한 결론에 도달하는 능력을 향상시킵니다.
    • Unsupervised machine learning: 이 프로그램에는 많은 양의 데이터가 제공되며 패턴과 관계를 찾아야 합니다.
    우리는 주로 감독 학습에 초점을 맞출 것이며, 이 기사의 끝 부분에는 주제를 더 추구하는 데 관심이 있는 사람들을 위한 링크가 포함 된 감독되지 않은 학습에 대한 간단한 토론이 포함됩니다.

    Supervised Machine Learning

    대부분의 감독 학습 응용 프로그램에서 궁극적인 목표는 미세 조정된 예측 함수 h(x) (때때로 “가설” 이라고 함)를 개발하는 것입니다. “학습”은 정교한 수학적 알고리즘을 사용하여 특정 도메인 (예 : 집의 넓이)에 대한 입력 데이터 x가 주어지면 흥미로운 가치 h(x)를 정확하게 예측할 수 있도록 이 함수를 최적화하는 것으로 구성됩니다 (예 : 그 집에 대한 시장 가격).
    실제로, x는 거의 항상 다중 데이터 포인트를 나타냅니다. 예를 들어, 주택 가격 예측자는 넓이 (x1)뿐만 아니라, 침실 수 (x2), 욕실 수 (x3), 층 수 (x4), 건축 연도 (x5), 우편 번호 (x6) 등이 포함됩니다. 사용할 입력을 결정하는 것은 ML 디자인의 중요한 부분입니다. 그러나 설명을 위해 단일 입력 값이 사용된다고 가정하는 것이 가장 쉽습니다.
    그래서 우리의 간단한 예측 인자가 다음과 같은 형식을 가지고 있다고 가정해 봅시다 :
    여기서  와  는 상수입니다. 우리의 목표는  와  의 완벽한 가치를 찾아내는 것입니다.
    예측기 h(x)를 최적화하는 것은 훈련 예제를 사용하여 수행됩니다. 각 훈련 예제에 대해, 우리는 입력 값 x_train을 가지며, 대응하는 출력 y는 미리 알고 있습니다. 각 예제에 대해 알려진 올바른 값 y와 예측 값 h(x_train) 사이의 차이를 찾습니다. 충분한 훈련 예제를 통해 이러한 차이는 h(x)의 “잘못” 을 측정하는 유용한 방법을 제공합니다. 그런 다음  와  의 값을 조정하여 h(x)를 조정하여 “덜 잘못됨” 으로 만들 수 있습니다. 이 과정은 시스템이  와  에 대한 최상의 값으로 수렴 할 때까지 반복됩니다. 이런 방식으로, 예측자는 훈련되고 실제적인 예측을 할 준비가됩니다.

    간단한 기계 학습 예제

    우리는 일러스트레이션을 위해 이 게시물의 간단한 문제에 집중하지만 ML이 존재하는 이유는 현실 세계에서 문제가 훨씬 더 복잡하기 때문입니다. 이 평면 스크린에서는 3차원 데이터 세트의 그림을 그릴 수 있지만 ML 문제는 일반적으로 수백만 차원의 데이터와 매우 복잡한 예측 기능을 처리합니다. ML은 수치적 수단만으로는 해결할 수 없는 문제를 해결합니다.
    이를 염두에두고 간단한 예제를 살펴 보겠습니다. 회사 직원이 1 : 100의 척도로 만족도를 평가 한 다음과 같은 교육 데이터가 있다고 가정 해보십시오.
    첫째, 데이터가 약간 시끄럽습니다. 즉, 패턴이 있다는 것을 알 수 있지만 (즉 급여가 올라감에 따라 직원 만족도가 높아지는 경향이 있음) 모든 것이 일직선 상에 깔끔하게 맞지는 않습니다. 이는 실제 데이터가 있는 경우 항상 해당됩니다 (실제로 실제 데이터를 사용하여 기계를 교육해야합니다). 그러면 직원의 만족도를 완벽하게 예측할 수 있는 방법을 시스템에서 어떻게 훈련 할 수 있습니까? 대답은 물론 우리가 할 수 없다는 것입니다. 
    영국의 수학자이자 통계학 교수인 George E. P. Box 의 유명한 진술은 “모든 모델이 잘못되었지만 유용합니다(all models are wrong, but some are useful)” 라고 상기 시켜줍니다.
    ML은 “완벽한” 추측을 하지 않습니다. 왜냐하면 ML은 “ 완벽한” 것이 없는 영역에서 사용하기 때문입니다. 목표는 유용할 만큼 충분히 좋은 추측을 하는 것입니다.
    ML은 통계에 크게 의존합니다. 예를 들어 학습을 위해 기계를 훈련 할 때 훈련 데이터로 통계적으로 중요한 무작위 표본을 제공해야합니다. 훈련 세트가 무작위가 아닌 경우 실제로 존재하지 않는 기계 학습 패턴의 위험을 감수해야 합니다. 그리고 훈련 세트가 너무 작으면 (많은 수의 법칙을 보십시오), 우리는 충분히 배울 수 없으며 부정확한 결론에 도달 할 수도 있습니다. 예를 들어 상위 관리자의 데이터만으로 전사 차원의 만족도 패턴을 예측 하려고 하면 오류가 발생하기 쉽습니다.
    이러한 이해를 바탕으로 위에 주어진 데이터를 기계에 제공하고 배워 봅시다. 먼저 우리는 적절한 값  와  로 예측 변수 h(x)를 초기화 해야 합니다. 이제 우리의 예측 세트는 우리의 교육 세트 위에 놓이면 다음과 같이 보입니다.
    우리가 $60k에 마킹한 직원의 만족도에 대해 이 예측자(predictor)에게 묻는다면, 27 등급을 예측할 것입니다.
    이것은 끔찍한 추측이고, 이 기계는 그다지 알지 못합니다.
    자 이제 이 예측자에게 교육 세트의 모든 급여를 제공하고 결과 예상 만족도와 해당 직원의 실제 만족도와의 차이점을 봅시다. 우리가 약간의 수학적 마법을 수행한다면 (곧 설명하겠다)  에 대한 13.12와  에 대한 0.61은 우리에게 더 나은 예측을 제공 할 것이라는 확실한 확신을 가지고 있습니다.
    그리고 우리가 이 과정을 반복한다면(1500 번), 우리의 예측자는 다음과 같이 끝날 것입니다 :
    이 시점에서 과정을 반복하면  와  가 더 이상 변할 수 없으므로 시스템이 수렴 되었음을 알 수 있습니다. 실수를 하지 않았다면 이는 최적 예측 변수를 찾은 것입니다. 따라서 $60를 만드는 직원의 만족도를 다시 기계에 묻는다면 대략 60의 등급을 예측할 것입니다.
    이제 우리는 어딘가에 있습니다.

    복잡성에 대한 참고 사항

    위의 예는 기술적으로 단변량 선형 회귀의 간단한 문제이지만, 실제로는 간단한 정규 방정식을 도출하고 이 “튜닝” 과정을 건너 뛰면 해결할 수 있습니다. 그러나 다음과 같은 예측 인자를 고려하십시오.
    이 함수는 4차원으로 입력을 받아 다양한 다항식 항을 갖습니다. 이 함수의 정규 방정식을 유도하는 것은 중요한 과제입니다. 수많은 현대 기계 학습 문제는 수백 가지 계수를 사용하여 예측을 구축하기 위해 수천 또는 수백만 개의 데이터 차원을 필요로합니다. 생물체의 게놈이 어떻게 표현 될지, 또는 기후가 50년 내에 어떻게 될지 예측하는 것은 복잡한 문제의 예입니다.
    많은 현대의 ML 문제는 수백 개의 계수를 사용하여 예측을 구축하기 위해 수천 또는 수백만 개의 데이터 차원을 필요로합니다.
    다행히도, ML 시스템이 취한 반복적인 접근법은 이러한 복잡성에도 불구하고 훨씬 더 탄력적입니다. 무차별 대입(brute force)을 사용하는 대신, 기계 학습 시스템이 “비슷하게” 답합니다. 커다란 문제에 대해서는 훨씬 더 효과적입니다. 이것이 ML이 임의로 복잡한 문제를 해결할 수 있다는 것을 의미하지는 않지만 (매우 어렵습니다), 매우 유연하고 강력한 도구를 만들 수 있습니다.

    Gradient Descent - “잘못”의 최소화

    이 반복 프로세스가 어떻게 작동하는지 자세히 살펴 보겠습니다. 위의 예에서 우리는 어떻게  와  가 각 단계에서 나아졌는지, 그리고 더 나빠지지 않았는지 확인합니까? 대답은 우리가 이전에 언급한 "잘못된 측정"에 약간의 미적분과 함께 있습니다.
    잘못된 측정은 비용 함수 (a.k.a., 손실 함수),  로 알려져 있습니다. 입력  는 우리가 예측자에서 사용하고 있는 모든 계수를 나타냅니다. 따라서 우리의 경우  는 실제로  와  쌍입니다.  는 주어진 값  와  를 사용할 때 예측 변수가 얼마나 틀렸는지를 수학적으로 측정합니다.
    비용 함수의 선택은 ML 프로그램의 또 다른 중요한 부분입니다. 다른 맥락에서 "틀린"것은 매우 다른 것을 의미 할 수 있습니다. 직원 만족 사례에서 잘 정립 된 표준은 선형 최소 자승 함수입니다.
    최소 제곱수를 사용하면 나쁜 추측에 대한 벌칙이 2차로 올라갑니다. 추측과 정답 사이의 차이로 인해, 그것은 매우 “엄격한” 잘못된 측정으로 작용합니다. 비용 함수는 모든 트레이닝 예제에 대한 평균 페널티를 계산합니다.
    이제 우리의 목표는 비용 함수  가 가능한 작아 지도록 예측 변수 h(x)에 대해  와  를 찾는 것입니다. 우리는 이것을 달성하기 위해 미적분의 힘을 요구합니다.
    특정 ML 문제에 대한 비용 함수의 다음 플롯을 고려하십시오.
    여기서 우리는  와  의 다른 값과 관련된 비용을 볼 수 있습니다. 그래프에 약간의 볼록한 모양이 있습니다. 보울의 바닥은 주어진 예측 데이터를 기반으로 우리 예측 변수가 제공 할 수있는 최저 비용을 나타냅니다. 목표는 “언덕을 굴러 내려다” 이며, 이 지점에 해당하는  와  를 찾으십시오.
    이것은 미적분이 기계 학습 자습서에 들어온 것입니다. 이 설명을 관리 할 수 있도록 유지하기 위해 여기에 방정식을 쓰지 않겠습니다. 그러나 본질적으로 우리가 하는 것은  의 기울기를 취하는 것입니다. 이것은  (하나는 , 하나는  )의 파생어 쌍입니다. 기울기는  와  의 모든 다른 값에 따라 달라지며 이러한 특정  에 대해 "언덕의 경사면"과 특히 "어떤 방향으로 내려 갔는지"를 알려줍니다. 예를 들어, 의 현재 값을 기울기에 대입하는 것은,  에 약간 더하고  에서 조금 뺀 것이 비용 함수의 방향으로 우리를 안내 할 것이라고 우리에게 말할 것입니다. 따라서  에 약간 더하고  에서 조금 뺍니다. 우리는 한 번 학습 알고리즘을 완료했습니다. 업데이트 된 예측 변수 인 h(x) = + x 는 이전보다 더 나은 예측을 반환합니다. 우리 기계는 이제 조금 더 똑똑해졌습니다.
    현재 기울기를 계산하고 결과에서  를 업데이트하는 과정을 gradient descent 라고 합니다.
    대다수의 감독된 기계 학습 시스템의 기초가 되는 기본 이론을 다룹니다. 그러나 기본 개념은 현재의 문제에 따라 다양한 방법으로 적용될 수 있습니다.

    분류 문제

    감독된 ML의 두 가지 주요 하위 범주는 다음과 같습니다.
    • Regression machine learning systems: 예상되는 값이 연속 스펙트럼의 어딘가에 있는 시스템. 이 시스템은 “얼마인가?"또는 "얼마나 많은가?"라는 질문에 도움이됩니다.
    • Classification machine learning systems: 예 또는 아니오 예측을 추구하는 시스템, "이 종양은 암이 아닙니까?", "이 쿠키는 우리의 품질 기준을 충족합니까?"등과 같은 정보를 제공합니다.
    실제로 밝혀진 바와 같이 근본적인 이론은 거의 같습니다. 주요 차이점은 예측 변수 h(x) 의 설계와 비용 함수  의 설계입니다.
    지금까지의 예제는 회귀 문제(regression problem) 에 중점을 두었으므로 분류 예제(classification example) 를 살펴 보겠습니다.
    다음은 쿠키 품질 테스트 연구의 결과입니다. 훈련 예제는 모두 파란색의 "좋은 쿠키” (y = 1) 또는 빨간색의 "나쁜 쿠키” (y = 0)로 분류되어 있습니다.
    분류에서 회귀 예측자는 그다지 유용하지 않습니다. 우리가 일반적으로 원하는 것은 0 과 1 사이의 추측을 만드는 예측 인자입니다. 쿠키 품질 분류기에서 1의 예측은 쿠키가 완벽하고 완전히 군침이 돈다고 매우 확신하는 것으로 나타납니다. 0으로 예측하면 쿠키 산업이 당혹스러울 것이라는 높은 확신을 나타냅니다. 이 범위의 값은 신뢰도가 낮기 때문에 0.6의 예측은 “이봐, 어려운 결정을 내렸어. 하지만 네가 그 쿠키를 팔 수있어.”를 의미하는 반면 정확한 중간 값인 0.5는 완전한 불확실성을 나타낼 수 있도록 시스템을 설계 할 수 있습니다 이것은 항상 분류자에 신뢰가 분산되는 것은 아니지만 매우 일반적인 디자인이며 일러스트레이션을 위해 작동합니다.
    이 동작을 잘 포착하는 멋진 기능이 있습니다. 이것은 시그모이드 함수, g(z) 라고 불리며 다음과 같이 표현합니다.
    z는 다음과 같이 입력 값과 계수를 나타냅니다.
    우리의 예측자는 다음과 같이됩니다.
    시그모이드 함수는 출력을 0 과 1 사이의 범위로 변환 합니다.
    비용 함수 설계의 논리는 분류면에서 다릅니다. 다시 한번 우리는 “추측이 잘못되었다는 것은 무엇을 의미합니까?” 라고 묻습니다. 그리고 이번에는 엄밀히 말하자면 올바른 추측이 0 이고 1을 추측하면 우리는 완전히 틀렸습니다. 그 반대의 경우도 가능합니다. 절대적으로 잘못한 것보다 네가 잘못될 수는 없으므로, 이 경우 페널티는 엄청납니다. 양자 택일로 올바른 추측이 0 이고 우리가 0 을 추측한다면, 우리의 비용 함수는 이것이 발생할 때마다 비용을 추가해서는 안됩니다. 추측이 옳았지만 완전히 확신하지 못했다면 (예 : y = 1, h (x) = 0.8) 이는 약간의 비용이 들었을 것입니다. 우리의 추측이 잘못되었지만 완전히 확신하지 못했다면 (예 : y = 1, h (x) = 0.3) 이것은 상당한 비용이 들지만, 그러나 우리가 완전히 틀린 것처럼 많은 것은 아닙니다.
    이 동작은 다음과 같은 로그 함수에 의해 캡처됩니다.
    다시 비용 함수  는 우리의 모든 교육 예제에 대한 평균 비용을 제공합니다.
    여기에서는 회귀 분석과 분류 사이에 예측 변수 h(x)와 비용 함수 가 어떻게 다른지 설명했지만 gradient descent는 여전히 잘 작동합니다.
    분류 예측자는 경계선을 그려 시각화 할 수 있습니다. 즉, 예측이 “예" (0.5보다 큰 예측)에서 “아니오" (0.5 미만의 예측)로 바뀌는 장벽을 말합니다. 잘 설계된 시스템을 사용하면 쿠키 데이터가 다음과 같은 분류 경계를 생성 할 수 있습니다.
    이제는 쿠키에 대해 한 두 가지를 알고 있는 머신 입니다!

    신경망 소개

    ML에 대한 논의는 적어도 신경망을 언급하지 않고는 완료되지 않을 것입니다. 신경망은 매우 힘든 문제를 해결할 수 있는 매우 강력한 도구를 제공 할 뿐만 아니라 우리 뇌의 작동에 대한 매혹적인 힌트와 진정한 지능형 기계를 만드는 흥미로운 가능성을 제공합니다.
    신경망은 입력의 수가 거대한 컴퓨터 학습 문제에 매우 적합합니다. 그러한 문제를 처리하는 데 드는 계산 비용은 앞서 논의한 시스템 유형에 비해 너무 많은 편입니다. 그러나, 신경망은 원칙적으로 gradient descent와 현저하게 유사한 기술을 사용하여 효과적으로 조정될 수 있습니다.
    신경망에 대한 철저한 논의는 이 튜토리얼의 범위를 벗어나지만, 주제에 대한 이전 포스트를 확인하는 것이 좋습니다.

    감독되지 않은 기계 학습

    감독되지 않은 학습은 일반적으로 데이터 내의 관계를 찾는 임무가 있습니다. 이 과정에서 사용 된 교육 예제는 없습니다. 대신, 시스템은 설정된 데이터를 제공 받고 그 안에 패턴 및 상관 관계를 찾는 임무를 부여받습니다. 좋은 예는 소셜 네트워크 데이터에서 가까운 친구 그룹을 식별하는 것입니다.
    이를 수행하는 데 사용되는 알고리즘은 감독 학습에 사용된 알고리즘과 매우 다르며 주제는 자체 게시물의 장점을가집니다. k-means와 같은 클러스터링 알고리즘을 살펴보고 주성분 분석과 같은 차원 감소 시스템을 살펴보십시오. 큰 데이터에 대한 우리의 이전 게시물은 이러한 주제들에 대해 더 자세히 설명합니다.

    결론

    우리는 여기서 기계 학습 분야의 기초가 되는 많은 기본 이론을 다루었습니다. 물론 표면만 간신히 긁어 냈습니다.
    이 입문서에 포함 된 이론을 실제 기계 학습 사례에 실제로 적용하려면 여기에서 논의된 주제에 대해 더 깊이 이해해야 합니다. ML에는 많은 함정이 있으며, 완벽하게 잘 조정된 것처럼 보이는 길로 인도하는 많은 방법이 있습니다. 기본 이론의 거의 모든 부분은 끝없이 조율 될 수 있으며 그 결과는 매력적입니다. 많은 사람들이 특정한 문제에 더 적합한 새로운 분야의 연구로 성장합니다.
    분명히, 기계 학습은 매우 강력한 도구입니다. 앞으로 몇 년 동안, 우리는 가장 시급한 문제를 해결하고 새로운 차원의 새로운 기회를 열어 줄 것을 약속합니다. ML 엔지니어에 대한 요구는 계속해서 커질 것이며 큰 무언가의 일부가 될 엄청난 기회를 제공 할 것입니다. 나는 당신이 행동에 들어가는 것을 고려하길 바랍니다!

    Acknowledgement

    This article draws heavily on material taught by Stanford Professor Dr. Andrew Ng in his free and open Machine Learning course. The course covers everything discussed in this article in great depth, and gives tons of practical advice for the ML practitioner. I cannot recommend this course highly enough for those interested in further exploring this fascinating field.

    About the author

    Nicholas is a professional software engineer with a passion for quality craftsmanship. He loves architecting and writing top-notch code, and is proud of his ability to synthesize and communicate ideas effectively to technical and non-technical folks alike. Nicholas always enjoys a novel challenge. [click to continue...]
    Hiring? Meet the Top 10 Freelance Machine Learning Engineers for Hire in October 2017


    반응형
Designed by Tistory.