Học sâu với Python: Hướng dẫn cho người mới bắt đầu học sâu



Bài viết này sẽ cung cấp cho bạn kiến ​​thức toàn diện và chi tiết về Học sâu với Python và nó hữu ích như thế nào trong cuộc sống hàng ngày.

là một trong những chủ đề Nóng nhất của năm 2018-19 và vì một lý do chính đáng. Đã có rất nhiều tiến bộ trong ngành công nghiệp, trong đó đã đến lúc máy móc hoặc Chương trình Máy tính thực sự thay thế Con người. Điều này Học sâu với Python bài viết này sẽ giúp bạn hiểu chính xác Deep Learning là gì và Quá trình chuyển đổi này đã được thực hiện như thế nào. Tôi sẽ đề cập đến các chủ đề sau trong bài viết này:

Khoa học dữ liệu và các thành phần của nó

Chà, Khoa học Dữ liệu là thứ đã tồn tại từ lâu đời. Khoa học dữ liệu là việc khai thác kiến ​​thức từ dữ liệu bằng cách sử dụng các kỹ thuật và thuật toán khác nhau.





Dòng thời gian AI - Học sâu với Python - Edureka

là một kỹ thuật cho phép máy móc bắt chước hành vi của con người. Ý tưởng đằng sau AI khá đơn giản nhưng hấp dẫn, đó là tạo ra những cỗ máy thông minh có thể tự đưa ra quyết định. Trong nhiều năm, người ta cho rằng máy tính sẽ không bao giờ sánh được với sức mạnh của bộ não con người.



Chà, hồi đó chúng tôi không có đủ dữ liệu và sức mạnh tính toán, nhưng bây giờ với Dữ liệu lớn ra đời và với sự ra đời của GPU, Trí tuệ nhân tạo là có thể.

là một tập hợp con của kỹ thuật AI sử dụng các phương pháp thống kê để cho phép máy móc cải tiến theo kinh nghiệm.



Học kĩ càng là một tập con của ML giúp cho việc tính toán mạng nơ ron nhiều lớp khả thi. Nó sử dụng mạng Neural để mô phỏng việc ra quyết định giống như con người.

Sự cần thiết của Học sâu

Một bước tiến tới trí tuệ nhân tạo là Học máy. Học máy là một tập hợp con của AI và dựa trên ý tưởng rằng máy móc nên được cấp quyền truy cập vào dữ liệu và nên để chúng tự học và khám phá. Nó xử lý việc trích xuất các mẫu từ các tập dữ liệu lớn. Xử lý các tập dữ liệu lớn không phải là một vấn đề.

  • Thuật toán học máy không thể xử lý dữ liệu chiều cao - nơi chúng ta có một số lượng lớn các đầu vào và đầu ra: tròn nghìn chiều. Việc xử lý và xử lý loại dữ liệu như vậy trở nên rất phức tạp và cạn kiệt tài nguyên. Điều này được gọi là Lời nguyền của chiều không gian.

  • Một thách thức khác phải đối mặt là, để xác định các tính năng được trích xuất . Điều này đóng một vai trò quan trọng trong việc dự đoán kết quả cũng như đạt được độ chính xác tốt hơn. Do đó, nếu không trích xuất tính năng, thách thức đối với lập trình viên tăng lên khi tính hiệu quả của thuật toán phụ thuộc rất nhiều vào mức độ hiểu biết sâu sắc của người lập trình.

Bây giờ, đây là nơi mà Deep Learning đã giải cứu. Học sâu là có khả năng xử lý dữ liệu chiều cao và cũng hiệu quả trong tập trung vào các tính năng phù hợp của riêng nó.

Học sâu là gì?

Học sâu là một tập hợp con của Học máy trong đó các Thuật toán học máy tương tự được sử dụng để đào tạo để đạt được độ chính xác tốt hơn trong những trường hợp mà trước đó không hoạt động đúng mức. Về cơ bản, Học sâu bắt chước cách não của chúng ta hoạt động tức là nó học hỏi từ kinh nghiệm.

Như bạn đã biết,bộ não của chúng ta được tạo thành từ hàng tỷ tế bào thần kinh điều đó cho phép chúng tôi làm những điều tuyệt vời. Ngay cả bộ não của một đứa trẻ nhỏ cũng có khả năng giải quyết những vấn đề phức tạp mà rất khó giải quyết ngay cả khi sử dụng Siêu máy tính. Vì vậy, Làm thế nào chúng ta có thể đạt được cùng một chức năng trong một chương trình? Bây giờ, đây là nơi chúng tôi hiểu Neuron nhân tạo (Perceptron)Mạng lưới thần kinh nhân tạo.

Perceptron và các mạng thần kinh nhân tạo

Deep Learning nghiên cứu đơn vị cơ bản của não được gọi là tế bào não hoặc tế bào thần kinh. Bây giờ, chúng ta hãy hiểu chức năng của tế bào thần kinh sinh học và cách chúng ta bắt chước chức năng này trong nhận thức hoặc tế bào thần kinh nhân tạo.

  • Dendrite: Nhận tín hiệu từ các tế bào thần kinh khác
  • Cơ thể tế bào: Tính tổng tất cả các đầu vào
  • Axon: Nó được sử dụng để truyền tín hiệu đến các ô khác

Một nơron nhân tạo hoặc một Perceptron là một mô hình tuyến tính được sử dụng để phân loại nhị phân. Nó mô hình một nơ-ron có một tập hợp các đầu vào, mỗi đầu vào có một trọng số cụ thể. Tế bào thần kinh tính toán một số chức năng trên có trọng lượng đầu vào và đưa ra đầu ra.

Nó nhận n đầu vào (tương ứng với từng tính năng). Sau đó, nó tổng hợp các đầu vào đó, áp dụng một phép biến đổi và tạo ra đầu ra. Nó có hai chức năng:

  • Tổng kết
  • Chuyển đổi (Kích hoạt)

Trọng số cho thấy hiệu quả của một đầu vào cụ thể. Trọng lượng đầu vào càng nhiều, nó sẽ càng có nhiều tác động đến mạng nơ-ron . Mặt khác, Thiên kiến là một tham số bổ sung trong Perceptron được sử dụng để điều chỉnh đầu ra cùng với tổng trọng số của các đầu vào cho nơron giúp mô hình theo cách phù hợp nhất với dữ liệu đã cho.

Chức năng kích hoạt chuyển các đầu vào thành đầu ra. Nó sử dụng một ngưỡng để tạo ra một đầu ra. Có nhiều chức năng được sử dụng làm Chức năng kích hoạt, như:

  • Tuyến tính hoặc Nhận dạng
  • Đơn vị hoặc Bước nhị phân
  • Sigmoid hoặc Logistic
  • Tanh
  • ReLU
  • Softmax

Tốt. nếu bạn nghĩ Perceptron giải quyết được vấn đề, thì bạn đã nhầm. Có hai vấn đề chính:

  • Perceptron một lớp không thể phân loại các điểm dữ liệu có thể phân tách không tuyến tính .
  • Các vấn đề phức tạp, liên quan đến rất nhiều thông số không thể được giải quyết bằng Perceptron một lớp.

Hãy xem xét ví dụ ở đây và mức độ phức tạp của các thông số liên quan để đưa ra Quyết định của nhóm tiếp thị.

trong nhóm hằng chuỗi, sẽ không có hai đối tượng chuỗi có cùng nội dung.

Một Neuron, không thể nhận quá nhiều đầu vào và đó là lý do tại sao nhiều hơn một neuron sẽ được sử dụng để giải quyết vấn đề này. Mạng thần kinh thực sự chỉ là một thành phần của Perceptron, được kết nối theo những cách khác nhau và hoạt động trên các chức năng kích hoạt khác nhau.

  • Các nút đầu vào cung cấp thông tin từ thế giới bên ngoài vào mạng và được gọi chung là “Lớp đầu vào”.
  • Nút ẩn thực hiện các phép tính và chuyển thông tin từ các nút đầu vào đến các nút đầu ra. Một tập hợp các nút ẩn tạo thành một “Lớp ẩn”.
  • Các nút đầu ra được gọi chung là “Lớp đầu ra” và chịu trách nhiệm tính toán và chuyển thông tin từ mạng ra thế giới bên ngoài.

Bây giờ bạn đã có ý tưởng về cách thức hoạt động của perceptron, các tham số khác nhau liên quan và các lớp khác nhau của Mạng thần kinh, hãy tiếp tục Bài học sâu với Python này và xem một số ứng dụng thú vị của Học sâu.

Các ứng dụng của Học sâu

Có nhiều ứng dụng khác nhau của Học sâu trong ngành, dưới đây là một vài ứng dụng quan trọng có mặt trong các nhiệm vụ hàng ngày của chúng tôi.

  • Nhận dạng giọng nói

  • Dịch máy

  • Nhận dạng khuôn mặt và tự động gắn thẻ

  • Trợ lý cá nhân ảo

  • Xe tự lái

  • Chatbots

Tại sao Python cho Học sâu?

  • là một trong những công cụ như vậy có thuộc tính duy nhất, là ngôn ngữ lập trình mục đích chung như hiện tại dễ sử dụng khi nói đến tính toán phân tích và định lượng.
  • Nó rất dễ hiểu
  • Python là Nhập động
  • Khổng lồ
  • Một loạt các Thư viện cho các mục đích khác nhau như Numpy, Seaborn, Matplotlib, Pandas và Scikit-learning

Bây giờ đã đủ về lý thuyết, hãy xem cách chúng ta có thể bắt đầu Học sâu với Python bằng một ví dụ nhỏ nhưng thú vị.

Học sâu với Python: Ví dụ về Perceptron

Bây giờ tôi chắc rằng các bạn phải quen thuộc với hoạt động của “ HOẶC LÀ' cánh cổng. Đầu ra là một nếu bất kỳ đầu vào nào cũng một.

Do đó, một Perceptron có thể được sử dụng như một dấu phân tách hoặc một dòng quyết định chia tập hợp đầu vào của Cổng OR thành hai lớp:

Lớp 1: Các đầu vào có đầu ra là 0 nằm bên dưới dòng quyết định.
Lớp 2: Đầu vào có đầu ra là 1 nằm phía trên đường quyết định hoặc dấu phân cách.

Cho đến bây giờ, chúng ta đã hiểu rằng một perceptron tuyến tính có thể được sử dụng để phân loại tập dữ liệu đầu vào thành hai lớp. Nhưng, nó thực sự phân loại dữ liệu như thế nào?

Về mặt toán học, một perceptron có thể được coi như một phương trình Trọng lượng, Đầu vào và Độ chệch.

Bước 1: Nhập tất cả thư viện được yêu cầu

Ở đây, tôi sẽ chỉ nhập một thư viện, tức là. TensorFlow

nhập tensorflow dưới dạng tf

Bước 2: Xác định các biến vectơ cho đầu vào và đầu ra

Tiếp theo, chúng ta cần tạo các biến để lưu trữ đầu vào, đầu ra và độ lệch cho Perceptron.

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

Bước 3: Xác định biến trọng số

Ở đây chúng ta sẽ xác định biến tensor của hình dạng 3 × 1 cho các trọng số của chúng ta và gán một số giá trị ngẫu nhiên cho nó ban đầu.

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

Bước 4: Xác định trình giữ chỗ cho Đầu vào và Đầu ra

Chúng ta cần xác định các trình giữ chỗ để chúng có thể chấp nhận các đầu vào bên ngoài khi đang chạy.

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

Bước 5: Tính toán đầu ra và chức năng kích hoạt

Như đã thảo luận trước đó, đầu vào nhận được bởi một perceptron trước tiên được nhân với các trọng số tương ứng và sau đó, tất cả các đầu vào có trọng số này được cộng lại với nhau. Giá trị tổng này sau đó được đưa vào kích hoạt để thu được kết quả cuối cùng.

output = tf.nn.relu (tf.matmul (x, w))

Lưu ý: Trong trường hợp này, tôi đã sử dụng relu như chức năng kích hoạt của tôi. Bạn có thể tự do sử dụng bất kỳ chức năng kích hoạt nào theo nhu cầu của mình.

Bước 6: Tính toán chi phí hoặc lỗi

Chúng ta cần tính toán Cost = Mean Squared Error không là gì khác ngoài bình phương của sự khác biệt của sản lượng cảm nhận và sản lượng mong muốn.

Loss = tf.reduce_sum (tf.square (đầu ra - y))

Bước 7: Giảm thiểu lỗi

Mục tiêu của perceptron là giảm thiểu Mất mát hoặc Chi phí hoặc Lỗi. Vì vậy, ở đây chúng ta sẽ sử dụng Gradient Descent Optimizer.

tối ưu hóa = tf.train.GradientDescentOptimizer (0,01) train = Optimizer.minimize (mất mát)

Bước 8: Khởi tạo tất cả các biến

Các biến chỉ được xác định với tf. biến. Vì vậy, chúng ta cần khởi tạo các biến được định nghĩa.

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

Bước 9: Huấn luyện Perceptron trong nhiều lần lặp lại

Chúng ta cần đào tạo perceptron của mình, tức là cập nhật các giá trị của trọng số và độ lệch trong lần lặp liên tiếp để giảm thiểu lỗi hoặc mất mát. Ở đây, tôi sẽ huấn luyện perceptron của chúng ta trong 100 kỷ nguyên.

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,' - lỗ - ', giá)

Bước 10: Đầu ra

……

……

Như bạn có thể thấy ở đây, khoản lỗ bắt đầu từ 2,07 và kết thúc lúc 0,27

.

Học sâu với Python: Tạo mạng thần kinh sâu

Bây giờ chúng ta đã tạo thành công một perceptron và huấn luyện nó cho một cổng OR. Hãy tiếp tục bài viết này và xem cách có thể tạo Mạng thần kinh của riêng chúng ta từ Scratch, nơi chúng ta sẽ tạo Lớp đầu vào, Lớp ẩn và Lớp đầu ra.

Chúng tôi sẽ sử dụng tập dữ liệu MNIST. Tập dữ liệu MNIST bao gồm 60.000 đào tạo mẫu và 10.000 thử nghiệm mẫu hình ảnh chữ số viết tay. Những hình ảnh có kích thước 28 × 28 điểm ảnh và đầu ra có thể nằm giữa 0-9 .

Nhiệm vụ ở đây là đào tạo một mô hình có thể xác định chính xác chữ số có trên hình ảnh

Đầu tiên, chúng tôi sẽ sử dụng nhập bên dưới để đưa hàm in từ Python 3 sang Python 2.6+. Các câu lệnh __future__ cần phải ở gần đầu tệp vì chúng thay đổi những điều cơ bản về ngôn ngữ và do đó trình biên dịch cần biết về chúng ngay từ đầu

from __future__ import print_ Chức năng

Sau đây là đoạn mã có nhận xét ở mỗi bước

# Nhập dữ liệu MNIST từ tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets ('/ tmp / data /', one_hot = True) import tensorflow dưới dạng tf import matplotlib.pyplot as plt # Parameters learning_rate = 0,001 training_epochs = 15 batch_size = 100 display_step = 1 # Network Parameters n_hiised_1 = 256 # lớp thứ nhất số tính năng n_hiised_2 = 256 # lớp thứ hai số tính năng n_input = 784 # Đầu vào dữ liệu MNIST (img shape: 28 * 28) n_classes = 10 # tổng số lớp MNIST ( 0-9 chữ số) # tf Đầu vào đồ thị x = tf.placeholder ('float', [None, n_input]) y = tf.placeholder ('float', [None, n_classes]) # Tạo mô hình def multilayer_perceptron (x, weights , bias): # Lớp ẩn với lớp kích hoạt RELU_1 = tf.add (tf.matmul (x, weights ['h1']), bias ['b1']) layer_1 = tf.nn.relu (layer_1) # Lớp ẩn với RELU kích hoạt layer_2 = tf.add (tf.matmul (layer_1, weights ['h2']), bias ['b2']) layer_2 = tf.nn.relu (layer_2) # Lớp đầu ra với kích hoạt tuyến tính out_layer = tf. matmul (lớp _2, weights ['out']) + bias ['out'] return out_layer # Store layer weight & bias weights = {'h1': tf.Variable (tf.random_normal ([n_input, n_hiised_1])), 'h2' : tf.Variable (tf.random_normal ([n_hiised_1, n_hiised_2])), 'out': tf.Variable (tf.random_normal ([n_hiised_2, n_classes]))} biases = {'b1': tf.Variable (tf. random_normal ([n_hiised_1])), 'b2': tf.Variable (tf.random_normal ([n_hiised_2])), 'out': tf.Variable (tf.random_normal ([n_classes]))} # Mô hình xây dựng pred = multilayer_perceptron (x, weights, bias) # Xác định mất mát và chi phí trình tối ưu hóa = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = pred, label = y)) Optimizer = tf.train.AdamOptimizer (learning_rate = learning_rate) .minimize (chi phí) # Khởi tạo các biến init = tf.global_variables_initializer () # tạo danh sách trống để lưu trữ lịch sử chi phí và lịch sử độ chính xác cost_history = [] precision_history = [] # Khởi chạy biểu đồ với tf.Session () dưới dạng sess: sess.run (init ) # Chu kỳ đào tạo cho kỷ nguyên trong phạm vi (training_epochs): avg_cost = 0. total_batch = int (mnist.train.num_examples / batch_size) # Lặp lại tất cả các lô cho tôi trong phạm vi (total_batch): batch_x, batch_y = mnist.train.next_batch (batch_size) # Chạy op tối ưu hóa (backprop) và chi phí op (để nhận giá trị tổn thất) _, c = sess.run ([trình tối ưu hóa, chi phí], feed_dict = {x: batch_x, y: batch_y}) # Tính toán tổn thất trung bình avg_cost + = c / total_batch # Hiển thị nhật ký mỗi bước kỷ nguyên nếu epoch% display_step == 0: correct_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Tính toán độ chính xác = tf.reduce_mean (tf.cast (true_prediction, 'float') ) acu_temp = precision.eval ({x: mnist.test.images, y: mnist.test.labels}) # thêm độ chính xác vào danh sách precision_history.append (acu_temp) # append lịch sử chi phí cost_history.append (avg_cost) print ('Epoch:', '% 04d'% (epoch + 1), '- cost =', '{: .9f}'. Format (avg_cost), '- Accuracy =', acu_temp) print ('Đã hoàn tất tối ưu hóa! ') #plot the cost history plt.plot (cost_history) plt.show () #plot the precision history plt.plot (độ chính xác _history) plt.show () # Mô hình thử nghiệm đúng_prediction = tf.equal (tf.argmax (pred, 1), tf.argmax (y, 1)) # Tính toán độ chính xác = tf.reduce_mean (tf.cast (true_prediction, ' float ')) print (' Accuracy: ', precision.eval ({x: mnist.test.images, y: mnist.test.labels}))

Đầu ra:

Bây giờ với điều này, chúng ta đến phần cuối của bài viết Học sâu với Python. Tôi hy vọng bạn đã hiểu về các thành phần khác nhau của Học sâu, Tất cả bắt đầu như thế nào và Cách sử dụng Python để chúng ta có thể tạo một perceptron đơn giản và Mạng thần kinh sâu.

Edureka's được tuyển chọn bởi các chuyên gia trong ngành theo yêu cầu và nhu cầu của ngành. Bạn sẽ nắm vững các khái niệm như hàm SoftMax, Mạng thần kinh tự động mã hóa, Máy Boltzmann hạn chế (RBM) và làm việc với các thư viện như Keras & TFLearn. Khóa học đã được các chuyên gia trong ngành đặc biệt phụ trách với các nghiên cứu điển hình trong thời gian thực.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của “Học sâu với Python” và chúng tôi sẽ liên hệ lại với bạn.