모두를 위한 딥러닝 - ML Lec 08

Dylan·2022년 8월 3일
0
post-thumbnail

lec 08-1: 딥러닝의 기본 개념: 시작과 XOR 문제

Ultimate dream: thinking machine

뇌가 굉장히 복잡하게 연결되어있다에 놀랍고, 연결된 부분부분들을 자세히 봤더니 Neuron이라 불리는 유닛이 너무 단순하게 동작이 되더라

Activation Functions

뉴런을 수학적으로 만든것이 Activation Functions
x의 값을 w랑 곱하고 곱한 값들을 다 더하고 어떤 bias라는 값으로 합한다. 그런다음에 activation function이라는게 있어서 이 합한 값이 어떤 일정 값을 넘어가면 1이라는 신호를 주고 안넘어가면 0 신호를 준다.

Logistic regression units

Hardware implementations

이 기계를 직접 만들었었다.

False Promises

58년도 기사를 보면 "우리가 이런것을 만들어 냈는데 이것이 곧 스스로 학습해서, 걷기도 할 수있고, 말도하고, 볼수도 있고, 글도 쓰고, 자기생산, 더 가관인것은 자기존재를 인식하게 된다" 라고 말했었음

(Simple)AND/OR problem: linearly separable?

or은 x1의 값과 x2의 값이 00 이면 -0 01 10이면 1이고 11이면 1인 형태
and는 00 01 10이면 -0이고 11일때 1인 형태

(Simple)XOR problem : linearly separable?

XOR은 00, 11일때 0, 01 10일때 1이 된다.
XOR은 리니어하게 선을 그어도 절대 구분을 할수가 없다.

Perceptrons(1969) by Marvin Minsky, founder of the MIT AI Lab

이 책에서는 당시 년도에서는 XOR을 풀 수 없다라고 함

"No one on earth had found a viable way to train*"

그리고 이런 레이어에서 즉 다시 강조한것이 "아무도 못한다"라고 얘기함

Backpropagation(1974, 1982 by Paul Werbos, 1986 by Hinton)

86년도가 되면서 문제가 해결이 됌
Backpropagation 알고리즘은 "뒷부분에서 에러를 구해서 이걸 뒤로 전달해나가면서 각각 진행시켜나가면 어떨까?" 에서 시작됐다.

Convolutional Neural Networks

고양이에게 그림을 보게 한 다음에 시신경에 있는 뉴런이 어떻게 동작하는지 봤는데
그림의 형태에 따라 일부의 뉴런만 활성화되고 다른그림을 주면 다른 뉴런이 활성화되는것을 발견함

그림을 한번에 다 학습시키는게 아니라 부분부분 보내서 나중에 합치는 네트워크를 개발하게 되었다.

A BIG problem

Backpropagation 알고리즘도 곧 큰 문제에 봉착하게 된다.
이 문제는 에러를 구해서 앞으로 보내게 될때 갈수록 신호가 약해지게 되면서 Layer가 많을수록 에러가 거의 전달되지 않고 학습을 시킬 수 없게 돼 성능이 떨어지게 되었다.

lec 08-2: 딥러닝의 기본 개념2: Back-propagation 과 2006/2007 '딥'의 출현

CIFAR

훌륭한 단체, 캐나다에서 세운 연구소인데 연구소를 세우면서 당장 돈이 되고 활용도가 높지 않아도 연구하라고 밀어준 단체이다. 이렇게 되면서 뉴럴 네트워크 전문가였던 Hinton은 캐나다로 이민을 갔다

"Everyone else was doing something different"

CIFAR 단체 덕분에 딥러닝이 개발 된듯???

2006/2007 년도에 Hinton 교수와 Bengio 교수님이 큰 Breakthrough가 되는 두 논문을 발표하게 된다.

초기값을 잘 선택한다면 학습할 수 있다는게 2006 논문
2007 논문에서는 한걸음 더 나아가서 신경망을 구축하면 굉장히 복잡한 문제를 풀 수 있다.

정말 주목을 받게된 계기

2012년에 모두를 깜짝 놀랄만한 논문이 발표되었는데 Hiton 교수 밑에 있는 Alex 박사과정 학생이 26%오류를 15%로 떨구게 되는 논문을 발표 했다

Neural networks that can explain photos

그림을 설명할 수 있게 됨

Deep API Learning*

Speech recognition errors

바이두에서는 노이즈가 많은 환경에서도 사람의 말을 90% 정도 알아 들을 수 있게 개발함

Geoffrey Hinton's summary of findings up to today

왜 이전에 잘 안됐을까를 4가지정도로 파악했는데 이것은 다음시간에 공부함

Why should I care?

나는 연구자도 아니고 컴공도 아닌데 무슨상관이냐?
이것을 알아두면 굉장히 좋다.

이러한 기술이 이미 사용되고 있다 예로 , 유튜브에 있는 자동 자막 기능이 컴퓨터가 딥러닝으로 자막을 단거다.

ML lab 08: Tensor Manipulation

Simple ID array and slicing

2D Array

행렬쓰 4행 3열

Shape, Rank, Axis

1차원 Array 일 경우 rank = 1, Shape = [4]
2차원 Array 일 경우 rank = 2, Shape = [2, 2]
4차원 Array 일 경우 rank = 4, Shape = [1, 2, 3, 4]

Axis

Axis 같은 경우 제일 안쪽에 있는 값이 큰 값, 바깥쪽으로 나갈경우 작아짐.

Matmul VS multiply

그런데 가끔 matrix 곱을 하지않고 실수로 일반 곱을 했을 경우 matrix곱과 일반 곱의 결과는 다르다.

Broadcasting (@@@WARNING)

Shape이 같아야 단순 덧셈이 가능하다

그런데 Shape이 달라도 연산을 해줄 수 있게 해주는게 Broadcasting 이다

Reduce mean

.reduce_mean은 평균을 구하는데 그것을 하나로 줄여서 구한다?
axis의 값이 무엇이냐에 따라서 값이 다르게 나온다.

Reduce sum

axis의 값이 무엇이냐에 따라서 값이 다르게 나온다.

Argmax

Argmax는 axis의 값에 따라 비교를 하면서 크기를 구하는데 구할때 결과값이 value값이 아니라 인덱스 값으로 나오는듯
axis의 값이 무엇이냐에 따라서 값이 다르게 나온다.

reshape** ( 별이 두개! 중요 !)

안에거는 3 앞에는 너 알아서해?!
reshape을 할 때 보통 가장 안쪽의 값은 건드리지 않음

Reshape (squeeze, expand)

squeeze는 개별적인 값으로 되어 있을때 하나의 값으로 표현시켜준다?
expand는 쉐입을 변경시키는 값?

One hot

Casting

주어진 tensor에서 True, False 값을 0이나 1로

Stack

여러개 변수의 값을 하나로 쌓되 axis의 값에 따라 다르게 쌓아짐

Ones and Zeros like

비슷한 모양이나 똑같은것으로 0또는 1로된 Tensor를 만들고 싶을 때
ones 로 하면 1로 zeros로 하면 0으로

Zip

복수개의 Tensor를 가지고 있을 때 Zip으로 묶어서 한방에 처리 할 때

0개의 댓글