‘Deep Learning with Python’ 세미나 2

1부에서는 딥러닝에 대한 근본적인 개념들을 다룹니다. 1장에서는 딥러닝이 뭐야?라는 질문에 답합니다.

What is deep learning?

1.1 Artificial intelligence, machine learning, and deep learning

1.1.1 Artificial intelligence
1.1.2 Machine learning

그림 1.1은 인공 지능과 머신 러닝과 딥러닝 사이의 관계를 잘 표현해 주고 있습니다. 인공 지능의 한 분야가 머신 러닝이고, 머신 러닝의 한 분야가 딥러닝입니다. 

그림 1.2는 전통적인 프로그래밍 방식과 머신 러닝의 방식을 잘 비교해주고 있습니다. 머신 러닝이 아닌 다른 인공 지능 분야는 전통적인 프로그램 방식을 따릅니다. 전통적인 프로그래밍 방식에서는 사람이 프로그램을 작성합니다. 머신 러닝에서는 머신이 프로그램을 작성합니다. 사람은 프로그래밍 언어로 프로그램을 작성합니다. 머신은 신경망과 같은 것으로 프로그램을 작성합니다.

처음 프로그래머들이 딥러닝을 접하게 되었을 때 가장 혼란 스러워 하는 것 중 하나는 ‘머신이 작성한 프로그램을 어떻게 읽는가’ 입니다. 머신이 작성한 신경망은 답은 잘 맞추는데 아무리 들여다봐도 어떻게 문제를 해결하고 있는지를 알 수가 없거든요. if나 for와 같은 제어 구조에 익숙한 프로그래머들은 신경망에서 이것들에 대응되는 것을 찾아보려고 하지만 좌절만 안겨줍니다. 새로운 프로그래밍 방식을 받아들일 수 있는 사고 전환이 필요합니다. 사실 이것은 딥러닝의 문제이기도 합니다. 딥러닝은 ‘어떻게’를 설명해주지 않기 때문에 ‘과연 그 방법이 정당한가’에 대한 물음에 답할 수 없습니다. 설명가능한 딥러닝 분야가 등장한 것도 이러한 문제를 해결하기 위한 것입니다.

A machine-learning system is trained rather than explicitly programmed.

테스트주도개발에서와 같이  프로그램을 작성하는 과정을 시행착오를 통한 학습이라고 생각한다면, 이와 같은 머신의 프로그램 작성 방식은 낯선 것이 아닙니다. 사람은 계산 가능한 방법이 없다면(알고리즘이 없다면) 시행착오를 통한 학습을 아무리 한다고 해도 프로그램 작성을 완료할 수 없습니다. 머신은 어떤 방법인지를 이야기해주지 않지만 가능한 해답에 가까운 답을 찾는 방법으로 프로그램 작성을 완료할 수 있습니다. 프로그래머는 연역적으로 프로그래밍을 하고, 머신은 귀납적으로 프로그래밍 한다라고도 말할 수 있습니다.

1.1.3 Learning representations from data

머신의 프로그래밍 방식에 대해 한 차원 높은 수준으로 이해하고 공감할 수 있게 해 줍니다. 아래의 두 문단의 내용이 머리와 가슴으로 와 닿을 때 까지 반복해서 읽고 생각하시길 권합니다.

To do machine learning, we need three things:

  • Input data points—For instance, if the task is speech recognition, these data points could be sound files of people speaking. If the task is image tagging, they could be pictures.
  • Examples of the expected output—In a speech-recognition task, these could be human-generated transcripts of sound files. In an image task, expected outputs could be tags such as “dog,” “cat,” and so on.
  • A way to measure whether the algorithm is doing a good job—This is necessary in order to determine the distance between the algorithm’s current output and its expected output. The measurement is used as a feedback signal to adjust the way the algorithm works. This adjustment step is what we call learning.

A machine-learning model transforms its input data into meaningful outputs, a process that is “learned” from exposure to known examples of inputs and outputs. Therefore, the central problem in machine learning and deep learning is to meaningfully transform data: in other words, to learn useful representations of the input data at hand—representations that get us closer to the expected output. Before we go any further: what’s a representation? At its core, it’s a different way to look at data—to represent or encode data. For instance, a color image can be encoded in the RGB format (red-green-blue) or in the HSV format (hue-saturation-value): these are two different representations of the same data. Some tasks that may be difficult with one representation can become easy with another. For example, the task “select all red pixels in the image” is simpler in the RG format, whereas “make the image less saturated” is simpler in the HSV format. Machine-learning models are all about finding appropriate representations for their input data—transformations of the data that make it more amenable to the task at hand, such as a classification task.

Learning, in the context of machine learning, describes an automatic search process for better representations.

Machine-learning algorithms aren’t usually creative in finding these transformations; they’re merely searching through a predefined set of operations, called a hypothesis space. So that’s what machine learning is, technically: searching for useful representations of some input data, within a predefined space of possibilities, using guidance from a feedback signal.

1.1.4 The “deep” in deep learning

아래 문장이 머리와 가슴으로 이해될 때까지 반복해서 읽기를 권합니다.

Deep learning is a specific subfield of machine learning: a new take on learning representations from data that puts an emphasis on learning successive layers of increasingly meaningful representations.

In deep learning, these layered representations are (almost always) learned via models called neural networks, structured in literal layers stacked on top of each other.

그림 1.5를 보면 입력 표현과 출력 표현이 있습니다. 딥러닝은 입력 표현을 출력 표현으로 단 번에 변환하지 않고, 레이어들을 쌓아서 점진적으로 변환하는 것입니다. 그림 1.6을 보면 출력에 가까워질 수록 레이어의 표현이 출력 표현과 가까워짐을 볼 수 있습니다. 여기서 오해하지 말아야 할 것은 레이어에서 실제로 이렇게 표현되는 이미지를 볼 수 있다는 것은 아닙니다. 이해를 돕기 위한 것일 뿐입니다.

You can think of a deep network as a multistage information-distillation operation, where information goes through successive filters
and comes out increasingly purified (that is, useful with regard to some task).

딥러닝은 연속된 필터를 통과하면서 순도 높게(즉 어떤 작업에 대해서 유용하게) 정제되는 다단계 정보 추출 작업으로 생각할 수도 있습니다.

So that’s what deep learning is, technically: a multistage way to learn data representations. It’s a simple idea—but, as it turns out, very simple mechanisms, sufficiently scaled, can end up looking like magic.

딥러닝은 단순한 메커니즘에도 불구하고 규모를 충분히 키우면 마술과 같은 일을 해 냅니다.

프로그래머의 관점에서 본다면, 레이어 표현을 프로그램 읽듯이 읽어낼 수 없다면 딥러닝은 정말 마술로 남을 수 밖에 없습니다.

1.1.5 Understanding how deep learning works, in three figures

제목처럼 정말 그림 세 개로 딥러닝이 어떻게 동작하는지를 알 수 있습니다.

The specification of what a layer does to its input data is stored in the layer’s weights, which in essence are a bunch of numbers.

레이어에는 가중치들이 있습니다. 레이어가 입력 데이터에 어떤 일을 하는 지는 값을 갖는 가중치들로 표현됩니다. 가중치는 프로그래밍 요소이고, 레이어의 가중치들에 값을 할당함으로 프로그래밍 하는 것입니다. 입력을 받아 원하는 출력을 얻을 수 있을 때 까지 학습을 통해서 프로그램을 다듬어 갑니다.

가중치들에 값을 할당해서 프로그래밍 합니다. 프로그래밍한 결과를 테스트 합니다. 테스트 결과가 기준에 못 미치면 프로그래밍을 수정하고 다시 테스트 합니다. 사실 프로그래밍 방식만 다르지 프로그래밍 절차는 같다라고 할 수 있습니다. 딥러닝에서는 이런 과정이 모두 사람이 아닌 머신이 한다는 점만 다릅니다.

테스트를 할 때 사용하는 함수가 손실 함수(loss function)입니다. 손실 함수는 프로그래밍의 결과와 해답의 결과의 차이(loss score)를 구합니다. 손실 점수가 더 이상 줄어들지 않을 때까지 프로그램을 반복적으로 다듬어 갑니다. 프로그램을 다듬는 다는 것은 손실 점수가 줄도록 가중치 값을 조정하는 것입니다. 프로그램을 다듬는 것은 옵티마이저(optimizer)에 의해 수행됩니다.

1.2.5까지 쭉 읽어나갑니다.

1.1.6 What deep learning has achieved so far
1.1.7 Don’t believe the short-term hype
1.1.8 The promise of AI

 

1.2 Before deep learning: a brief history of machine learning

1.2.1 Probabilistic modeling
1.2.2 Early neural networks
1.2.3 Kernel methods
1.2.4 Decision trees, random forests, and gradient boosting machines
1.2.5 Back to neural networks
1.2.6 What makes deep learning different

아래 문장들에 다시 한 번 주의를 기울여 읽습니다.

Deep learning also makes problem-solving much easier, because it completely automates what used to be the most crucial step in a machine-learning workflow: feature engineering.

These are the two essential characteristics of how deep learning learns from data: the incremental, layer-by-layer way in which increasingly complex representations are developed, and the fact that these intermediate incremental representations are learned jointly, each layer being updated to follow both the representational needs of the layer above and the needs of the layer below.

1.2.7 The modern machine-learning landscape

These are the two techniques you should be the most familiar with in order to be successful in applied machine learning today: gradient boosting machines, for shallowlearning problems; and deep learning, for perceptual problems. In technical terms, this means you’ll need to be familiar with XGBoost and Keras—the two libraries that currently dominate Kaggle competitions.

XGBoost를 기억해 두세요.

끝까지 쭉 읽어나갑니다.

1.3 Why deep learning? Why now?

1.3.1 Hardware
1.3.2 Data
1.3.3 Algorithms
1.3.4 A new wave of investment
1.3.5 The democratization of deep learning
1.3.6 Will it last?
About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*