2018-19 년 가장 인기있는 주제 중 하나이며 그럴만 한 이유가 있습니다. 기계 나 컴퓨터 프로그램이 실제로 인간을 대체 할 때가 도래 한 산업계에는 많은 발전이있었습니다. 이 파이썬으로 딥 러닝 이 기사는 딥 러닝이 정확히 무엇이며 어떻게이 전환이 가능하게되었는지 이해하는 데 도움이됩니다. 이 기사에서는 다음 주제를 다룰 것입니다.
- 데이터 과학 및 구성 요소
- 딥 러닝의 필요성
- 딥 러닝이란?
- 퍼셉트론 및 인공 신경망
- 딥 러닝의 응용
- 왜 딥 러닝을위한 파이썬인가?
- Python을 사용한 딥 러닝 : 퍼셉트론 예제
- Python을 사용한 딥 러닝 : 심층 신경망 생성
데이터 과학 및 구성 요소
글쎄요, 데이터 과학은 오랫동안 존재해온 것입니다. 데이터 과학 다른 기술과 알고리즘을 사용하여 데이터에서 지식을 추출하는 것입니다.
기계가 인간의 행동을 모방 할 수있게하는 기술입니다. 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을 사용한 딥 러닝'의 댓글 섹션에 언급 해 주시면 다시 연락 드리겠습니다.