컴퓨팅에서 자료구조와 알고리즘은 계산적인 절차이며, 자료구조는 프로그래밍 언어에서 데이터 구조(struct)로 표현되고 알고리즘은 이러한 데이터 구조에 접근하는 순서 및 회수에 해당한다. 자료구조와 알고리즘은 상호 의존적이다. 자료구조를 잘 설계하면 알고리즘 효율이 좋아진다. 알고리즘은 컴퓨터 하드웨어가 시작되기 전부터 연구되어 왔다. 그러나 현대에 이르러 컴퓨터 하드웨어 성능이 비약적으로 발전하고 많은 데이터들이 축적됨으로 인해서 알고리즘 연구가 새로운 전환기를 맞이하고 있다. 그동안 컴퓨팅 역사에서 해결하지 못하고 있었던 문제들을 머신러닝/딥러닝에서 하나씩 해결하기 시작하면서 이것에 적용된 알고리즘 학습이 중요해 졌다. 머신러닝/딥러닝은 인간의 뇌세포가 학습해 나가는 방식과 유사하게 동작한다. 이것의 원리는 매우 단순하므로 쉽고 재미있게 머신러닝/딥러닝을 학습할 수 있다. 이 책은 머신러닝을 이론적으로만 설명하는 것이 아니라 기본부터 심화 학습까지 직접 파이썬에서 TensorFlow로 직접 따라하면서 익힐 수 있도록 구성했다. 이 책은 1부와 2부로 나누어져 있는데, 머신러닝/딥러닝부터 공부하고자하는 독자분들은 2부부터 학습해도 된다. 2부에서 학습한 머신러닝 알고리즘을 직접 C언어로 구현해 보고 싶다면, 1부의 내용을 학습하면 좋을 듯 하다. 이책에 있는 모든 예제 소스들은 Github에 공개했다.
[내용 요약] 이책은 1부와 2부로 구성되어 있다. 1부는 전통적인 자료구조와 알고리즘에 대해서 C언어로 실습할 수 있도록 구성했고, 2부에서 머신러닝/딥러닝을 파이썬과 TensorFlow로 실습하면서 학습할 수 있도록 구성했다. 머신러닝/딥러닝부터 공부하고자 하는 독자분들은 1부 내용은 간략히 참조만하고 바로 2부의 내용을 학습해도 된다. 머신러닝은 가설함수(학습모델)와 비용함수를 사용하여 비용이 최소화 되는 방향으로 반복연산하면서 가중치(Weight)값을 찾아가는 알고리즘으로 구성되어 있다. 대부분 행렬(Matrix)연산을 하므로 전통적인 자료구조 알고리즘보다 쉽게 구현할 수 있다. 또한 딥러닝에서 과거에 해결하지 못했던 난제들을 어떻게 해결했는지 자세히 실습할 수 있도록 책의 내용을 구성했다. 2부의 머신러닝/딥러닝 알고리즘을 학습한후 C언어로 알고리즘을 직접 구현해보고자 한다면 1부의 내용이 많은 도움이 될듯하다. 이책에 있는 예제 소스들은 모두 Github에 공개했으니 책의 내용을 참조해 주기 바란다.