Python을 사용한 딥 러닝 : 딥 러닝 초보자 가이드



이 기사는 Python을 사용한 딥 러닝에 대한 포괄적이고 상세한 지식과 이것이 일상 생활에서 얼마나 유용한 지 제공합니다.

2018-19 년 가장 인기있는 주제 중 하나이며 그럴만 한 이유가 있습니다. 기계 나 컴퓨터 프로그램이 실제로 인간을 대체 할 때가 도래 한 산업계에는 많은 발전이있었습니다. 이 파이썬으로 딥 러닝 이 기사는 딥 러닝이 정확히 무엇이며 어떻게이 전환이 가능하게되었는지 이해하는 데 도움이됩니다. 이 기사에서는 다음 주제를 다룰 것입니다.

데이터 과학 및 구성 요소

글쎄요, 데이터 과학은 오랫동안 존재해온 것입니다. 데이터 과학 다른 기술과 알고리즘을 사용하여 데이터에서 지식을 추출하는 것입니다.





AI 타임 라인-Python을 사용한 딥 러닝-Edureka

기계가 인간의 행동을 모방 할 수있게하는 기술입니다. AI이면의 아이디어는 매우 간단하지만 매력적이며, 스스로 결정을 내릴 수있는 지능형 기계를 만드는 것입니다. 수년 동안 컴퓨터는 인간 두뇌의 힘과 결코 일치하지 않을 것이라고 생각했습니다.



그 당시에는 데이터와 계산 능력이 충분하지 않았지만 지금은 빅 데이터 GPU의 출현과 함께 인공 지능이 가능해졌습니다.

기계가 경험을 통해 개선 할 수 있도록 통계적 방법을 사용하는 AI 기술의 하위 집합입니다.



딥 러닝 다층 신경망의 계산을 가능하게하는 ML의 하위 집합입니다. 인간과 같은 의사 결정을 시뮬레이션하기 위해 신경망을 사용합니다.

딥 러닝의 필요성

인공 지능을 향한 한 걸음은 기계 학습입니다. 머신 러닝은 AI의 하위 집합이며 머신이 데이터에 액세스 할 수 있어야하며 스스로 학습하고 탐색 할 수 있어야한다는 생각을 기반으로합니다. 대규모 데이터 세트에서 패턴 추출을 다룹니다. 큰 데이터 세트를 처리하는 것은 문제가되지 않았습니다.

  • 기계 학습 알고리즘 고차원 데이터를 처리 할 수 ​​없음 -우리가 많은 수의 입력과 출력을 가지고있는 곳 : 수천 개의 차원 반올림. 이러한 유형의 데이터를 처리하고 처리하는 것은 매우 복잡하고 리소스가 많이 소모됩니다. 이것은 다음과 같이 불립니다. 차원의 저주.

  • 직면 한 또 다른 과제는 추출 할 기능 . 이는 더 나은 정확도를 달성하는 데있어 결과를 예측하는 데 중요한 역할을합니다. 따라서 특징 추출없이 알고리즘의 효율성은 프로그래머가 얼마나 통찰력이 있는지에 따라 크게 달라 지므로 프로그래머의 과제는 증가합니다.

자, 이것이 딥 러닝이 구출 된 곳입니다. 딥 러닝은 고차원 데이터 처리 가능 또한 효율적입니다 올바른 기능에 집중 그 자체로.

딥 러닝이란?

딥 러닝은 유사한 기계 학습 알고리즘을 사용하여 학습하는 기계 학습의 하위 집합입니다. 전자가 성능을 발휘하지 못하는 경우 더 나은 정확도를 달성하기 위해. 원래, 딥 러닝은 우리의 뇌 기능을 모방합니다. 즉, 경험에서 배웁니다.

아시다시피우리의 뇌는 수십억 개의 뉴런 놀라운 일을 할 수 있습니다. 어린 아이의 두뇌조차도 슈퍼 컴퓨터로도 풀기 어려운 복잡한 문제를 해결할 수 있습니다. 그렇다면 프로그램에서 동일한 기능을 어떻게 얻을 수 있습니까? 자, 이것이 우리가 이해하는 곳입니다 인공 뉴런 (퍼셉트론)인공 신경망.

퍼셉트론 및 인공 신경망

딥 러닝은 뇌 세포 또는 뉴런이라고하는 뇌의 기본 단위를 연구합니다. 이제 생물학적 뉴런의 기능과인지 또는 인공 뉴런에서이 기능을 모방하는 방법을 이해합시다.

  • Dendrite : 다른 뉴런으로부터 신호를받습니다.
  • 세포체: 모든 입력을 더합니다.
  • 축삭 : 다른 셀에 신호를 전송하는 데 사용됩니다.

인공 뉴런 또는 퍼셉트론 이진 분류에 사용되는 선형 모델입니다. 일련의 입력이있는 뉴런을 모델링하며 각 입력에는 특정 가중치가 부여됩니다. 뉴런은 이것에 대한 일부 기능을 계산합니다. 가중 입력하고 출력을 제공합니다.

n 개의 입력을 수신합니다 (각 기능에 해당). 그런 다음 해당 입력을 합산하고 변환을 적용하고 출력을 생성합니다. 두 가지 기능이 있습니다.

  • 요약
  • 변형 (활성화)

가중치는 특정 입력의 효과를 나타냅니다. 입력의 무게가 클수록 신경망에 더 많은 영향을 미칩니다. . 반면에 편견 이다 추가 매개 변수 뉴런에 대한 입력의 가중치 합계와 함께 출력을 조정하는 데 사용되는 Perceptron에서 모델이 주어진 데이터에 가장 잘 맞을 수 있도록 도와줍니다.

활성화 기능 입력을 출력으로 변환합니다. 임계 값을 사용하여 출력을 생성합니다. 다음과 같이 활성화 기능으로 사용되는 많은 기능이 있습니다.

  • 선형 또는 동일성
  • 단위 또는 이진 단계
  • Sigmoid 또는 Logistic
  • Tanh
  • ReLU
  • 소프트 맥스

잘. Perceptron이 문제를 해결했다고 생각한다면 틀린 것입니다. 두 가지 주요 문제가 있습니다.

  • 단일 레이어 퍼셉트론 비선형 적으로 분리 가능한 데이터 포인트를 분류 할 수 없습니다. .
  • 관련된 복잡한 문제 많은 매개 변수 단일 레이어 퍼셉트론으로는 해결할 수 없습니다.

여기의 예와 마케팅 팀의 결정을 내리는 데 관련된 매개 변수의 복잡성을 고려하십시오.

유니온 절은

하나의 뉴런은 너무 많은 입력을 받아 들일 수 없기 때문에 하나 이상의 뉴런이이 문제를 해결하는 데 사용됩니다. 신경망은 정말 다른 방식으로 연결된 퍼셉트론의 구성 다른 활성화 기능에서 작동합니다.

  • 입력 노드 외부 세계에서 네트워크로 정보를 제공하며이를 '입력 계층'이라고합니다.
  • 숨겨진 노드 계산을 수행하고 입력 노드에서 출력 노드로 정보를 전송합니다. 숨겨진 노드 모음은 '숨겨진 레이어'를 형성합니다.
  • 출력 노드 총칭하여 '출력 계층'이라고하며 네트워크에서 외부로 정보를 전송하고 계산을 담당합니다.

이제 퍼셉트론이 어떻게 작동하는지, 관련된 다양한 매개 변수 및 신경망의 여러 계층에 대한 아이디어를 얻었으므로 Python 블로그로이 딥 러닝을 계속하고 딥 러닝의 멋진 응용 프로그램을 살펴 보겠습니다.

딥 러닝의 응용

업계에는 다양한 딥 러닝 응용 프로그램이 있으며, 여기에 우리의 일상 작업에 존재하는 몇 가지 중요한 응용 프로그램이 있습니다.

  • 음성 인식

  • 기계 번역

  • 얼굴 인식 및 자동 태깅

  • 가상 개인 비서

  • 자가 운전 자동차

  • 챗봇

왜 딥 러닝을위한 파이썬인가?

  • 고유 한 속성을 가진 도구 중 하나입니다. 범용 프로그래밍 언어 존재로 사용하기 쉬운 분석 및 정량 컴퓨팅과 관련하여.
  • 그것은 매우 이해하기 쉬운
  • 파이썬은 동적 입력
  • 거대한
  • 다음과 같은 다양한 목적을위한 광범위한 라이브러리 Numpy, Seaborn, Matplotlib, Pandas 및 Scikit-learn

이제 충분한 이론이 있습니다. 작지만 흥미로운 예제를 통해 Python으로 딥 러닝을 시작하는 방법을 살펴 보겠습니다.

Python을 사용한 딥 러닝 : 퍼셉트론 예제

이제 여러분은 ' 또는' 문. 출력은 하나 입력 중 하나라도 하나.

따라서 Perceptron은 OR Gate의 입력 세트를 두 가지 클래스로 나누는 구분 기호 또는 결정 라인으로 사용할 수 있습니다.

클래스 1 : 결정 선 아래에있는 출력이 0 인 입력.
클래스 2 : 결정 줄 또는 구분 기호 위에있는 출력이 1 인 입력입니다.

지금까지 우리는 선형 퍼셉트론을 사용하여 입력 데이터 세트를 두 개의 클래스로 분류 할 수 있음을 이해했습니다. 그러나 실제로 데이터를 어떻게 분류합니까?

수학적으로 퍼셉트론은 가중치, 입력 및 바이어스의 방정식으로 생각할 수 있습니다.

1 단계 : 필요한 모든 라이브러리 가져 오기

여기서는 하나의 라이브러리 만 가져 오겠습니다. TensorFlow

셀레늄을 사용한 크로스 브라우저 테스트
tensorflow를 tf로 가져 오기

2 단계 : 입력 및 출력에 대한 벡터 변수 정의

다음으로 퍼셉트론에 대한 입력, 출력 및 편향을 저장하기위한 변수를 생성해야합니다.

train_in = [[0,0,1], [0,1,1], [1,0,1], [1,1,1]] train_out = [[[0], [1], [1], [1]]

3 단계 : 가중치 변수 정의

여기서 우리는 가중치에 대해 모양 3x1의 텐서 변수를 정의하고 초기에 임의의 값을 할당합니다.

w = tf.Variable (tf.random_normal ([3, 1], 시드 = 15))

4 단계 : 입력 및 출력에 대한 자리 표시 자 정의

실행시 외부 입력을받을 수 있도록 자리 표시자를 정의해야합니다.

x = tf.placeholder (tf.float32, [None, 3]) y = tf.placeholder (tf.float32, [None, 1])

5 단계 : 출력 및 활성화 함수 계산

앞서 논의한 바와 같이, 퍼셉트론에 의해 수신 된 입력은 먼저 각각의 가중치로 곱해진 다음 이러한 모든 가중치 입력이 합산됩니다. 이 합계 값은 최종 결과를 얻기 위해 활성화에 공급됩니다.

출력 = tf.nn.relu (tf.matmul (x, w))

참고 :이 경우에는 Relu 내 활성화 기능으로. 필요에 따라 활성화 기능을 자유롭게 사용할 수 있습니다.

6 단계 : 비용 또는 오류 계산

우리는 퍼셉트론 산출량과 원하는 산출량의 차이의 제곱에 불과한 비용 = 평균 제곱 오차를 계산해야합니다.

손실 = tf.reduce_sum (tf.square (출력-y))

7 단계 : 오류 최소화

퍼셉트론의 목표는 손실 또는 비용 또는 오류를 최소화하는 것입니다. 그래서 여기서는 Gradient Descent Optimizer를 사용할 것입니다.

최적화 기 = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss)

8 단계 : 모든 변수 초기화

변수는 다음으로 만 정의됩니다. tf.Variable. 따라서 정의 된 변수를 초기화해야합니다.

init = tf.global_variables_initializer () sess = tf.Session () sess.run (init)

9 단계 : 반복에서 퍼셉트론 훈련

퍼셉트론을 훈련시켜야합니다. 즉, 오류 또는 손실을 최소화하기 위해 연속 반복에서 가중치 및 편향 값을 업데이트해야합니다. 여기서는 100 세대에서 퍼셉트론을 훈련 할 것입니다.

for i in range (100) : sess.run (train, {x : train_in, y : train_out}) cost = sess.run (loss, feed_dict = {x : train_in, y : train_out}) print ( 'Epoch-- ', i,'-손실- ', 비용)

10 단계 : 출력

……

……

여기에서 볼 수 있듯이 손실은 2.07 그리고 끝났다 0.27

.

Python을 사용한 딥 러닝 : 심층 신경망 생성

이제 퍼셉트론을 성공적으로 생성하고 OR 게이트에 대해 훈련 시켰습니다. 이 기사를 계속 진행하고 스크래치에서 자체 신경망을 생성하는 방법을 살펴 보겠습니다. 여기서 입력 레이어, 히든 레이어 및 출력 레이어를 생성합니다.

MNIST 데이터 세트를 사용할 것입니다. MNIST 데이터 세트는 다음으로 구성됩니다. 60,000 교육 샘플 및 10,000 회 테스트 손으로 쓴 숫자 이미지 샘플. 이미지는 크기입니다 28 × 28 픽셀 출력은 다음 사이에있을 수 있습니다. 0-9 .

여기서 작업은 이미지에있는 숫자를 정확하게 식별 할 수있는 모델을 훈련하는 것입니다.

먼저 아래 import를 사용하여 Python 3의 인쇄 기능을 Python 2.6 이상으로 가져올 것입니다. __future__ 문은 언어에 대한 기본적인 사항을 변경하므로 파일의 맨 위에 있어야하며 컴파일러는 처음부터 이에 대해 알아야합니다.

__future__에서 import print_function

다음은 모든 단계에서 주석이있는 코드입니다.

# tensorflow.examples.tutorials.mnist에서 MNIST 데이터 가져 오기 import input_data mnist = input_data.read_data_sets ( '/ tmp / data /', one_hot = True) import tensorflow as tf import matplotlib.pyplot as plt # 매개 변수 learning_rate = 0.001 training_epochs = 15 batch_size = 100 display_step = 1 # 네트워크 매개 변수 n_hidden_1 = 256 # 첫 번째 레이어 기능 수 n_hidden_2 = 256 # 두 번째 레이어 기능 수 n_input = 784 # MNIST 데이터 입력 (img shape : 28 * 28) n_classes = 10 # MNIST total classes ( 0-9 자리) # tf 그래프 입력 x = tf.placeholder ( 'float', [None, n_input]) y = tf.placeholder ( 'float', [None, n_classes]) # 모델 생성 def multilayer_perceptron (x, weights , biases) : # RELU 활성화가있는 숨겨진 레이어 layer_1 = tf.add (tf.matmul (x, weights [ 'h1']), biases [ 'b1']) layer_1 = tf.nn.relu (layer_1) # 숨겨진 레이어 RELU 활성화 layer_2 = tf.add (tf.matmul (layer_1, weights [ 'h2']), biases [ 'b2']) layer_2 = tf.nn.relu (layer_2) # 선형 활성화가있는 출력 레이어 out_layer = tf. matmul (층 _2, weights [ 'out']) + biases [ 'out'] return out_layer # 레이어 가중치 및 바이어스 가중치 저장 = { 'h1': tf.Variable (tf.random_normal ([n_input, n_hidden_1])), 'h2' : tf.Variable (tf.random_normal ([n_hidden_1, n_hidden_2])), 'out': tf.Variable (tf.random_normal ([n_hidden_2, n_classes]))} biases = { 'b1': tf.Variable (tf. random_normal ([n_hidden_1])), 'b2': tf.Variable (tf.random_normal ([n_hidden_2])), 'out': tf.Variable (tf.random_normal ([n_classes]))} # 모델 구성 pred = multilayer_perceptron (x, 가중치, 편향) # 손실 및 옵티 마이저 비용 정의 = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = pred, labels = y)) optimizer = tf.train.AdamOptimizer (learning_rate = learning_rate) .minimize (cost) # 변수 초기화 init = tf.global_variables_initializer () # 비용 내역 및 정확도 내역을 저장할 빈 목록 생성 cost_history = [] precision_history = [] # tf.Session ()을 sess로 사용하여 그래프를 시작합니다. sess.run (init ) # 범위 (training_epochs)의 epoch에 대한 훈련주기 : avg_cost = 0. total_batch = int (mnist.train.num_examples / batch_size) # 범위 (total_batch)에있는 i에 대한 모든 배치에 대한 루프 : batch_x, batch_y = mnist.train.next_batch (batch_size) # 최적화 작업 (역 전파) 및 비용 실행 op (손실 값을 얻기 위해) _, c = sess.run ([optimizer, cost], feed_dict = {x : batch_x, y : batch_y}) # 평균 손실 계산 avg_cost + = c / total_batch # 다음과 같은 경우 에포크 단계 당 로그 표시 epoch % display_step == 0 : correct_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # 정확도 계산 정확도 = tf.reduce_mean (tf.cast (correct_prediction, 'float') ) acu_temp = 정확도 .eval ({x : mnist.test.images, y : mnist.test.labels}) # 목록에 정확도 추가 precision_history.append (acu_temp) # 비용 내역 추가 cost_history.append (avg_cost) print ( 'Epoch :', '% 04d'% (epoch + 1), '-cost =', '{: .9f}'. format (avg_cost), '-정확도 =', acu_temp) print ( '최적화 완료! ') # 비용 기록 플롯 plt.plot (cost_history) plt.show () # 정확도 기록 플롯 plt.plot (accuracy _history) plt.show () # 테스트 모델 correct_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # 정확도 계산 정확도 = tf.reduce_mean (tf.cast (correct_prediction, ' float ')) print ('Accuracy : ', precision.eval ({x : mnist.test.images, y : mnist.test.labels}))

산출:

이제 이것으로 Python을 사용한 딥 러닝 기사를 마칩니다. 딥 러닝의 다양한 구성 요소, 모든 것이 시작된 방법 및 Python을 사용하여 간단한 퍼셉트론과 딥 신경망을 만드는 방법을 이해 하셨기를 바랍니다.

에두 레카 업계 요구 사항 및 요구 사항에 따라 업계 전문가가 선별합니다. SoftMax 기능, Autoencoder 신경망, RBM (Restricted Boltzmann Machine)과 같은 개념을 마스터하고 Keras 및 TFLearn과 같은 라이브러리를 사용합니다. 이 과정은 실시간 사례 연구를 통해 업계 전문가가 특별히 선별했습니다.

질문이 있으십니까? 'Python을 사용한 딥 러닝'의 댓글 섹션에 언급 해 주시면 다시 연락 드리겠습니다.