기계 학습-퀵 가이드

오늘날의 인공 지능 (AI)은 블록 체인과 양자 컴퓨팅의 과대 광고를 훨씬 능가했습니다. 이는 일반인이 거대한 컴퓨팅 리소스를 쉽게 사용할 수 있기 때문입니다. 개발자는 이제 새로운 기계 학습 모델을 생성하고 더 나은 성능과 결과를 위해 기존 모델을 재교육 할 때이를 활용합니다. HPC (고성능 컴퓨팅)의 쉬운 가용성으로 인해 기계 학습 기술을 보유한 IT 전문가에 대한 수요가 갑자기 증가했습니다.

이 튜토리얼에서는 다음에 대해 자세히 배울 것입니다.

머신 러닝의 핵심은 무엇입니까?

  • 머신 러닝에는 어떤 유형이 있나요?

  • 기계 학습 모델을 개발하는 데 사용할 수있는 다른 알고리즘은 무엇입니까?

  • 이러한 모델을 개발하는 데 사용할 수있는 도구는 무엇입니까?

  • 프로그래밍 언어 선택은 무엇입니까?

  • Machine Learning 애플리케이션의 개발 및 배포를 지원하는 플랫폼은 무엇입니까?

  • 어떤 IDE (통합 개발 환경)를 사용할 수 있습니까?

  • 이 중요한 영역에서 기술을 빠르게 업그레이드하는 방법은 무엇입니까?

Facebook 사진에서 얼굴에 태그를 지정하면 장면 뒤에서 실행되고 사진에서 얼굴을 식별하는 것은 AI입니다. 얼굴 태그 지정은 이제 사람의 얼굴이있는 사진을 표시하는 여러 응용 프로그램에서 어디에나 있습니다. 왜 인간의 얼굴일까요? 고양이, 개, 병, 자동차 등과 같은 물체를 감지하는 몇 가지 응용 프로그램이 있습니다. 우리는 도로를 달리는 자율 주행 자동차를 통해 실시간으로 물체를 감지하여 차를 조종합니다. 여행 할 때 Google을 사용합니다.Directions실시간 교통 상황을 배우고 해당 시점에 Google에서 제안한 최상의 경로를 따르십시오. 이것은 실시간으로 물체 감지 기술의 또 다른 구현입니다.

Google의 예를 살펴 보겠습니다. Translate외국을 방문 할 때 일반적으로 사용하는 응용 프로그램입니다. 모바일 용 Google의 온라인 번역기 앱을 사용하면 외국어를 사용하는 현지 사람들과 소통 할 수 있습니다.

오늘날 우리가 실제로 사용하는 몇 가지 AI 응용 프로그램이 있습니다. 사실 우리 각자는 지식 없이도 삶의 많은 부분에서 AI를 사용합니다. 오늘날의 AI는 뛰어난 정확성과 속도로 매우 복잡한 작업을 수행 할 수 있습니다. 현재 고객을 위해 개발할 AI 애플리케이션에서 예상되는 기능을 이해하기 위해 복잡한 작업의 예를 논의하겠습니다.

우리 모두는 Google을 사용합니다. Directions매일 통근하거나 도시 간 여행을 위해 도시 어디에서나 여행하는 동안. Google 길 찾기 애플리케이션은 해당 시점에 목적지까지 가장 빠른 경로를 제안합니다. 우리가이 길을 따를 때, 우리는 구글의 제안이 거의 100 % 옳다는 것을 알게되었고 여행에서 소중한 시간을 절약 할 수있었습니다.

목적지까지 여러 경로가 있고 해당 경로에 대한 예상 이동 시간을 제공하기 위해 가능한 모든 경로에서 교통 상황을 판단해야한다는 점을 고려하면 이러한 종류의 애플리케이션 개발과 관련된 복잡성을 상상할 수 있습니다. 게다가 Google 길 찾기가 전 세계를 포괄한다는 사실을 고려하십시오. 의심 할 여지없이 많은 AI 및 기계 학습 기술이 이러한 애플리케이션의 내부에서 사용되고 있습니다.

이러한 애플리케이션 개발에 대한 지속적인 수요를 고려할 때 AI 기술을 보유한 IT 전문가에 대한 수요가 갑자기 증가하는 이유를 이해하게 될 것입니다.

다음 장에서는 AI 프로그램을 개발하는 데 필요한 사항을 배웁니다.

AI의 여정은 컴퓨팅 성능이 오늘날의 일부에 불과했던 1950 년대에 시작되었습니다. AI는 통계학자가 계산기를 사용하여 예측하는 방식으로 기계가 만든 예측으로 시작했습니다. 따라서 초기 전체 AI 개발은 주로 통계 기법을 기반으로했습니다.

이 장에서는 이러한 통계 기법이 무엇인지 자세히 살펴 보겠습니다.

통계 기법

오늘날의 AI 애플리케이션 개발은 오래된 전통 통계 기법을 사용하는 것으로 시작되었습니다. 미래 가치를 예측하려면 학교에서 직선 보간을 사용 했어야합니다. 소위 AI 프로그램 개발에 성공적으로 적용되는 여러 다른 통계 기술이 있습니다. 오늘날 우리가 가지고있는 AI 프로그램은 훨씬 더 복잡하고 초기 AI 프로그램에서 사용하는 통계 기술을 훨씬 뛰어 넘는 기술을 사용하기 때문에 "소위"라고합니다.

그 당시 AI 애플리케이션을 개발하는 데 사용되었으며 여전히 실제로 사용되고있는 통계 기법의 몇 가지 예가 여기에 나열되어 있습니다.

  • Regression
  • Classification
  • Clustering
  • 확률 이론
  • 의사 결정 트리

여기에서는 AI가 요구하는 광대 함을 두려워하지 않고 AI를 시작할 수있는 몇 가지 기본 기술 만 나열했습니다. 제한된 데이터를 기반으로 AI 애플리케이션을 개발하는 경우 이러한 통계 기술을 사용하게됩니다.

그러나 오늘날에는 데이터가 풍부합니다. 우리가 통계 기술을 가지고있는 거대한 데이터의 종류를 분석하는 것은 그들 자신의 한계가 있기 때문에별로 도움이되지 않습니다. 따라서 많은 복잡한 문제를 해결하기 위해 딥 러닝과 같은 고급 방법이 개발되었습니다.

이 튜토리얼을 진행하면서 머신 러닝이 무엇이며 복잡한 AI 애플리케이션을 개발하는 데 어떻게 사용되는지 이해하게됩니다.

평방 피트 단위의 주택 가격 대 크기를 보여주는 다음 그림을 고려하십시오.

XY 플롯에 다양한 데이터 포인트를 플로팅 한 후 크기가 주어진 다른 집에 대한 예측을 수행하기 위해 최적의 선을 그립니다. 알려진 데이터를 기계에 공급하고 가장 적합한 라인을 찾도록 요청할 것입니다. 기계에서 최적의 라인을 찾으면 알려진 집 크기, 즉 위 곡선의 Y 값을 공급하여 적합성을 테스트합니다. 기계는 이제 추정 된 X 값, 즉 주택의 예상 가격을 반환합니다. 이 다이어그램은 3000 평방 피트 이상의 주택 가격을 알아 내기 위해 추정 할 수 있습니다. 이것을 통계에서 회귀라고합니다. 특히 이러한 종류의 회귀는 X와 Y 데이터 포인트 간의 관계가 선형이기 때문에 선형 회귀라고합니다.

대부분의 경우 X 및 Y 데이터 포인트 간의 관계는 직선이 아닐 수 있으며 복잡한 방정식이있는 곡선 일 수 있습니다. 이제 당신의 임무는 미래 가치를 예측하기 위해 외삽 할 수있는 가장 적합한 곡선을 찾는 것입니다. 이러한 애플리케이션 플롯 중 하나가 아래 그림에 나와 있습니다.

출처:

https://upload.wikimedia.org/wikipedia/commons/c/c9/

통계 최적화 기술을 사용하여 여기에서 최적 곡선에 대한 방정식을 찾습니다. 이것이 바로 머신 러닝에 관한 것입니다. 알려진 최적화 기술을 사용하여 문제에 대한 최상의 솔루션을 찾습니다.

다음으로 머신 러닝의 다양한 카테고리를 살펴 보겠습니다.

기계 학습은 다음과 같은 제목으로 광범위하게 분류됩니다.

기계 학습은 위의 다이어그램에 표시된 것처럼 왼쪽에서 오른쪽으로 진화했습니다.

  • 처음에 연구자들은지도 학습으로 시작했습니다. 이것은 앞서 논의한 주택 가격 예측의 경우입니다.

  • 그 다음에는 감독없이 기계가 스스로 학습하도록 만들어진 비지도 학습이 이어졌습니다.

  • 과학자들은 기계가 예상대로 작업을 수행하고 강화 학습이있을 때 기계에 보상하는 것이 좋은 생각 일 수 있음을 발견했습니다.

  • 얼마 지나지 않아 요즘 사용 가능한 데이터가 너무 커서 지금까지 개발 된 기존 기술로는 빅 데이터를 분석하고 예측을 제공하지 못했습니다.

  • 따라서 우리의 바이너리 컴퓨터에서 생성 된 인공 신경망 (ANN)에서 인간의 뇌가 시뮬레이션되는 딥 러닝이 시작되었습니다.

  • 이제 기계는 오늘날 사용할 수있는 높은 컴퓨팅 성능과 방대한 메모리 리소스를 사용하여 스스로 학습합니다.

  • 이제 딥 러닝이 이전에 풀지 못했던 많은 문제를 해결 한 것으로 나타났습니다.

  • 이 기술은 이제 딥 러닝 네트워크에 인센티브를 제공하여 더욱 발전했으며 마침내 딥 강화 학습이 제공됩니다.

이제 이러한 각 범주를 더 자세히 살펴 보겠습니다.

지도 학습

지도 학습은 아이가 걸을 수 있도록 훈련하는 것과 유사합니다. 아이가 스스로 걷는 법을 배울 때까지 아이의 손을 잡고 발을 앞으로 뻗는 방법을 보여주고 시연을 위해 스스로 걷는 등의 방법을 보여줍니다.

회귀

마찬가지로지도 학습의 경우 컴퓨터에 알려진 구체적인 예를 제공합니다. 주어진 특성 값 x1에 대해 출력은 y1, x2의 경우 y2, x3의 경우 y3 등이라고 말합니다. 이 데이터를 기반으로 컴퓨터가 x와 y 사이의 경험적 관계를 파악하도록합니다.

머신이 충분한 수의 데이터 포인트로 이러한 방식으로 훈련되면 이제 주어진 X에 대해 Y를 예측하도록 머신에 요청합니다. 주어진 X에 대한 Y의 실제 값을 알고 있다고 가정하면 다음을 추론 할 수 있습니다. 기계의 예측이 올바른지 여부.

따라서 알려진 테스트 데이터를 사용하여 머신이 학습했는지 여부를 테스트합니다. 기계가 원하는 수준의 정확도 (예 : 80 ~ 90 %)로 예측을 수행 할 수 있다고 만족하면 기계 훈련을 더 이상 중지 할 수 있습니다.

이제 기계를 사용하여 알려지지 않은 데이터 포인트에 대한 예측을 수행하거나 Y의 실제 값을 모르는 주어진 X에 대해 Y를 예측하도록 기계에 요청할 수 있습니다.이 훈련은 우리가 이야기 한 회귀에서 이루어집니다. 일찍이.

분류

분류 문제에 기계 학습 기술을 사용할 수도 있습니다. 분류 문제에서는 유사한 성격의 개체를 단일 그룹으로 분류합니다. 예를 들어 100 명의 학생이 키에 따라 짧게, 중간, 길게 세 그룹으로 그룹화 할 수 있다고 말합니다. 각 학생의 키를 측정하여 적절한 그룹에 배치합니다.

이제 새로운 학생이 들어 오면 키를 측정하여 적절한 그룹에 배치합니다. 회귀 훈련의 원칙에 따라 기계를 훈련하여 학생의 특징 인 키를 기준으로 학생을 분류합니다. 기계가 그룹이 어떻게 형성되는지 학습하면 알려지지 않은 새로운 학생을 올바르게 분류 할 수 있습니다. 다시 한 번 테스트 데이터를 사용하여 개발 된 모델을 프로덕션에 배치하기 전에 기계가 분류 기술을 습득했는지 확인합니다.

지도 학습은 AI가 실제로 여정을 시작한 곳입니다. 이 기술은 여러 경우에 성공적으로 적용되었습니다. 컴퓨터에서 필기 인식을 수행하는 동안이 모델을 사용했습니다. 지도 학습을 위해 여러 알고리즘이 개발되었습니다. 다음 장에서 이에 대해 배울 것입니다.

비지도 학습

비지도 학습에서는 기계에 대한 목표 변수를 지정하지 않고 기계에 "X에 대해 무엇을 알려줄 수 있습니까?"라고 질문합니다. 더 구체적으로, 우리는 거대한 데이터 세트 X가 주어지면 "X에서 만들 수있는 최고의 그룹은 무엇입니까?"와 같은 질문을 할 수 있습니다. 또는 "X에서 가장 자주 발생하는 기능은 무엇입니까?" 이러한 질문에 대한 답을 얻으려면 기계가 전략을 추론하는 데 필요한 데이터 포인트 수가 매우 많다는 것을 이해할 수 있습니다. 지도 학습의 경우 약 수천 개의 데이터 포인트로 기계를 훈련 할 수 있습니다. 그러나 비지도 학습의 경우 학습에 합리적으로 허용되는 데이터 포인트의 수는 수백만에서 시작됩니다. 요즘에는 데이터가 일반적으로 풍부하게 제공됩니다. 데이터에는 이상적으로 큐레이팅이 필요합니다. 그러나 소셜 영역 네트워크에서 지속적으로 흐르는 데이터의 양은 대부분의 경우 데이터 큐 레이션이 불가능한 작업입니다.

다음 그림은 감독되지 않은 기계 학습에 의해 결정된 노란색 점과 빨간색 점 사이의 경계를 보여줍니다. 기계가 상당히 정확한 정확도로 각각의 검은 색 점의 등급을 결정할 수 있다는 것을 분명히 알 수 있습니다.

출처:

https://chrisjmccormick.files.wordpress.com/2013/08/approx_decision_boun dary.png

비지도 학습은 얼굴 감지, 물체 감지 등과 같은 많은 최신 AI 애플리케이션에서 큰 성공을 거두었습니다.

강화 학습

애완견 훈련을 고려하고, 우리는 우리에게 공을 가져 오도록 애완 동물을 훈련시킵니다. 우리는 공을 일정한 거리로 던지고 개에게 공을 다시 가져 오도록 요청합니다. 개가이 일을 제대로 할 때마다 우리는 개에게 보상합니다. 천천히, 개는 일을 올바르게하는 것이 그에게 보상을 준다는 것을 알게되고, 개는 미래에 매번 올바른 방식으로 일을 시작합니다. 정확히이 개념은 "강화"유형의 학습에 적용됩니다. 이 기술은 처음에는 기계가 게임을하기 위해 개발되었습니다. 기계에는 게임의 각 단계에서 가능한 모든 동작을 분석하는 알고리즘이 제공됩니다. 기계는 무브 중 하나를 무작위로 선택할 수 있습니다. 이동이 옳다면 기계는 보상을 받고 그렇지 않으면 불이익을받을 수 있습니다. 천천히, 기계는 옳고 그름을 구별하기 시작할 것이고, 몇 번의 반복 후에 더 나은 정확도로 게임 퍼즐을 푸는 법을 배울 것입니다. 기계가 점점 더 많은 게임을할수록 게임 승리의 정확성이 향상됩니다.

전체 프로세스는 다음 다이어그램에 설명되어 있습니다.

이 기계 학습 기술은 레이블이 지정된 입력 / 출력 쌍을 제공 할 필요가 없다는 점에서지도 학습과 다릅니다. 초점은 새로운 솔루션 탐색과 학습 된 솔루션 활용 사이의 균형을 찾는 데 있습니다.

딥 러닝

딥 러닝은 ANN (인공 신경망), 특히 CNN (Convolutional Neural Network)을 기반으로 한 모델입니다. 심층 신경망, 심층 신념 네트워크, 반복 신경망 및 컨볼 루션 신경망과 같은 심층 학습에 사용되는 여러 아키텍처가 있습니다.

이러한 네트워크는 컴퓨터 비전, 음성 인식, 자연어 처리, 생물 정보학, 약물 설계, 의료 이미지 분석 및 게임 문제를 해결하는 데 성공적으로 적용되었습니다. 딥 러닝이 능동적으로 적용되는 다른 여러 분야가 있습니다. 딥 러닝에는 엄청난 처리 능력과 방대한 데이터가 필요하며 요즘에는 일반적으로 쉽게 사용할 수 있습니다.

다음 장에서 딥 러닝에 대해 더 자세히 이야기 할 것입니다.

심층 강화 학습

심층 강화 학습 (DRL)은 심층 학습과 강화 학습의 기술을 결합합니다. 이제 Q- 학습과 같은 강화 학습 알고리즘이 딥 러닝과 결합되어 강력한 DRL 모델을 생성합니다. 이 기술은 로봇 공학, 비디오 게임, 금융 및 의료 분야에서 큰 성공을 거두었습니다. 이전에 해결할 수 없었던 많은 문제가 이제 DRL 모델을 생성하여 해결됩니다. 이 분야에서 많은 연구가 진행되고 있으며 이것은 산업계에서 매우 적극적으로 추구하고 있습니다.

지금까지 다양한 기계 학습 모델에 대해 간략히 소개했습니다. 이제 이러한 모델에서 사용할 수있는 다양한 알고리즘에 대해 조금 더 자세히 살펴 보겠습니다.

지도 학습은 기계 학습과 관련된 중요한 학습 모델 중 하나입니다. 이 장에서는 이에 대해 자세히 설명합니다.

지도 학습을위한 알고리즘

지도 학습에 사용할 수있는 몇 가지 알고리즘이 있습니다. 지도 학습에서 널리 사용되는 알고리즘 중 일부는 다음과 같습니다.

  • k- 최근 접 이웃
  • 의사 결정 트리
  • 나이브 베이 즈
  • 로지스틱 회귀
  • 서포트 벡터 머신

이 장에서 진행하면서 각 알고리즘에 대해 자세히 설명하겠습니다.

k- 최근 접 이웃

kNN이라고하는 k-Nearest Neighbours는 분류 및 회귀 문제를 해결하는 데 사용할 수있는 통계 기법입니다. kNN을 사용하여 알려지지 않은 객체를 분류하는 경우를 논의 해 보겠습니다. 아래 주어진 이미지와 같이 물체의 분포를 고려하십시오-

출처:

https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm

다이어그램은 빨간색, 파란색 및 녹색으로 표시된 세 가지 유형의 개체를 보여줍니다. 위의 데이터 세트에서 kNN 분류기를 실행하면 각 객체 유형에 대한 경계가 아래와 같이 표시됩니다.

출처:

https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm

이제 빨강, 녹색 또는 파랑으로 분류하려는 알려지지 않은 새로운 물체를 생각해보십시오. 이것은 아래 그림에 묘사되어 있습니다.

시각적으로 알 수 있듯이 알 수없는 데이터 포인트는 파란색 개체의 클래스에 속합니다. 수학적으로 이것은 데이터 세트의 다른 모든 지점과이 알려지지 않은 지점의 거리를 측정하여 결론을 내릴 수 있습니다. 이렇게하면 대부분의 이웃이 파란색임을 알 수 있습니다. 빨간색 및 녹색 물체까지의 평균 거리는 파란색 물체까지의 평균 거리보다 확실히 더 큽니다. 따라서이 알 수없는 물체는 파란색 등급에 속하는 것으로 분류 될 수 있습니다.

kNN 알고리즘은 회귀 문제에도 사용할 수 있습니다. kNN 알고리즘은 대부분의 ML 라이브러리에서 바로 사용할 수 있습니다.

의사 결정 트리

순서도 형식의 간단한 의사 결정 트리는 다음과 같습니다.

이 순서도를 기반으로 입력 데이터를 분류하는 코드를 작성합니다. 순서도는 자명하고 사소합니다. 이 시나리오에서는 수신 이메일을 분류하여 읽을시기를 결정하려고합니다.

실제로 의사 결정 트리는 크고 복잡 할 수 있습니다. 이러한 트리를 만들고 순회하는 데 사용할 수있는 여러 알고리즘이 있습니다. 머신 러닝 애호가는 의사 결정 트리를 만들고 순회하는 이러한 기술을 이해하고 마스터해야합니다.

나이브 베이 즈

Naive Bayes는 분류자를 만드는 데 사용됩니다. 과일 바구니에서 다양한 종류의 과일을 분류 (분류)한다고 가정합니다. 과일의 색상, 크기 및 모양과 같은 기능을 사용할 수 있습니다. 예를 들어, 색상이 빨간색이고 모양이 둥글고 지름이 약 10cm 인 과일은 Apple로 간주 될 수 있습니다. 따라서 모델을 훈련하기 위해 이러한 기능을 사용하고 주어진 기능이 원하는 제약 조건과 일치 할 확률을 테스트합니다. 그런 다음 다양한 기능의 확률을 결합하여 주어진 과일이 Apple 일 확률에 도달합니다. Naive Bayes는 일반적으로 분류를 위해 적은 수의 훈련 데이터가 필요합니다.

로지스틱 회귀

다음 다이어그램을보십시오. XY 평면에서 데이터 포인트의 분포를 보여줍니다.

다이어그램에서 빨간색 점과 녹색 점의 분리를 시각적으로 검사 할 수 있습니다. 이 점들을 구분하기 위해 경계선을 그릴 수 있습니다. 이제 새 데이터 포인트를 분류하려면 포인트가있는 선의 어느쪽에 있는지 확인하기 만하면됩니다.

서포트 벡터 머신

다음 데이터 분포를 살펴보십시오. 여기서 세 가지 데이터 클래스는 선형으로 분리 될 수 없습니다. 경계 곡선은 비선형입니다. 이러한 경우 곡선의 방정식을 찾는 것은 복잡한 작업이됩니다.

출처: http://uc-r.github.io/svm

SVM (Support Vector Machine)은 이러한 상황에서 분리 경계를 결정하는 데 유용합니다.

다행히도 대부분의 경우 이전 강의에서 언급 한 알고리즘을 코딩 할 필요가 없습니다. 이러한 알고리즘의 즉시 사용 가능한 구현을 제공하는 많은 표준 라이브러리가 있습니다. 널리 사용되는 툴킷 중 하나는 scikit-learn입니다. 아래 그림은이 라이브러리에서 사용할 수있는 알고리즘의 종류를 보여줍니다.

출처: https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

이러한 알고리즘의 사용은 사소한 일이며 현장 테스트를 잘 거치므로 AI 애플리케이션에서 안전하게 사용할 수 있습니다. 이러한 라이브러리의 대부분은 상업적 목적으로도 무료로 사용할 수 있습니다.

지금까지 여러분이 본 것은 기계가 목표에 대한 해결책을 찾는 방법을 배우도록 만드는 것입니다. 회귀에서는 미래 가치를 예측하도록 기계를 훈련시킵니다. 분류에서 우리는 우리가 정의한 범주 중 하나에서 알려지지 않은 물체를 분류하도록 기계를 훈련시킵니다. 간단히 말해, 우리는 데이터 X에 대해 Y를 예측할 수 있도록 기계를 훈련 시켰습니다. 거대한 데이터 세트가 있고 범주를 추정하지 않으면지도 학습을 사용하여 기계를 훈련하기가 어려울 것입니다. 기계가 몇 기가 바이트와 테라 바이트로 실행되는 빅 데이터를 조회 및 분석하고이 데이터에 너무 많은 개별 범주가 포함되어 있다고 말할 수 있다면 어떨까요?

예를 들어, 유권자의 데이터를 고려하십시오. 각 유권자의 일부 입력 (AI 용어로는 기능이라고 함)을 고려하여 X 정당에 투표 할 유권자가 너무 많고 Y에 투표하는 유권자가 너무 많다는 것을 기계가 예측하도록합니다. 따라서 일반적으로 우리는 엄청난 양의 데이터 포인트 X가 주어진 머신에 "X에 대해 무엇을 말할 수 있습니까?"라고 질문합니다. 또는 "X에서 만들 수있는 최고의 그룹 5 개는 무엇입니까?"와 같은 질문 일 수 있습니다. 또는 "X에서 가장 자주 발생하는 세 가지 기능"과 같을 수도 있습니다.

이것이 바로 비지도 학습에 관한 것입니다.

비지도 학습을위한 알고리즘

이제 비지도 머신 러닝에서 분류에 널리 사용되는 알고리즘 중 하나에 대해 살펴 보겠습니다.

k- 평균 클러스터링

2000 년과 2004 년 미국 대통령 선거는 매우 가까웠습니다. 모든 후보가받은 인기 투표의 가장 큰 비율은 50.7 % 였고 가장 낮은 투표율은 47.9 %였습니다. 유권자의 일부가 편파를했다면 선거 결과는 달랐을 것입니다. 적절하게 항소 할 때 편파를 바꿀 소수의 유권자들이 있습니다. 이 그룹은 크지 않을 수 있지만 이렇게 가까운 인종으로 선거 결과를 바꿀만큼 충분히 클 수 있습니다. 이 사람들 그룹을 어떻게 찾습니까? 제한된 예산으로 어떻게 그들에게 어필합니까? 답은 클러스터링입니다.

그것이 어떻게 이루어지는 지 이해합시다.

  • 첫째, 동의 여부에 관계없이 사람들에 대한 정보를 수집합니다. 즉, 자신에게 중요한 것이 무엇인지, 투표 방식에 어떤 영향을 미칠지에 대한 단서를 제공 할 수있는 모든 종류의 정보입니다.

  • 그런 다음이 정보를 일종의 클러스터링 알고리즘에 넣습니다.

  • 다음으로, 각 클러스터에 대해 (가장 큰 클러스터를 먼저 선택하는 것이 현명 할 것입니다) 이러한 유권자들에게 호소 할 메시지를 작성합니다.

  • 마지막으로 캠페인을 제공하고 효과가 있는지 측정합니다.

클러스터링은 유사한 사물의 클러스터를 자동으로 형성하는 비지도 학습 유형입니다. 자동 분류와 같습니다. 거의 모든 것을 클러스터링 할 수 있으며 클러스터에있는 항목이 더 유사할수록 클러스터가 더 좋습니다. 이 장에서는 k- 평균이라는 클러스터링 알고리즘의 한 유형을 연구 할 것입니다. 'k'고유 군집을 찾기 때문에 k- 평균이라고하며 각 군집의 중심은 해당 군집에있는 값의 평균입니다.

클러스터 식별

클러스터 식별은 알고리즘에“여기 데이터가 있습니다. 이제 비슷한 것들을 함께 그룹화하고 그 그룹에 대해 말해주세요.” 분류와의 주요 차이점은 분류에서 원하는 것을 알고 있다는 것입니다. 클러스터링에서는 그렇지 않습니다.

클러스터링은 분류와 동일한 결과를 생성하지만 사전 정의 된 클래스가 없기 때문에 비지도 분류라고도합니다.

이제 우리는 감독 및 비지도 학습 모두에 익숙합니다. 나머지 기계 학습 범주를 이해하려면 먼저 다음 장에서 배우게 될 인공 신경망 (ANN)을 이해해야합니다.

인공 신경망의 아이디어는 인간 두뇌의 신경망에서 파생되었습니다. 인간의 뇌는 정말 복잡합니다. 뇌를주의 깊게 연구 한 과학자들과 엔지니어들은 우리의 디지털 세계의 이진 컴퓨터에 맞는 아키텍처를 고안했습니다. 이러한 전형적인 아키텍처가 아래 다이어그램에 나와 있습니다.

외부 세계에서 데이터를 수집하기 위해 많은 센서가있는 입력 레이어가 있습니다. 오른쪽에는 네트워크에서 예측 한 결과를 제공하는 출력 레이어가 있습니다. 이 둘 사이에는 여러 레이어가 숨겨져 있습니다. 각 추가 계층은 네트워크 훈련에 더 많은 복잡성을 추가하지만 대부분의 상황에서 더 나은 결과를 제공합니다. 지금 논의 할 여러 유형의 아키텍처가 설계되었습니다.

ANN 아키텍처

아래 다이어그램은 일정 기간 동안 개발되었으며 현재 실제로 사용되고있는 여러 ANN 아키텍처를 보여줍니다.

출처:

https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained-3fb6f2367464

각 아키텍처는 특정 유형의 애플리케이션을 위해 개발되었습니다. 따라서 기계 학습 애플리케이션에 신경망을 사용할 때 기존 아키텍처 중 하나를 사용하거나 직접 설계해야합니다. 최종적으로 결정하는 응용 프로그램 유형은 응용 프로그램 요구 사항에 따라 다릅니다. 특정 네트워크 아키텍처를 사용하도록 지시하는 단일 지침은 없습니다.

딥 러닝은 ANN을 사용합니다. 먼저 그 힘에 대한 아이디어를 제공 할 몇 가지 딥 러닝 애플리케이션을 살펴 보겠습니다.

응용

딥 러닝은 기계 학습 응용 프로그램의 여러 영역에서 많은 성공을 거두었습니다.

Self-driving Cars− 자율 주행 차는 딥 러닝 기술을 사용합니다. 그들은 일반적으로 끊임없이 변화하는 교통 상황에 적응하고 일정 기간 동안 운전을 더 잘합니다.

Speech Recognition− 딥 러닝의 또 다른 흥미로운 응용 분야는 음성 인식입니다. 오늘날 우리 모두는 말을 인식 할 수있는 여러 모바일 앱을 사용합니다. Apple의 Siri, Amazon의 Alexa, Microsoft의 Cortena 및 Google의 Assistant – 모두 딥 러닝 기술을 사용합니다.

Mobile Apps− 우리는 사진을 정리하기 위해 여러 웹 기반 및 모바일 앱을 사용합니다. 얼굴 감지, 얼굴 ID, 얼굴 태그 지정, 이미지에서 개체 식별-모두 딥 러닝을 사용합니다.

딥 러닝의 기회

많은 영역에서 딥 러닝 애플리케이션이 큰 성공을 거둔 것을 살펴본 후 사람들은 지금까지 기계 학습이 적용되지 않은 다른 영역을 탐색하기 시작했습니다. 딥 러닝 기술이 성공적으로 적용되는 여러 영역이 있으며 악용 될 수있는 다른 영역도 많습니다. 이들 중 일부는 여기에서 설명합니다.

  • 농업은 사람들이 작물 수확량을 향상시키기 위해 딥 러닝 기술을 적용 할 수있는 산업 중 하나입니다.

  • 소비자 금융은 기계 학습이 사기에 대한 조기 감지를 제공하고 고객의 지불 능력을 분석하는 데 크게 도움이되는 또 다른 영역입니다.

  • 딥 러닝 기술은 의학 분야에도 적용되어 신약을 만들고 환자에게 맞춤 처방을 제공합니다.

가능성은 무궁무진하며 새로운 아이디어와 개발이 자주 등장하는 것을 계속 지켜봐야합니다.

딥 러닝을 사용하여 더 많은 것을 달성하기 위해 필요한 것

딥 러닝을 사용하려면 슈퍼 컴퓨팅 능력이 필수 요건입니다. 딥 러닝 모델을 개발하려면 메모리와 CPU가 모두 필요합니다. 다행히 오늘날 우리는 고성능 컴퓨팅 인 HPC를 쉽게 사용할 수 있습니다. 이로 인해 위에서 언급 한 딥 러닝 애플리케이션의 개발이 오늘날 현실이되었으며 앞으로도 앞서 논의한 미개발 영역의 애플리케이션을 볼 수 있습니다.

이제 기계 학습 애플리케이션에서 사용하기 전에 고려해야 할 딥 러닝의 몇 가지 제한 사항을 살펴 보겠습니다.

딥 러닝 단점

딥 러닝을 사용하기 전에 고려해야 할 몇 가지 중요한 사항은 다음과 같습니다.

  • 블랙 박스 접근
  • 개발 기간
  • 데이터 양
  • 계산적으로 비싸다

이제 이러한 제한 사항에 대해 자세히 살펴 보겠습니다.

블랙 박스 접근

ANN은 블랙 박스와 같습니다. 특정 입력을 제공하면 특정 출력을 제공합니다. 다음 다이어그램은 동물 이미지를 신경망에 공급하고 이미지가 개라는 것을 알려주는 애플리케이션 중 하나를 보여줍니다.

이것이 블랙 박스 접근 방식이라고하는 이유는 네트워크가 특정 결과를 내놓은 이유를 모르기 때문입니다. 네트워크가 개라고 어떻게 결론을 내 렸는지 모르십니까? 이제 은행이 고객의 신용도를 결정하려는 은행 애플리케이션을 고려하십시오. 네트워크는이 질문에 대한 답을 확실히 제공 할 것입니다. 그러나 고객에게 정당화 할 수 있습니까? 은행은 대출이 제재되지 않는 이유를 고객에게 설명해야합니까?

개발 기간

신경망 훈련 과정은 아래 다이어그램에 나와 있습니다.

먼저 해결하려는 문제를 정의하고, 사양을 만들고, 입력 기능을 결정하고, 네트워크를 설계하고, 배포하고, 출력을 테스트합니다. 출력이 예상과 다를 경우이를 피드백으로 받아 네트워크를 재구성하십시오. 이는 반복적 인 프로세스이며 원하는 출력을 생성하도록 시간 네트워크가 완전히 훈련 될 때까지 여러 번 반복해야 할 수 있습니다.

데이터 양

딥 러닝 네트워크는 일반적으로 훈련을 위해 엄청난 양의 데이터를 필요로하는 반면, 전통적인 기계 학습 알고리즘은 수천 개의 데이터 포인트만으로도 큰 성공을 거둘 수 있습니다. 다행히도 데이터 풍부도는 매년 40 % 씩 증가하고 있으며 CPU 처리 능력은 아래 다이어그램에서 볼 수 있듯이 매년 20 % 씩 증가하고 있습니다.

계산적으로 비싸다

신경망을 훈련하려면 기존 알고리즘을 실행하는 데 필요한 것보다 몇 배 더 많은 계산 능력이 필요합니다. 심층 신경망의 성공적인 훈련에는 몇 주 동안의 훈련 시간이 필요할 수 있습니다.

이와 대조적으로 기존의 기계 학습 알고리즘은 훈련하는 데 몇 분 / 시간 밖에 걸리지 않습니다. 또한 심층 신경망을 훈련하는 데 필요한 계산 능력의 양은 데이터 크기와 네트워크가 얼마나 깊고 복잡한 지에 따라 크게 달라집니다.

머신 러닝이 무엇인지, 그 기능, 제한 사항 및 응용 프로그램에 대한 개요를 살펴본 후 이제 "머신 러닝"학습에 대해 알아 보겠습니다.

기계 학습은 폭이 매우 넓고 여러 영역에 걸친 기술이 필요합니다. 머신 러닝 전문가가되기 위해 습득해야하는 기술은 다음과 같습니다.

  • Statistics
  • 확률 이론
  • Calculus
  • 최적화 기술
  • Visualization

머신 러닝의 다양한 기술의 필요성

어떤 기술을 습득해야하는지에 대한 간략한 아이디어를 제공하기 위해 몇 가지 예를 살펴 보겠습니다.

수학적 표기법

대부분의 기계 학습 알고리즘은 수학을 기반으로합니다. 알아야 할 수학 수준은 아마도 초급 수준 일 것입니다. 중요한 것은 수학자가 방정식에서 사용하는 표기법을 읽을 수 있어야한다는 것입니다. 예를 들어, 표기법을 읽고 의미를 이해할 수 있다면 기계 학습을 배울 준비가 된 것입니다. 그렇지 않다면 수학 지식을 연마해야 할 수도 있습니다.

$$ f_ {AN} (net- \ theta) = \ begin {cases} \ gamma & if \ : net- \ theta \ geq \ epsilon \\ net- \ theta & if-\ epsilon <net- \ theta <\ 엡실론 \\-\ 감마 & if \ : net- \ theta \ leq- \ epsilon \ end {cases} $$

$$ \ displaystyle \\\ max \ limits _ {\ alpha} \ begin {bmatrix} \ displaystyle \ sum \ limits_ {i = 1} ^ m \ alpha- \ frac {1} {2} \ displaystyle \ sum \ limits_ { i, j = 1} ^ m label ^ \ left (\ begin {array} {c} i \\ \ end {array} \ right) \ cdot \ : label ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ cdot \ : a_ {i} \ cdot \ : a_ {j} \ langle x ^ \ left (\ begin {array} {c} i \\ \ end {array} \ 오른쪽), x ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ rangle \ end {bmatrix} $$

$$ f_ {AN} (net- \ theta) = \ left (\ frac {e ^ {\ lambda (net- \ theta)}-e ^ {-\ lambda (net- \ theta)}} {e ^ { \ lambda (net- \ theta)} + e ^ {-\ lambda (net- \ theta)}} \ right) \; $$

확률 이론

다음은 확률 이론에 대한 현재 지식을 테스트하는 예입니다. 조건부 확률로 분류.

$$ p (c_ {i} | x, y) \; = \ frac {p (x, y | c_ {i}) \; p (c_ {i}) \;} {p (x, y) \ ;} $$

이러한 정의를 통해 베이지안 분류 규칙을 정의 할 수 있습니다.

  • P (c1 | x, y)> P (c2 | x, y)이면 클래스는 c1입니다.
  • P (c1 | x, y) <P (c2 | x, y)이면 클래스는 c2입니다.

최적화 문제

다음은 최적화 기능입니다.

$$ \ displaystyle \\\ max \ limits _ {\ alpha} \ begin {bmatrix} \ displaystyle \ sum \ limits_ {i = 1} ^ m \ alpha- \ frac {1} {2} \ displaystyle \ sum \ limits_ { i, j = 1} ^ m label ^ \ left (\ begin {array} {c} i \\ \ end {array} \ right) \ cdot \ : label ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ cdot \ : a_ {i} \ cdot \ : a_ {j} \ langle x ^ \ left (\ begin {array} {c} i \\ \ end {array} \ 오른쪽), x ^ \ left (\ begin {array} {c} j \\ \ end {array} \ right) \ rangle \ end {bmatrix} $$

다음 제약 조건에 따라-

$$ \ alpha \ geq0, 및 \ : \ displaystyle \ sum \ limits_ {i-1} ^ m \ alpha_ {i} \ cdot \ : label ^ \ left (\ begin {array} {c} i \\ \ end {배열} \ 오른쪽) = 0 $$

위의 내용을 읽고 이해할 수 있다면 모든 준비가 완료된 것입니다.

심상

대부분의 경우 데이터 분포를 이해하고 알고리즘 출력 결과를 해석하려면 다양한 유형의 시각화 플롯을 이해해야합니다.

위의 기계 학습의 이론적 측면 외에도 이러한 알고리즘을 코딩하려면 좋은 프로그래밍 기술이 필요합니다.

그렇다면 ML을 구현하려면 무엇이 필요합니까? 다음 장에서 이에 대해 살펴 보겠습니다.

ML 애플리케이션을 개발하려면 플랫폼, IDE 및 개발 언어를 결정해야합니다. 몇 가지 선택이 가능합니다. 이들 중 대부분은 지금까지 논의 된 AI 알고리즘의 구현을 제공하므로 요구 사항을 쉽게 충족 할 수 있습니다.

ML 알고리즘을 직접 개발하는 경우 다음 측면을주의 깊게 이해해야합니다.

선택한 언어는 기본적으로 ML 개발에서 지원되는 언어 중 하나에 대한 숙련도입니다.

사용하는 IDE-기존 IDE에 대한 익숙 함과 편안함 수준에 따라 달라집니다.

Development platform− 개발 및 배포에 사용할 수있는 여러 플랫폼이 있습니다. 이들 중 대부분은 무료입니다. 경우에 따라 일정 사용량을 초과하는 라이선스 요금이 발생할 수 있습니다. 다음은 바로 참조 할 수있는 언어, IDE 및 플랫폼의 간단한 목록입니다.

언어 선택

다음은 ML 개발을 지원하는 언어 목록입니다.

  • Python
  • R
  • Matlab
  • Octave
  • Julia
  • C++
  • C

이 목록은 본질적으로 포괄적이지 않습니다. 그러나 기계 학습 개발에 사용되는 많은 인기 언어를 다룹니다. 당신의 편안함 수준에 따라 개발 언어를 선택하고 모델을 개발하고 테스트하십시오.

십오 일

다음은 ML 개발을 지원하는 IDE 목록입니다.

  • R 스튜디오
  • Pycharm
  • iPython / Jupyter 노트북
  • Julia
  • Spyder
  • Anaconda
  • Rodeo
  • Google –Colab

위의 목록은 본질적으로 포괄적이지 않습니다. 각각의 장점과 단점이 있습니다. 독자는 단일 IDE로 범위를 좁히기 전에 이러한 다양한 IDE를 사용해 보는 것이 좋습니다.

플랫폼

다음은 ML 애플리케이션을 배포 할 수있는 플랫폼 목록입니다.

  • IBM
  • 마이크로 소프트 애저
  • 구글 클라우드
  • Amazon
  • Mlflow

다시 한번이 목록은 완전하지 않습니다. 독자는 위에서 언급 한 서비스에 가입하고 직접 사용해 보는 것이 좋습니다.

이 자습서에서는 기계 학습을 소개했습니다. 자, 당신은 기계 학습이 인간의 두뇌가 할 수있는 활동을 수행하기 위해 기계를 훈련시키는 기술이라는 것을 알고 있습니다. 오늘날 우리는 매우 복잡한 것으로 간주되는 Chess, AlphaGO와 같은 게임에서 기계가 인간 챔피언을 이길 수 있음을 보았습니다. 기계는 여러 영역에서 인간 활동을 수행하도록 훈련 될 수 있고 인간이 더 나은 삶을 살도록 도울 수 있음을 보았습니다.

기계 학습은 감독되거나 감독되지 않을 수 있습니다. 데이터 양이 적고 교육용으로 명확하게 레이블이 지정된 데이터가있는 경우 감독 학습을 선택하십시오. 비지도 학습은 일반적으로 대규모 데이터 세트에 대해 더 나은 성능과 결과를 제공합니다. 쉽게 사용할 수있는 방대한 데이터 세트가있는 경우 딥 러닝 기술을 사용하십시오. 또한 강화 학습 및 심층 강화 학습을 배웠습니다. 이제 신경망이 무엇인지, 그 응용 프로그램과 한계를 알 수 있습니다.

마지막으로 자신 만의 기계 학습 모델을 개발할 때 다양한 개발 언어, IDE 및 플랫폼의 선택을 살펴 보았습니다. 다음으로해야 할 일은 각 기계 학습 기술을 배우고 연습하는 것입니다. 주제가 방대하고 폭이 있다는 뜻이지만 깊이를 고려하면 각 주제를 몇 시간 안에 배울 수 있습니다. 각 주제는 서로 독립적입니다. 한 번에 하나의 주제를 고려하고, 배우고, 연습하고, 선택한 언어를 사용하여 알고리즘을 구현해야합니다. 이것이 머신 러닝 공부를 시작하는 가장 좋은 방법입니다. 한 번에 하나의 주제를 연습하면 머지 않아 기계 학습 전문가에게 필요한 폭을 얻게됩니다.

행운을 빕니다!