Khái niệm Deep learning

5 Th12

Deep Learning (DL) đang là một từ khóa được rất nhiều nhà nghiên cứu cũng như các hãng công nghệ trên thế giới đặc biệt quan tâm. Với các kết quả nổi bật so với các phương pháp trước đây, chẳng hạn như trong bài toán phân lớp ảnh trên tập dữ liệu Imagenet  kết quả cho thấy mức độ lỗi trong quá trình phân lớp đã giảm từ 28% năm 2010 xuống còn 4,82% năm 2015 nhờ áp dụng các kỹ thuật của DL. Kết quả này thực tế còn tốt hơn con người với độ lỗi là 5,1% (Hình 1 là kết quả cuộc thi năm 2015 ). Bên cạnh đó, DL đạt được nhiều kết quả ấn tượng trong các cuộc thi khác như nhận diện biển báo giao thông, phát hiện đối tượng … cũng như được áp dụng trong nhiều lĩnh vực khác nhau như: xử lý tiếng nói, xử lý ngôn ngữ tự nhiên. Trong phần này chúng ta sẽ thảo luận về khái niệm deep learning và tìm hiểu qua về ý tưởng thuật toán này.

deepvs

Hình 1: Thống kê kết quả cuộc thi phân lớp ảnh Imaganet đến năm 2015 

Hiện nay, khi đề cấp tới tới DL có một số khái niệm phổ biến sau:

  • DL là hướng nghiên cứu mới của lĩnh vực máy học, được phát triển với mục đích mang máy học tiến gần mới mục đích ban đầu của nó: xây dựng hệ trí tuệ nhân tạo. Deep Learning có thể biểu diễn thông tin của nhiều loại dữ liệu như hình ảnh, âm thanh, văn bản bằng cách học theo nhiều cấp độ – “Deep Learning is a new area of Machine Learning research, which has been introduced with the objective of moving Machine Learning closer to one of its original goals: Artificial Intelligence. Deep Learning is about learning multiple levels of representation and abstraction that help to make sense of data such as images, sound, and text ” (Yoshua Bengio’s IFT6266 course).
  • DL là một nhánh của nghiên cứu máy học dựa trên các thuật toán cho phép biểu diễn mỗi quan hệ phức tạp trong dữ liệu thông qua việc học theo nhiều cấp độ. Những đặc trưng ở cấp cao hơn được xây dựng từ khái niệm, đặc trưng ở cấp thấp hơn … – “A sub-field within machine learning that is based on algorithms for learning multiple levels of representation in order to model complex relationships among data. Higher-level features and concepts are thus defined in terms of lower-level ones, and such a hierarchy of features is called a deep architecture” [1]
  • DL chỉ các thuật toán máy học trong đó có kiến trúc xử lý theo nhiều lớp để giải quyết bài toán phân lớp và biểu diễn đặc trưng. Đây là nghiên cứu giao thoa giữa nhiều lĩnh vực khác nhau như neural network,graphical modeling, optimization, pattern. “Deep learning refers to a class of machine learning techniques, where many layers of information-processing stages in hierarchical architectures are exploited for pattern classiication and for feature or representation learning. It is in the intersections among the research areas of neural network, graphical modeling, optimization, pattern recognition, and signal processing” [2]
  • Hai yếu tố chính trong DL đó là: (1) mô hình bao gồm nhiều tầng hay xử lý dữ liệu phi tuyến với nhiều giai đoạn, (2) là phướng pháp học giám sát hoặc không giám sát để biểu diễn các đặc trưng cấp cao hơn, trừu tượng hơn “Deep learning are two key aspects: (1) models consisting of multiple layers or stages of nonlinear information processing; and (2) methods for supervised or unsupervised learning of feature representation at successively higher, more abstract layers” [1]

Như vậy: Một cách tổng quát DL là một khái niệm chỉ các thuật toán máy học dựa trên ANN để xây dựng mô hình hay phát hiện các quan hệ phức tạp trong dữ liệu bằng cách học theo nhiều tầng. Kết quả của tầng trước là dữ liệu đầu vào của tầng kế tiếp, mô hình được học ở các tầng sau tổng quát hóa hơn so với các tầng trước nó.

facedeep

Hình 2: Ý tưởng thuật toán DL trong bài toán Face Detection [3]

Ta có thể trình bày ý tưởng thuật toán DL thực hiện trong bài toán nhận diện đối tượng như sau: để xây dựng mô hình biểu diễn được đối tượng cần học (trong bài toán này là mô hình mặt người – hình \ref{Figfacedeep}) thì thuật toán thực hiện học theo nhiều cấp. Trong đó, thông đầu ra của cấp thấp hơn sẽ là dữ liệu đầu vào của cấp cao hơn. Cụ thể đầu vào bài toán này là các bức ảnh mặt người cho quá trình học, thuật toán sử dụng các pixels trên bức ảnh để làm dữ liệu học cho tầng thứ nhất với kết quả học được là “khái niệm” edges (góc cạnh) . Trong tầng tiếp theo bằng cách kết hợp các edges với nhau thuật toán sẽ học các “khái niệm” ở mức cao hơn như các phần của khuôn mặt (mắt, mũi…). Bằng cách kết hợp các “khái niệm” này thuật toán sẽ xây dựng được mô hình khuôn mặt dùng cho việc nhận dạng.

 

[1]  D. Yu and L. Deng, “Deep learning and its applications to signal and information processing [exploratory dsp],” IEEE Signal Processing Magazine, vol. 28, no. 1, pp. 145–154, 2011

[2] L. Deng, “A tutorial survey of architectures, algorithms, and applications for
deep learning,” APSIPA Transactions on Signal and Information Processing,
vol. 3, p. e2, 2014

[3]  Q. V. Le, R. Monga, M. Devin, K. Chen, G. S. Corrado, J. Dean, and A. Y.
Ng, “Building high-level features using large scale unsupervised learning,” in
In International Conference on Machine Learning, 2012

 

Neural networks

19 Th11

Mạng neural nhân tạo (Artificial Neural Network : ANN), gọi tắt neural network là mô hình xử lý thông tin mô phỏng hoạt động của các hệ neuron sinh học mà cụ thể hơn ở đây là bộ não con người. Trong đó, thành phần cơ bản của ANN là neural nhân tạo có cách thức hoạt động và xử lý tương tự neuron sinh học. ANN được hình thành từ số lượng lớn các neural được liên kết với nhau theo cấu trúc từng tầng (layer), các neural kết nối với nhau giữa các tầng thông qua trọng số liên kết (weight).

  1. Neural sinh học

Cách thức hoạt động của bộ não nói riêng và của hệ thần kinh nói chung đã được con người quân tâm nghiên cứu từ rất lâu nhưng cho đến nay các nhà khoa học vẫm chưa thực sự hiểu rõ chi tiết về hoạt động của bộ não và hệ thần kinh. Đặc biệt là trong các hoạt động liên quan đến trí óc như suy nghĩ, học tập, tư duy, trí nhớ, sáng tạo…Tuy nhiên, các nhà khoa học cũng có một số thông tin căn bản về bộ não con người. Theo đó, một bộ não con người trung bình cân nặng khoảng 1,5kg và có thể tích là 235 $cm^{3}$ , cấu tạo bộ não được chia ra làm nhiều vùng khác nhau, mỗi vùng kiểm soát một hay nhiều hoạt động của con người. Hoạt động của cả hệ thống thần kinh bao gồm não bộ và các giác quan như sau: đầu tiên con người nhận được kích thích bởi các giác quan từ bên ngoài hoặc trong cơ thể. Các kích thích này được biến thành các xung điện bởi chính các giác quan tiếp nhận kích thích. Những tín hiệu này được chuyển về trung ương thần kinh là bộ não để xử lý. Tại bộ não các thông tin sẽ được xử lý, đánh giá và so sánh với các thông tin đã được lưu trữ để đưa ra các quyết định dưới dạng các xung điện. Từ những quyết định từ bộ não sẽ sinh ra các mệnh lệnh cần thiết và gửi đến những bộ phận thi hành thích hợp như các cơ tay, chân, giác quan….

Hinh 1: Minh hoa bo lao con nguoi

Khi xem xét ở mức độ tế bào thì bộ não được hình thành từ 10^11 phần tử gọi là nơ-ron (hay neural sinh học)\footnote{}. Mỗi neural được liên kết chặt chẽ với $10^{4}$ neural khác. Các neural này có nhiều đặc điểm chung với các tế bào khác trong cơ thể, ngoài ra chúng có những khả năng mà các tế bào khác không có được đó là khả năng nhận, xử lý và truyền các tín hiệu điện hóa làm cơ sở hình cách thức xử lý thông tin của bộ não. Hình \ref{Figneoronsinhhoc} mô tả cấu tạo và cách thức hoạt động của neural sinh học, trong đó mỗi neural sinh học có 4 thành phần cơ bản:Thân neural (cell body) chứa nhân (nucleus) hay một số tài liệu gọi là soma có nhiệm vụ chính là tổng hợp và xử lý các tín hiệu điện nhận vào từ các đầu vào. Bản chất của quá trình này chính là việc lấy tổng tất cả các tín hiệu neural nhận được.

  • Các nhánh tín hiệu vào (denrites) đây chính là các mạng dạng cây của các dây thần kinh truyền tín hiệu vào đến thân neural.
  • Sợi trục ra (axon) có chức năng truyền tín hiệu từ thân tế bào này sang neural khác. Phần cuối của axon được chia thành nhiều nhánh nhỏ (cả của denrites và axon) kết thúc tại khớp nối (Synapse).
  • Khớp nối (Synapse) là điểm liên kết giữa sợi trục ra của neural này với các nhánh denrites của neural khác. Liên kết giữa các neural và độ nhạy của mỗi synapse được xác định bởi quá trình học phức tạp. Khi điện thế của synapses tăng lên do xung điện phát ra từ axon thì synapses sẽ tiết ra một loại hóa chất để kết nối mở ra cho các ion đi qua nó. Các ion này làm thay đổi tín hiệu điện thế trên các điểm tiếp xúc tạo ra các xung điện lan truyền tới các neural khác.
neoronsinhhoc

Hình 2: Minh họa cấu tạo neural sinh học

Một cách tổng quát neural sinh học hoạt động theo cách thức sau: neural nhận tín hiệu đầu vào từ các denrites sau đó xử lý các tín hiệu này tại nhân neural mà cụ thể hơn là lấy tổng tất cả các tín hiệu đầu vào mà nó nhận được sau đó phát ra một tín hiệu điện thế; nếu tổng tất cả các tín hiệu điện lớn hơn một ngưỡng cho phép nào đó thì xử lý và cho ra một tín hiệu đầu ra. Tín hiệu đầu ra này được truyền qua axon và chính là tín hiệu đầu vào của một neural khác.Dựa trên cấu trúc và cách thức hoạt động của neural sinh học, các nhà nghiên cứu đã đề xuất mô hình neural nhân tạo được trình bày chi tiết ở phần sau.

2. Neural nhân tạo

Một neural là một đơn vị xử lý thông tin và là thành phần cơ bản của một mạng ANN. Cấu trúc của một neural được mô tả trong hình 3

norolnhantao

Hình 3: neural nhân tạo

  • Các giá trị đầu vào x_1,x_2, … x_N. Trong quá trình thực nghiệm dữ liệu này thường được đưa vào dưới dạng một véc tơ N chiều.
  • Tập các liên kết: Có chức năng truyền thông tin trong đó ứng với một liên kết có một trọng số (hay trọng số liên kết là số thực biểu thị mức độ quan trọng của liên kết với đầu ra -weight) W_k1} W_k2 ,.. W_kN,. Thông thường, các trọng số này được khởi tạo một cách ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhật liên tục trong quá trình học mạng.
  • Hàm kết hợp a_k (combination function): Thường dùng để tính tổng của tích các giá trị đầu vào với trọng số liên kết tương ứng của nó (vì thế một số tài liệu là hàm tổng – summing function).
  • Hàm truyền  f_(.) (transfer function) hay hàm kích hoạt (active function)}: Hàm này được dùng để giới hạn phạm vi đầu ra của mỗi neural. Nó nhận đầu vào là kết quả của hàm kết hợp và ngưỡng đã cho. Thông thường, phạm vi đầu ra của mỗi nơron được giới hạn trong đoạn [0,1] hoặc [-1, 1]. Các hàm truyền rất đa dạng, có thể là các hàm tuyến tính hoặc phi tuyến. Việc lựa chọn hàm truyền nào là tuỳ thuộc vào từng bài toán và kinh nghiệm của người thiết kế mạng. Một số hàm truyền thường sử dụng trong các mô hình mạng nơron được đưa ra trong bảng sau
hamtruyenpig

Hình 4  Một số hàm truyền

  • . Trong đó các nghiên cứu trước đây thường sử dụng hàm sigmod, các nghiên cứu gần đây về DL thường sử dụng hàm ReLu ra đời thường hay được sử dụng.
  • Đầu ra y_k: Là tín hiệu đầu ra của một neural.

Như vậy, tương tự như neural sinh học, neural nhân tạo cũng nhận các tín hiệu đầu vào, xử lý ( nhân các tín hiệu này với trọng số liên kết, tính tổng các tích thu được rồi gửi kết quả tới hàm truyền), và cho một tín hiệu đầu ra ( là kết quả của hàm truyền).

3. Mạng neural nhân tạo (Artificial Neural Networks

Mạng neural nhân tạo là một mô hình tính toán gồm nhiều phần tử xử lý gọi là neural được liên kết với nhau và cùng hoạt động song song. Tính năng hoạt động của mạng phụ thuộc vào cấu trúc mạng, trọng số liên kết giữa các neural và quá trình xử lý bên trong neural. Nguyên lý cấu tạo của một mạng bao gồm một hoặc nhiều tầng (layer) hay lớp. Mỗi tầng bao gồm nhiều neural có cùng một chức năng trong mạng. Dựa vào số tầng hay sự liên kết giữa các lớp trong mạng mà người ta phân ANN thành các nhóm khác nhau.

3.1 Phân loại dựa theo số tầng

  • Mạng một tầng cấu thành từ một tầng neural, nó vừa là tầng vào vừa là tầng ra
1layer

Hình 5: Cấu trúc một tầng

  • Mạng nhiều tầng: tổng quát có n tầng (n > 2) : trong đó gồm tầng nhận tín hiệu đầu vào được gọi tầng đầu vào (input). Các tín hiệu đầu ra của mạng được sản sinh bởi tầng ra của mạng – tầng thứ n. Các tầng nằm giữa tầng vào và tầng ra được gọi là tầng ẩn – có (n-1) tầng ẩn (thông thường tầng đầu tiên chỉ có tác dụng chuyển tín hiệu vào tầng tiếp theo).
nhieutang

Hình 5: Cấu trúc nhiều tầng

3.2 Phân loại dựa theo cách thức liên kết

  • Mạng truyền thẳng} (feedforward neural networks):Dòng dữ liệu từ đơn vị đầu vào đến đơn vị đầu ra chỉ được truyền thẳng. Việc xử lý dữ liệu có thể trên nhiều lớp, nhưng không có những liên kết ngược. Cụ thể hơn là không có các liên kết từ các neural từ các lớp đầu vào và các neural ở các lớp đầu ra hay các neural trong cùng một lớp cũng không có liên kết với nhau (Hình 5 minh họa lớp truyền thẳng n lớp).
  • Mạng hồi quy (recurrent neural network):Khác với mạng truyền thẳng, mạng hồi quy chứa các liên kết ngược  có sự kết nối giữa neural đầu ra với neural đầu vào. Mạng lưu lại các trạng thái trước đó, và trạng thái tiếp theo không chỉ phụ thuộc vào các tín hiệu đầu vào mà còn phụ thuộc vào các trạng thái trước đó của mạng, hình 6 minh họa một mạng hồi quy.
    minhhoamanghoiquy

    Hình 6: Minh họa mạng hồi quy

     

    Tóm lại:  Hoạt động của ANN có thể mô tả một cách cụ thể như sau: tại tầng đầu vào các neural sẽ nhận tín hiệu và xử lý (tính tổng trọng số, gửi thông tin tới hàm truyền) rồi cho kết quả (là kết quả thông qua hàm kích hoạt). Kết quả này sẽ được truyền tới các neural thuộc tầng ẩn thứ nhất, các neural tại đây tiếp nhận như tín hiệu đầu vào xử lý và gửi kết quả đến tầng ẩn thứ 2 … quá trình này tiếp tục cho đến khi các neural thuộc tầng cuối cho ra kết quả.4. Huấn luyện ANN

Chức năng của một mạng ANN được quyết định bởi các nhân tố như sau: hình trạng hay cấu trúc của mạng (số tầng, số neural trong mỗi tầng và cách các tầng liên kết với nhau) và các trọng số của các liên kết bên trong mạng. Kiến trúc mạng thường là cố định tương ứng với mỗi bài toán và các trọng số liên kết được quyết định bởi một thuật toán huấn luyện (training algorithm). Tiến trình điều chỉnh các trọng số để mạng có thể nhận biết được mối quan hệ giữa đầu vào và đích mong muốn được gọi là học (learning) hay huấn luyện (training). Có nhiều thuật toán dùng để huấn luyện mạng ANN trong đó thuật toán lan truyền ngược (back-propagation) được sử dụng phổ biến.

Lan truyền ngược (back-propagation)là phương pháp huấn luyện mạng ANN với mục tiêu xác định trọng số tối ưu cho mạng thông qua việc lặp đi lặp lại 2 quá trình: lan truyền tiến (tính giá trị đầu ra của mạng từ đó tính sai số giữa giá trị này với giá trị mong muốn). Tiếp theo là quá trình lan truyền ngược sai số (dựa vào sai số sẽ cập nhật lại các trọng số).Mạng ANN có kiến trúc được tổ chức theo từng tầng bao gồm tầng nhập, tầng xuất và một số tầng ẩn. Trong mỗi tầng có nhiều neural. Các neural tầng này liên kết với neural tầng kia thông qua cung liên kết chứa trọng số liên kết. Quá trình huấn luyện mạng bắt đầu bằng việc khởi tạo giá trị trọng số của mạng một cách ngẫu nhiên.

lantruyennguoc

Hình 7: Huấn luyện mạng ANN sử dụng lan truyền ngược

Lan truyền tiến:

Dữ liệu từ tập huấn luyện thông qua tầng nhập sẽ được chuyển vào tầng tiếp theo. Tại mỗi neural của mỗi tầng sẽ tiến hành thực hiện việc tính toán thông qua các hàm kết hợp, giá trị này sau khi truyền qua hàm kích hoạt là đầu ra mỗi neural. Việc tính toán sẽ thực hiện trên tất cả các neural của mạng và từ tầng nhập cho ra tới giá trị của tầng xuất. Sai số được tính bằng cách so sánh giá trị thực xuất ra của mạng với giá trị mong muốn, trong đó sai số của quá trình huấn luyện thường được lấy bằng tổng bình phương tất cả sai số thành phần.

Lan truyền ngược sai số:

Dựa trên sai số được tính từ quá trình lan truyền tiến, mạng sẽ cập nhật lại các trọng số theo nguyên tắc lan truyền ngược sai số. Trong đó kỹ thuật cơ bản được áp dụng trong quá trình cập nhật trọng số đó là gradient descent.

Như vậy, để huấn luyện hay để một mạng học từ dữ liệu thì mạng thực hiện 2 bước lan truyền tiến và lan truyền ngược sai số. Quá trình này thực hiện cho tới khi sai số đạt được một ngưỡng nào đó hoặc thực hiện qua số bước lặp được người huấn luyện mạng đặt ra.

tiendv

Big Data

7 Th10

Tổng quan về Bigdata

1. Big Data

Có nhiều khái niệm khác nhau về Big Data[1] nhưng tổng quan lại trong công nghệ thông tin, thuật ngữ Big Data (dữ liệu lớn) chỉ những tập hợp dữ liệu phát triển nhanh chóng và rộng khắp dưới nhiều hình thức khác nhau, làm cho chúng vượt quá khả năng xử lý của những hệ thống cơ sở dữ liệu truyền thống.

Big Data chỉ những dữ liệu rất lớn và rất phức tạp mà những phương pháp truyền thống chưa xử lý tốt được.Dữ liệu mà Big Data lưu trữ có thể có cấu trúc, phi cấu trúc hoặc dữ liệu bán cấu trúc (80% dữ liệu trên thế giới ở dạng phi cấu trúc).Mảng dữ liệu có cấu trúc của Big Data là nói tới một số mảng cố định trong cơ sở dữ liệu.Ví dụ trong các gian hàng của lĩnh vực thương mại điện tử, thì dữ liệu có cấu trúc đó có thể là dữ liệu khách hàng – địa chỉ, mã bưu chính – được lưu giữ trong các giỏ hàng. Các dữ liệu không có cấu trúc bao gồm có email, videp, các đoạn tweet hay lượt Like trên Facebook. Không có một cơ sở dữ liệu không có cấu trúc nào lại nằm trong cơ sở dữ liệu cố định mà người bán có thể dễ dàng truy cập và tổng hợp.

2. Một số đặc điểm BigData

Hai tính chất luôn đi liền với nhau trong Big Data đó là “rất phức tạp”  và “kích thước lớn” của dữ liệu. Theo định nghĩa của IBM về Big Data  thì dữ liệu lớn có 3 đặc điểm chính đó là: Variety (đa dạng), velocity (tốc độ), volume (số lượng)

(1)  Variety: chỉ sự đa dạng, sự liên kết chằng chịt của dữ liệu với nhiều cấu trúc khác nhau, từ dữ liệu quan hệ, đến dữ liệu không cấu trúc như các văn bản thô

(2)  Velocity: chỉ tính chất chuyển động liện tục của dòng dữ liệu rất lớn cần xử lý, khác với cách truyền thống ta thu nhận và xử lý dữ liệu theo từng mảnh (bath).

(3)  Volume:  chỉ độ lớn của dữ liệu được sinh ra và lưu trữ ở mức terabye ( ) , petabytes ( ) và cả zetabytes( )

Ngoài những đặc điểm trên khi nói tới một tập dữ liệu lớn, theo định nghĩa của Oracle về Big Data thì đặc điểm thứ 4 là Value và nhấn mạnh rằng đây là đặc điểm quan trọng nhất trong dữ liệu lớn. Đặc điểm này nói đến giá trị thực về thông tin, kiến thức nhận được sau quá trình phân tích tập dữ liệu lớn.

3. Một só nguồn phát sinh Big Data

Để trả lời câu hỏi Big Data đến từ đâu, trong phần này tập trung vào phân tích một số nguồn mà từ đó dữ liệu sinh ra “ngày một tăng” từ đó đưa ta đến khái niệm Big Data

Mỗi ngày, chúng ta tạo ra 2,5 quintillion (1030) bytes dữ liệu. Khối lượng dữ liệu mới được tạo ra nhiều và nhanh đến mức mà hai năm gần đây nhất chiếm đến 90% khối lượng dữ liệu trên thế giới hiện nay. Những dữ liệu lớn này được tạo ra từ nhiều nguồn khác nhau, sau đây là một số nguồn phát sinh điển hình:

(1)  Dữ liệu được tạo ra từ Social media: Tức là dữ liệu được tạo ra từ một mạng xã hội. Không đơn thuần là mạng xã hội như facebook, tweeter…mà nó còn bao gồm cả thông tin trong một công ty như mạng lưới nhân viên, khách hàng ….  Một ví dụ minh họa cho nguồn dữ liệu này như tweeter mỗi ngày có 230 triệu tweets, hay 2,7 triệu comment trên Facebook , đối với trang Youtube có 86400 giờ video được tải lên.

(2)  Dữ liệu được tạo ra từ Machine Data:  thông tin này được tính bao gồm thông tin trong quá trình vận hành các máy công nghiệp như dữ liệu sinh ra từ các cảm biến, thông tin weblog ……..

(3)   Dữ liệu được tạo ra từ các Transations:  bao gồm các thông tin về các giao dịch phát sinh từ khách hàng hay trong các nhà cung cấp và phân phối (sản phẩm, giá sản phẩm, phương thức thanh toán …). Ví dụ điển hình của nguồn dữ liệu này như là dữ liệu của Amazon (ví dụ quý 3 năm 2011 số giao dịch trong hệ thống đã lên tới 10 tỉ $) …..

Ngoài ra còn rất nhiều nguồn dữ liệu khác cũng phát sinh với số lượng lớn và có độ phức tạp cao, cần được tìm hiểu, nghiên cứu.Trong đó các kiểu dữ liệu về đa phương tiện (video, audio, photo) đang chiếm tỉ lệ lớn

4. Một số “công việc trên Big Data”

(1)Tổng hợp và thống kê.
(2)Indexing, Searching, Querying
(3)Knowledge discovery
5. Một số giải phápcho  Big Data
…..

Một số link tham khảo để tổng hợp những thông tin trên:

[1] http://ledduy.blogspot.com/2012/12/ban-ve-big-data.html

[2] http://bigdatauniversity.com/

[ 3] https://www.facebook.com/developerworks.ibmvn

[ 4] http://bigdatastudio.com/

[5] http://tiasang.com.vn/Default.aspx?tabid=111&CategoryID=2&News=5916

[6] http://chungta.vn/tin-tuc/cong-nghe/2013/03/big-data-se-la-cuc-phat-trien-moi-cua-ibm/

[7] http://www.ibm.com/developerworks/vn/library/data/2013Q1/dm-1209hadoopbigdata/

[8] http://vienvong.vn/view/a516a631663c9724b06c7492bccf4f5a1377279607_bon-cau-hoi-cua-cac-cio-ve-big-data-va-hadoop

http://vcamp.vn/article/1372/nhung-cach-su-dung-big-data-hieu-qua-nhat.html

JVM – JDK – JRE

13 Th8

1000014_1406055719616143_458956701_n

  1. JVM (Java Virtual Machine) là máy ảo cung cấp môi trường thực thi mã java (java bytecode), JVM được cài đặt trên nhiều nền tảng khác nhau, JVM làm 4 nhiệm vụ:
  • Load code (tải mã lệnh).
  • Verifies code (xác thực mã lệnh).
  • Executes code (thực thi mã lệnh).
  • Provides runtime enviroment  (cung cấp môi trường thực thi).

java-program-execution

Kiến trúc JVM

jvm_architecture3

JVM bao gồm các thành phần chính:

  • Class Loader: là một hệ thống con của JVM, làm nhiệm vụ tải các lớp được định nghĩa.
  • Class Area: lưu trữ cấu trúc của các lớp, thuộc tính, phương thức của lớp, và code của các phương thức
  • Heap & Stack:
    • Heap: là vùng nhớ lưu trử các đối tượng được khởi tạo trong quá trình thực thi.
    • Stack: chứa các frame. Mỗi frame chứa các biến cục bộ và thực thi một hàm gọi và trả kết quả về. Mỗi tiến trình có một Stack riêng, được khởi tạo cùng lúc với tiến trình. Mỗi frame sẽ được tạo khi một hàm được gọi và hủy khi việc gọi hàm kết thúc
  • Programming Counter Register: chứa địa chỉ của máy chủ ảo đang thực thi.
  • Native Method Stack: chứa các hàm của hệ thống được sử dụng trong chương trình
  • Execution Engine: là một hệ thống bao gồm: bộ xử lý ảo, trình thông dịch (đọc Java byte code và thực thi các chỉ thị), JIT compiler biên dịch mã byte code sang mã máy.

2.JRE (Java Run-time Environment) cung cấp một tập các thư viện và tập tin mà máy ảo Java sử dụng để có thể chạy trên một nền tảng cụ thể, hay JRE cung cấp môi trường thực thi cho máy ảo Java.

jre23.JDK (Java Development Kit) cung cấp bộ công cụ phát triển các ứng dụng trên nền Java được thực thi bởi JVM.

Về cơ bản JDK = Development Kit + JVM+JRE.

jdk2

Tham khảo:

https://www.youtube.com/watch?v=aa7Y07Wv1-M&feature=c4-overview-vl&list=PL734343B984E2C90C

JDBC

5 Th1

JDBC (Java DataBase Connectivity) là API  giúp thực hiện việc kết nối với các hệ quản trị cơ sở dữ liệu.

–         Để kết nối vào cơ sở dữ liệu cần phải cài đặt JDBC driver.

–         Mỗi hệ quản trị cơ sở dữ liệu có một driver riêng (xem chi tiết tại http://developers.sun.com/product/jdbc/drivers )

Các bước kết nối:

–         Ứng với các hệ quản trị cơ sở dữ liệu thì load các driver tương ứng.

–         Tạo chuỗi kết nối tương ứng tới cơ sở dữ liệu cần thực hiện.

–         Tạo câu truy vấn và thực thi câu truy vấn.

–         Ngắt kết nối.

Thực thi các câu lệnh SQL:

–         Sử dụng các class Statement thực thi các câu lệnh SQL trên cơ sở dữ liệu vừa tạo.

Sau khi tạo statement thì sử dụng các phương thức để thực thi các câu lệnh sql tương ứng.

+  Phương thức execute(String query) sử dụng để thực thi bất kì câu lệnh SQL nào.

+ Phương thức executeUpdate() để cập nhật dữ liệu qua JDBC, phương thức này trả về số dòng bị ảnh hưởng sau khi câu lệnh thực thi.

+ Phương thức executeQuery() dùng để đọc dữ liệu từ csdl. Dữ liệu được đọc sẽ được lưu lại trong một resultset.

Resultset

Một số phương thức trong resultset:

–         Next() di chuyển đến dòng kết tiếp, trả về true nếu có dòng kế tiếp, false nếu đến cuối resultset.

–         Previous() di chuyển đến dòng trước đó.

–         First() di chuyển đến dòng đầu tiên.

–         Last()  di chuyển đến dòng cuối cùng.

–         Beforefirst() trước dòng đầu tiên.

–         Afterlast() sau dòng cuối cùng.

–         Absolute (int row) di chuyển đến dòng thứ row.

–         getXXX(string columname) lấy dữ liệu từ resultset.

+ XXX là kiểu trả về.

+columname tên của cột cần lấy dữ liệu.

–         updateXXX(string columname, value) cập nhật dữ liệu trong resultset

+ XXX  kiểu giá trị.

+columname tên của cột cần update dữ liệu.

+ value: giá trị cần cập nhật.

Sau đó thực gọi phương thức updaterow() dữ liệu sẽ được cập nhật.

–         Transaction : là một giao dịch được khai báo bắt đầu bằng phương thức SetAutocommit (true) điều này chỉ ra một tập câu lệnh sql chỉ được thực thi khi resultset  gọi phương thức commit.  Transaction bị hủy khi conectionstring gọi phương thức rollback

 

Hướng dẫn kết nối đối với các hệ quản trị cơ sở dữ liệu khác nhau:

Chi tiết xem tại đây:

 

tiendv

JAVABEAN

5 Th1

JavaBean nói một cách đơn giản chỉ là một class thông thường trong đó  các thuộc tính được lưu trữ và truy xuất bằng các phương thức getter và setter.

JSP truy cập Java Bean qua các tag action và nhận kết quả trả về mà không cần biết cấu trúc của Java Bean và cách thức xử lý của nó.

–         Một vài quy tắc chung khi xây dựng lớp java bean:

  • Tên lớp của Bean nên có tiếp vĩ ngữ là Bean chẳng hạn UserBean, DataAccessBean, …
  • Có một hàm khởi tạo không tham số.
  • Có các hàm getter và setter cho việc truy cập thuộc tính.

Cách sử dụng Bean trong JSP.

  • Khai báo
    • < jsp:useBean id =“<định danh>” class =“<tên class>” [scope = “loại scope”]/>
    • id: tương tự khai báo biến, đại diện cho đối tượng truy xuất đến Bean
    • class: tên class được sử dụng
    • scope: khả năng chia xẻ hay tầm hoạt động của Bean. Mặc định là request

–         Các giá trị của thuộc tính scope

+ Page

Bean với giá trị này sẽ có sẵn từ javax.servlet.jsp.PageContext trong trang hiện hành.Bean sẽ được loại bỏ khi một response gởi trở về client hoặc request được chuyển tới một trang mới.

+ Request

Bean có giá trị này thì có sẵn từ đối tượng ServletRequest củatrang hiện hành và bất kỳ trang được include hay forward nào bằng cách sử dụng phương thức  getAttribute(name). Bean sẽ bị huỷ bỏ khi một response gởi trở về client.

+ Session

Bean được sử dụng trong bất kỳ trang nào có tham gia vàomột session của client. Có phạm vi trong cả một session củaclient. Bean này được lưu trữ trong đối tượng  HttpSession.

+ Application

Bean được sử dụng trong bất kỳ trang nào trong ứng dụng hiện hành (cả request hiện tại và tương lai).

  • Cơ chế thực hiện: JSP Engine/ Container thực hiện
    • Tìm kiếm class tương ứng được khai báo trong class.
    • Khởi tạo instance thông qua constructor.
    • Gán định danh id cho instance để có thể truy xuất trên trang JSP
    • Xác định phạm vi hoạt động của instance này.

 

  • Cách khai báo biến dùng scriptlet tương đương Java Bean:
    • <% <tên class> <định danh> = new <tên class>(); %>

Ví dụ:

    • <jsp:useBean id=“book1” class=“store.book”/> tương đương

tương đương  <% store.book book1 = new store.book(); %>

 

Cách truy cập thuộc tính bean.

  • <jsp:getProperty name =“<định danh>” property =“<tên thuộc tính>” />
    • name: tên id đã được xác định trong jsp:useBean
    • property: tên thuộc tính tương ứng khai báo trong Java Bean
  • Cách khai báo biến dùng scriptlet tương đương Java Bean
    • <%= <định danh>.phương thức get() %>

Ví dụ:

    • <jsp:getProperty name=“book1” property=“title”/>

tương đương <%= book1.getTitle()%>

Cách thiệt lập thuộc tính của bean.

  • <jsp:setProperty name =“<định danh>” property =“<tên thuộc tính>” value=“< giá trị>” />
  • name: tên id đã được xác định trong jsp:useBean
  • property: tên thuộc tính tương ứng khai báo trong Java Bean
  • value: giá trị (JSP expression, hằng số) được gán cho thuộc tính
  • Các khai báo tương đương trong scriptlet:
    • <% <định danh>.phương thức set(<giá trị>) %>
  • Ví dụ:
    • <jsp:setProperty name=“book1” property=“title” value=“JSP Book” />

tương đương  <% book1.setTitle(“JSP Book”)%>

 

Sưu tầm và edit : tiendv

JSP syntax.

11 Th10

Một số JSP syntax hay sử dụng

–         Khai báo code java trong nội dung HTML

<% codejava%>

–         Khai báo biến & phương thức: <%!    %>

<%! int count = 0; %>

<%! String des = “Increase count var” ; %>

–         Kết xuất giá trị đối tượng: <%=    %>

<%= ++count %>

–         Khai báo thư viện:  <%@ page       %>

<%@ page import = “java.sql.*, java.util.*” %>

–         Nhúng file:

 <%@ include file=“filename” %>

–         Chuyển hướng các giữa các trang jsp

<jsp:forward page=”./loginOK.jsp”></jsp:forward>

–         Tạo các lớp đối tượng java

<jsp:useBean  id = “test” class=“SimpleBean” />

<%!public class SimpleBean {

private String msg = “No Message”;

public String getMessage(String msg) {

          return (msg);

}

public void setMessage(String msg) {

          this.msg = msg;

}

}

%>

Gọi một phương thức nào đó của Bean:

<jsp:useBean id=”test” class=”MyBeans.SimpleBean”/>

<jsp:setProperty name = “test” property = “msg”

value = “hello class” />

 

Tiendv

Hướng dẫn cài đặt và cấu hình lập trình J2EE trên Eclipse và Netbeans

11 Th10

1.     Hướng dẫn cài đặt JEE với Eclipse và Tomcat Server.

1.1.         Các phần mềm yêu cầu:

–         JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.htm

–         Eclipse : http://www.eclipse.org/downloads/

–         Apache Tomcat: http://tomcat.apache.org/

1.2.         Tiến hành cài đặt:

–         Sau khi cài đặt JDK  chúng ta khai báo một số biến môi trường như sau:

Hình 1: Khai báo biến môi trường

Hình 1: Khai báo biến môi trường

Hình 2 : Thêm biến môi trường

Hình 2 : Thêm biến môi trường

Hình 3: Khai báo biến môi trường JDK.

Hình 3: Khai báo biến môi trường JDK.

JAVA_HOME :  C:\Program Files\Java\jdk1.6.0_26  đường dẫn tới  thư mục JDK vừa cài đặt ở bước trước.

PATH :   C:\Program Files\Java\jdk1.6.0_26\bin

CLASSPATH:   C:\Program Files\Java\jdk1.6.0_26

–         Đối với  Tomcat sau khi download gói zip từ website của apache về ta giải nén trên một thư mục trên máy tính. Ta khai báo một số biến môi trường sau:

Hình 4: Khai báo biến môi trường cho Tomcat

Hình 4: Khai báo biến môi trường cho Tomcat

Hình 5: Khai báo biến môi trường cho Tomcat

Hình 5: Khai báo biến môi trường cho Tomcat

CATALINA_HOME và CATALIA_BASE: tới thư mục chứa file server tomcat vừa giải nén.

–         Thêm server vào eclipse:

Hình 6: Thêm server Tomcat vào Eclipse.

Hình 6: Thêm server Tomcat vào Eclipse.

Hình 7: Thêm server Tomcat vào Eclipse

Hình 7: Thêm server Tomcat vào Eclipse

Hình 8: Thêm server Tomcat vào Eclipse

Hình 8: Thêm server Tomcat vào Eclipse

Hình 9: khởi động server Tomcat trên Eclipse

Hình 9: khởi động server Tomcat trên Eclipse

Hình 10: Server Tomcat khi khởi động thành công

Hình 10: Server Tomcat khi khởi động thành công

1.     Hướng dẫn cài đặt JEE với Netbean và Glassfish server.

1.1.         Các phần mềm yêu cầu:

–         JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.htm

–         Netbean: http://netbeans.org/

–         Glassfish server: http://glassfish.java.net/public/downloadsindex.html#top

1.2.         Tiến hành các bước cài đặt JDK và khai báo biến môi trường như được hướng dẫn ở phần 1.

–         Đối với Netbean, trong gói cài đặt đã đi kèm Server Glassfish như hình bên dưới.

Hình 11: Glassfish đi kèm khi cài đặt Netbean

Hình 11: Glassfish đi kèm khi cài đặt Netbean

–         Trong trường hợp không có server Glassfish đi cùng, ta có thể thêm server bằng cách download từ Website sau đó thực hiện theo hướng dẫn trong hình.

Hình 12: Thêm Server mới.

Hình 12: Thêm Server mới.Hình 13: Chọn server để thêm vào

Hình 14: Chọn thư mục khi download server về.

Hình 14: Chọn thư mục khi download server về.

Hình 15: Start server trên Netbean

Hình 15: Start server trên Netbean

Hình 16: Màn hình khi Server start thành công.

Hình 16: Màn hình khi Server start thành công.

Author: tiendv