6 ứng dụng Deep Learning Applications mà “tay mơ” cũng làm được trong vài phút với Python

Học sâu là một trong những chủ đề được nghiên cứu và nói đến nhiều nhất trong Khoa học Dữ liệu trong thời gian gần đây. Với những đột phá gần đây, học sâu được dự kiến sẽ có vai trò ảnh hưởng lớn đến cuộc sống của chúng ta trong tương lai gần. Thực tế, chúng ta đang chứng kiến những ảnh hưởng đó.
Tuy vậy, nếu nhìn từ bên ngoài, học sâu có vẻ là đầy thử thách và khó khăn. Những cụm từ như TensorFlow, Keras, GPU, vân vân và mây mây có thể cũng làm bạn sợ té khói. Nhưng để tôi nói bạn nghe, nó không khó đến vậy đâu. Mặc dù để theo kịp, bạn sẽ cần nhiều thời gian và nỗ lực, nhưng ứng dụng chúng vào giải quyết một số vấn đề lại khá dễ.
Bài viết này, tôi sẽ giới thiệu đến bạn 6 ứng dụng mà có thể trông thì khó nhưng lại dễ dàng thực hiện được bằng deep learning trong không tới 1 giờ đồng hồ.
Cùng bắt đầu!

1. Các ứng dụng sử dụng APIs có sẵn

APIs có thể hiểu đơn giản là một phần mềm nằm đâu đó trên internet trong một remote PC và có thể được truy cập từ local. Ví dụ, bạn cắm loa bluetooth và laptop dẫu máy tính của bạn có thể đã có sẵn loa ngoài. Từ đó, chúng ta có thể truy cập loa của bạn từ xa.
APIs hoạt động cũng theo cách tương tự – nôm na là ai đó đã làm phần việc khó giúp bạn rồi. Bạn có thể rút gọn thời gian xử lý vấn đề của mình. Để tìm hiểu thêm về API, tham khảo tại đây.
Dưới đây là một vài ưu và khuyết điểm của việc xây dựng ứng dụng dựa trên APIs.

1.1.1 Ưu điểm

  • Một ứng dụng deep learning thông đòi hỏi GPU rất mạnh cũng như data storage/processing. Với APIs, bạn có thể dựng một workstation cho chính mình hoặc sử dụng bất kỳ dịch vụ cloud nào, và sử dụng bất kỳ hệ thống local nào để tuy cập vào đó và chạy ứng dụng của mình
  • Hệ thống local cũng không chịu gánh nặng của việc computation 
  • Dễ dàng tích hợp

1.1.2 Khuyết điểm

  • Xây dựng một API không thực sự đạt hiệu quả về chi phí. API đòi hỏi nhiều cả về thời gian lẫn nguồn lực để phát triển, bảo trì
  • Bạn bị giới hạn bởi đường truyền mạng. Nếu “rớt mạng”, cả hệ thống có thể cũng “rớt” theo.
  • Ứng dụng của bạn sẽ dễ gặp vấn đề về bảo mật bởi ai cũng có thể dễ dàng truy cập. Bạn có thể đặt thêm các lớp bảo mật như ID và mật khẩu để truy cập vào dịch vụ và giới hạn thời gian truy cập.
Cùng bắt đầu với vài ứng dụng nào!

1.2 Làm màu cho ảnh bằng Deep Learning (Algorithmia API)

Automated Image Colorization (Chỉnh màu Tự động cho ảnh) đã luôn là một chủ đề được quan tâm trong cộng đồng computer vision. Nghe cũng khá là “siêu thực” khi “tô màu” cho ảnh trắng đen. Cứ tưởng tượng một đứa nhóc 4 tuổi cầm bút màu lên và say mê tô vẽ cuốn sách tô màu của mình. Liệu chúng ta có thể dạy cho trí tuệ nhân tạo làm điều tương tự?
Hẳn nhiên, đây là một vấn đề khó. Đó là lý do mà loài người vẫn được “huấn luyện” hàng ngày bằng cách quan sát các sự vật trong đời sống. Chúng ta có thể không để ý nhưng não bộ chúng ta vẫn luôn “sao chụp” lại từng khoảnh khắc trong cuộc sống và biến chúng thành những thông tin hữu ích, như là trời thì xanh, mây thì trắng, nắng thì vàng. Tuy nhiên đây là nhiệm vụ khó đối với máy móc.
Một nghiên cứu gầnd dây cho thấy nếu chúng ta huấn luyện một mạng neural (nơ-ron) với lượng dữ liệu được chuẩn bị riêng đủ lớn, chúng ta có thể có được mô hình với khả năng “ảo giác” (hallucinate) màu sắc trong một bức ảnh không màu. Đây là một ví dụ về việc tô màu cho ảnh:

Thể thực hiện nhiệm vụ này, chúng tôi sử dụng API phát triển bởi  Algorithmia.
Yêu cầu:
  • Python (2 hoặc 3)
  • Kết nối Internet (để gọi API endpoint)
  • 12 algorithmia credits (algorithmia cung cấp 5000 credits miễn phí khi đăng ký)
Bước 1: Đăng ký tại Algorithmia và nhận API key. Bạn có thể nhìn thấy API key của mình ở mục profile.

Bước 2: Cài đặt algorithmia bằng cách gõ:
pip install algorithmia
Bước 3: Chọn một bức ảnh mà bạn muốn làm màu, tải nó lên algorithmia.

Bước 4: Tạo một file local và đặt tên trial1.py . Mở file ra và gõ dòng code sau. Lưu ý bạn sẽ phải cung cấp vị trí của ảnh trong folder và API key.
import Algorithmia
 input = {
"image": "data:// … " # Set location of your own image
}
 client = Algorithmia.client(‘…’) #insert your own API key
 algo = client.algo('deeplearning/ColorfulImageColorization/1.1.5')
 print algo.pipe(input)
Bước 5: Mở command prompt và chạy code bằng cách gõ “python trial.py”.  Kết quả sẽ được tự động lưu vào folder của bạn. Và đây là cái mà tôi nhận được:
 Thế đấy – bạn vừa tạo ra một ứng dụng đơn giản, hoạt động như một đứa trẻ và có thể đổ màu cho ảnh. Hay ho chứ hả!

1.3 Xây dựng ChatBot (Watson API)

Waston là một ví dụ tuyệt vời để trình diễn sự thông minh của trí tuệ nhân tạo và những gì chúng có thể đạt được. Có thể bạn đã nghe câu chuyện Waston đánh bại con người trong trò chơi Q&A. Mặc dầu Waston sử dụng nhiều kỹ thuật, công nghệ để hoạt động, deep learning vẫn là cốt lõi cho quá trình học của nó, đặc biệt là xử lý ngôn ngữ tự nhiên (NLP). ở đây, chúng ta sẽ sử dụng một trong số các ứng dụng của Waston: chatbot. Chatbot là một agent có khả năng phản hồi lại khi có người đưa ra câu hỏi hoặc yêu cầu, và có thể ứng dụng tuyệt vời trong việc liên lạc với khách hàng và phản hồi trong thời gian đã định.
Bạn có thể xem demo tại đây:

Yêu cầu:
  • Python (2 hoặc 3)
  • Kết nối internet (để gọi API endpoint)
  • Tài khoản Bluemix (Bản dùng thử là 30 ngày)
Dưới đây là từng bước để dựng một chatbot đơn giản bằng Waston
Bước 1: Đăng ký Bluemix và kích hoạt các dịch vụ

Bước 2: Mở terminal và chạy command sau:
pip install requests responses
pip install --upgrade watson-developer-cloud
Bước 3: Tạo file trial.py và copy đoạn code sau vào đó. Nhớ điền credentials của bạn vào đó
import json
from watson_developer_cloud import ConversationV1

conversation = ConversationV1(
username='YOUR SERVICE USERNAME',
password='YOUR SERVICE PASSWORD',
version='2016-09-20')

# replace with your own workspace_id
workspace_id = 'YOUR WORKSPACE ID'

response = conversation.message(workspace_id=workspace_id, message_input={
'text': 'What\'s the weather like?'})
print(json.dumps(response, indent=2))
Bước 4: Lưu file và chạy nó bằng cách gõ vào console “python trial.py”. Bạn sẽ nhận được output trong console là phản hồi của Watson đối với input của bạn:
Input: Show me what’s nearby
Output: I understand you want me to locate an amenity. I can find restaurants, gas stations and restrooms nearby.
Tạm dịch:
Input: Quanh tôi có những gì
Output: Tôi hiểu rằng bạn muốn tôi định vị một địa điểm. Tôi có thể tìm nhà hàng, trạm xăng và nhà vệ sinh gần bạn
Nếu bạn muốn làm một dự án đầy đủ với bảng điều khiển xe như trong ảnh gif ở trên, xem tại GitHub.

1.4 Tổng hợp Tin tức dựa trên Tình thái (Aylien API)

Đôi khi, chúng ta chỉ muốn xem những tin tốt lành. Sẽ thật tuyệt vời nếu chúng ta có thể lọc hết những tin xấu và chỉ đọc những tin tốt!
Với công nghệ Xử lý Ngôn ngữ Tự nhiên tân tiến, điều này là hoàn toàn khả thi. Bạn có thể lọc ra các tin tức và chuyển đến cho người đọc.
Chúng ta sẽ xem và ứng dụng nó, sử dụng News API của Aylien. Dưới đây là ảnh chụp màn hình của demo. Bạn cũng có thể tự tạo ra query cho chính mình và tự kiểm tra kết quả.


Cùng xem cách thực hiện chúng với Python
Yêu cầu:
  • Python (2 hoặc 3)
  • Kết nối Internet (để truy cập API endpoint)
Bước 1: Đăng ký tài khoản tại Aylien website.
Bước 2: Nhận API_key và App_ID từ profile của bạn khi đăng nhập
Bước 3: Cài đặt Aylien News API bằng cách gõ vào terminal:
pip install aylien_news_api

Bước 4: Tạo file “trial.py” và copy đoạn code sau
import aylien_news_api
from aylien_news_api.rest import ApiException

# Configure API key authorization: app_id
aylien_news_api.configuration.api_key['X-AYLIEN-NewsAPI-Application-ID'] = ' 3f3660e6'
# Configure API key authorization: app_key
aylien_news_api.configuration.api_key['X-AYLIEN-NewsAPI-Application-Key'] = ' ecd21528850dc3e75a47f53960c839b0'

# create an instance of the API class
api_instance = aylien_news_api.DefaultApi()

opts = {
  'title': 'trump',
  'sort_by': 'social_shares_count.facebook',
  'language': ['en'],
  'published_at_start': 'NOW-7DAYS',
  'published_at_end': 'NOW',
  'entities_body_links_dbpedia': [
    'http://dbpedia.org/resource/Donald_Trump',
    'http://dbpedia.org/resource/Hillary_Rodham_Clinton'
  ]
}

try:
    # List stories
    api_response = api_instance.list_stories(**opts)
    print(api_response)
except ApiException as e:
    print("Exception when calling DefaultApi->list_stories: %s\n" % e)
Bước 5: Lưu file và chạy nó bằng cách gõ  “python trial.py”. Output sẽ là ở dạng  json dump như dưới đây:
{'clusters': [],
'next_page_cursor': 'AoJbuB0uU3RvcnkgMzQwNzE5NTc=',
'stories': [{'author': {'avatar_url': None, 'id': 56374, 'name': ''},
'body': 'President Donald Trump agreed to meet alliance leaders in Europe in May in a phone call on Sunday with NATO Secretary General Jens Stoltenberg that also touched on the separatist conflict in eastern Ukraine, the White House said.',
'categories': [{'confident': True,
'id': 'IAB20-13',
'level': 2,
'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB20-13',
'parent': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB20'},
'score': 0.3734071532595844,
'taxonomy': 'iab-qag'},
{'confident': False,
'id': 'IAB11-3',
'level': 2,
'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB11-3',
'parent': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB11'},
'score': 0.2898707860282879,
'taxonomy': 'iab-qag'},
{'confident': False,
'id': 'IAB10-5',
'level': 2,
'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB10-5',
'parent': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB10'},
'score': 0.24747867463774773,
'taxonomy': 'iab-qag'},
{'confident': False,
'id': 'IAB25-5',
'level': 2,
'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB25-5',
'parent': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB25'},
'score': 0.22760056625597547,
'taxonomy': 'iab-qag'},
{'confident': False,
'id': 'IAB20',
'level': 1,
'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB20',
'parent': None},
'score': 0.07238470020202414,
'taxonomy': 'iab-qag'},
{'confident': False,
'id': 'IAB10',
'level': 1,
'links': {'_self': 'https://api.aylien.com/api/v1/classify/taxonomy/iab-qag/IAB10',
'parent': None},
'score': 0.06574918306158796,
'taxonomy': 'iab-qag'},
{'confident': False,
'id': 'IAB25',
...
Giờ thì bạn đã có thể tự tạo ra một chatbot như kiểu Alexa để đọc những tin tức bạn muốn rồi! và chắc chắn, bạn cũng sẽ hứng thú hơn với việc tìm hiểu deep learning!

2. Các ứng dụng mã nguồn mở

Điều tuyệt vời nhất đang diễn ra trong cộng đồng nghiên cứu hiện tại chính là tư duy mã nguồn mở. Các nhà nghiên cứu đã sẵn sàng chia sẻ mọi điều mình đạt được với nhau để cùng phát triển nghiên cứu deep learning. Và nhờ đó, deep learning đã và đang phát triển mạnh mẽ, nhanh chóng. Ở đây, chúng ta sẽ dùng đến một số mã nguồn mở cũng như biến thể của chúng, vốn được tạo nên từ các bài báo cáo khoa học.

2.1.1 Lợi thế của các ứng dụng mã nguồn mở

  • Khi các ứng dụng sử dụng mã nguồn mở, bạn sẽ có thể xem từng và mọi chi tiết trong ứng dụng và dễ dàng tinh chỉnh chúng theo ý muốn
  • Nhiều developers từ nhiều tổ chức khác nhau, với nhiều kinh nghiệm đa dạng cùng cộng tác trong ứng dụng. Việc này sẽ giúp ứng dụng được phát triển và tốt hơn nguyên mẫu. Ngoài ra, càng nhiều người dùng ứng dụng, ta lại càng có nhiều cơ hội để test.

2.1.2 Bất lợi của các ứng dụng mã nguồn mở

  • Bạn sẽ có ít ‘quyền sở hữu’ hơn với sản phảm này bởi vì không thực sự có tổ chức nào ‘chống lưng’ cho nó. Do đó, nếu nó “vỡ” thì cũng không biết trách ai.
  • Hiển nhiên cũng sẽ có vấn đề về giấy phép và không nhiều công ty thích phát hành dự án mình dạng “mở”.
Lưu ý: Với các ứng dụng mã nguồn mở, tôi khuyến nghị bạn xem kỹ kho mã nguồn chính thức của họ. Bởi vì một số vẫn đang trong giai đoạn trứng nước và có thể sập chẳng vì lý do gì.
Giờ, hãy cùng xem qua các ứng dụng mở

2.2 Chữa lỗi câu với Deep Learning

Ngày nay, các hệ thống đã dễ dàng phát hiện và chỉnh lỗi chính tả, nhưng việc chỉnh sửa lội ngữ pháp lại khó hơn ít nhiều. Để cải thiện việc này, chúng ta có thể sử dụng deep learning để sửa những câu đó cho mình.
Đây là một mạng neural chuỗi dự đoán được huấn luyện trên một tập hợp các câu sai ngữ pháp cùng với câu đúng. Mô hình được huấn luyện cho thấy kết quả khả quan trong việc chữa lỗi câu. Dưới đây là ví du:
Input: ‘Kvothe went to market’
Output: ‘Kvothe went to the market’
Bạn có thể xem demo tại đây: http://atpaino.com/dtc.html
Mô hình hiện tại vẫn chưa thể chỉnh sửa chính xác 100%, nhưng càng được huấn luyện và càng có thuật toán deep learning hiệu quả, kết quả chắc chắn sẽ được cải thiện nhiều.
Yêu cầu:
  • Python (2 hoặc 3)
  • GPU (để training nhanh hơn)
Bước 1: Cài đặt TensorFlow. Ngoài ra, tải repository từ GitHub và lưu xuống local: https://github.com/atpaino/deep-text-corrector
Bước 2: Tải bộ dữ liệu (Cornell Movie-Dialogs Corpus) và extract vào thư mục làm việc của bạn
Bước 3: Tạo dữ liệu training bằng cách chạy câu lệnh:
python preprocessors/preprocess_movie_dialogs.py --raw_data movie_lines.txt \
               --out_file preprocessed_movie_lines.txt
Tạo files train, validation (xác thực) và test, lưu chúng vào thư mục hiện tại
Bước 4: Giờ, chúng ta sẽ huấn luyện mô hình deep learning model bằng:
python correct_text.py --train_path /movie_dialog_train.txt \
               --val_path /movie_dialog_val.txt \
               --config DefaultMovieDialogConfig \
               --data_reader_type MovieDialogReader \
               --model_path /movie_dialog_model
Bước 5: Sau khi train, bạn có thể test lại bằng:
python correct_text.py --test_path /movie_dialog_test.txt \
               --config DefaultMovieDialogConfig \
               --data_reader_type MovieDialogReader \
               --model_path /movie_dialog_model \
               --decode

2.3 Chuyển chân dung nam thành nữ và ngược lại với Deep Learning

Trước khi nói thêm điều gì, hãy xem qua kết quả dưới đây:

Bức ảnh đầu tiên đã được chuyển thành bức ảnh thứ hai nhờ mô hình deep learning. Đây cũng là một ứng dụng khá thú vị và buồn cười mà deep learning có thể làm được. Về cốt lõi, ứng dụng này sử dụng GAN (generative adversarial network) là một dạng deep learning để tự tạo ra ví dụ mới.
Yêu cầu:
  • Python (3.5+)
  • Tensorflow (r0.12+)
  • GPU (để training nhanh hơn)
Trước khi thực hiện, tôi muốn cảnh báo rằng, việc huấn luyện mô hình này sẽ tốn rất nhiều thời gian nếu bạn không dùng GPU. Thậm chí với  GPU hiện đại nhất (Nvidia GeForce GTX 1080), việc huấn luyện mỗi ảnh cũng đã mất 2 tiếng.
Bước 1: Download repository và extract nó ở  local https://github.com/david-gpu/deep-makeover
Bước 2: Tải  “Align&Cropped Images” từ CelebA dataset. Tạo thư mục bộ dữ liệu và đặt tên “dataset” rồi extrect hình ảnh vào đó
Bước 3: Huấn luyện mô hình bằng lệnh sau:
python3 dm_main.py --run train
Và test lại bằng cách cho vào hình ảnh bạn mong muốn
python3 dm_main.py --run inference image.jpg

2.4 Tạo một bot deep learning tăng cường để chơi Flappy Bird

Có thể bạn cũng từng chơi Flappy Bird hồi nó còn làm mưa làm gió. Trong trường hợp bạn không biết thì đó là trò chơi trên Android với mục tiêu đưa chim bay qua khe hẹp và tránh mọi vật cản.
Trong ứng dụng này, một bot Flappy Bird đã được tạo ra bằng cách sử dụng công nghệ học tăng cường tiên tiến. Và dưới đây là demo của nó:
Yêu cầu:
  • Python (2 hoặc 3)
  • Tensorflow (0.7+)
  • Pygame
  • Opencv-python
Bước 1: Tải official repository.
Bước 2: Hãy đảm bảo bạn đã cài đặt tất cả những thứ cần thiết. Sau đó, chạy lệnh sau:
python deep_q_network.py

3. Một số nguồn đáng lưu ý khác

Chúng ta vừa tìm hiểu đôi chút về những khả năng của các mô hình deep learning. Và vẫn còn rất nhiều báo cáo khoa học được phát hành hàng ngày, đồng nghĩa với việc sẽ có nhiều ứng dụng hơn. Giờ, vấn đề là ai nghĩ ra ý tưởng trước.
Tôi sẽ liệt kê dưới đây một số links và nguồn mà tôi cho là rất đáng giá

analyticsvidhya.com


Share on Google Plus

About Hà Tuấn Anh

0 nhận xét:

Đăng nhận xét