And so given these input features,the job of the neural network will be to predict the price y.
And notice also that each of these circles, these are called hidden units inthe neural network, that each of them takes its inputs all four input features.
So for example, rather than saying this first node represents family size andfamily size depends only on the features X1 and X2.
Instead, we're going to say, well neural network,you decide whatever you want this node to be.
And we'll give you all four input features to compute whatever you want.
So we say that layer that this is input layer andthis layer in the middle of the neural network are densely connected.
Because every input feature is connected to every oneof these circles in the middle.
And the remarkable thing about neural networks is that, given enough data aboutx and y, given enough training examples with both x and y, neural networksare remarkably good at figuring out functions that accurately map from x to y.
input feature들이 주어진다면, neural network의 일은 y를 예측하는 것이다.
neural network의 hidden unit이라고 불리는 각각의 원은 모든 input feature들을 가져간다.
첫번째 노드가 X1, X2(size, #bedrooms)에 의존하는 'family size'라고 부르기보다는, neural network에게 알아서 이 노드가 무엇인지를 결정하라고 말할 수 있다.
그리고 4개의 input을 주면서 신경망이 원하는 무엇이든지 계산하도록 만든다.
첫번째 layer는 input layer라고 불리고 network의 중간 layer는 densely connected라고 불린다.
왜냐하면 모든 input feature들이 중간의 각각 원들에 연결되어 상호작용하기 때문이다.
더 주목할 점은 x,y에 대해 충분한 데이터가 주어진다면 neural network는 놀랍도록 x에서 y로 mapping시키는 함수를 잘 찾는다는 것이다.
중간의 layer를 hidden layer라고 하는 이유는?
학습 데이터셋에 hidden layer의 출력값은 보이지 않기 때문이다.
input layer의 입력값, output layer의 출력값은 학습 데이터셋에 보이지만, hidden layer의 값은 보이지 않아(hidden)
참고로 위 network는 2-layer neural network라고 부른다.
왜냐하면 input layer는 세지 않기 때문이다. hidden layer 하나, output layer 하나로 2-layer
그에 따라 hidden layer의 weight W1, bias b1, output layer의 W2, bias b2를 학습한다는거 기억하지
neural network의 linear layer의 계산과정은..
X >> Z = WX+b >>> a = activation(WX+b)인 것은 알고 있을 것
하나하나 모든 노드마다 계산하는 것이 아니라, 행렬로 만들어서 계산하면 한번에 계산할 수 있다는 이야기
2. supervised learning
But it turns out that sofar, almost all the economic value created by neural networks has been throughone type of machine learning, called supervised learning.
neural network에 의해 만들어지는 대부분의 경제적 가치는 supervised learning에서 나온다.
So a lot of the value creation through neural networks has been through cleverlyselecting what should be x and what should be y foryour particular problem, and then fitting this supervised learning component intooften a bigger system such as an autonomous vehicle.
neural network를 통해 만들어지는 많은 가치들은, 무엇이 x이고 무엇이 y인지를 당신의 문제에 대해 영리하게 선택하고,
이것을 종종 더 큰 시스템에 supervised learning 요소로서 잘 맞춰서 만들어진다.
But it turns out that a lot of short term economic value that neuralnetworks are creating has also been on structured data,such as much better advertising systems, much better profit recommendations, andjust a much better ability to process the giant databases thatmany companies have to make accurate predictions from them.
신경망이 만들어내는 경제적 가치들은 비정형데이터뿐만 아니라, 정형데이터에도 있다.
예를 들어, 더 나은 광고시스템, 더 나은 수익 추천같은 것들, 많은 회사들이 매우 큰 데이터베이스에서 정확한 예측을 위해 더 잘 활용하는 것들이 있다.
3. 딥러닝이 발전할 수 있었던 이유
딥러닝의 발전을 이룬 요소중 하나로 간과하면 안되는 것이 알고리즘의 발전이다.
sigmoid에서 ReLU를 사용하게 된 것이 그 예이다.
sigmoid function의 경우, gradient descent를 구현하면 gradient가 0이 되어 parameter의 변화가 매우 느리게 진행된다.
반면 ReLU의 경우 양수 input에 대해서는 항상 gradient가 1이어서 gradient descent가 더 빨라졌으며, 이는 계산을 빠르게 할 수 있게 해준다.
4. activation function
tanh 함수는 sigmoid를 이동시켜서 만든 함수
This almost always works better than the sigmoid function because with valuesbetween plus one and minus one, the mean of the activations that come outof your hidden layer are closer to having a zero mean.
And so just as sometimes when you train a learning algorithm,you might center the data andhave your data have zero mean using a tan h instead of a sigmoid function.
거의 보통 sigmoid보다 우수하다. 그래서 sigmoid를 사용할바에는 tanh를 사용하는게 낫다.
왜냐하면 학습 중에 data의 activation의 평균을 0에 가깝게 만들어서 데이터를 중심화시키기 때문이다(centerize)
그리고 이렇게하면, 다음 layer에서 학습을 더 쉽게 만들어준다고한다.
The one exception is for the output layer because if y is either zero orone, then it makes sense for y hat to be a number that you wantto output that's between zero and one rather than between -1 and 1.
So the one exception where I would use the sigmoid activation function is whenyou're using binary classification.
In which case you might use the sigmoid activation function for the upper layer.
한가지 예외는 output layer에서의 activation인데, 특히 이진분류의 경우 -1과 1 사이보다는 0이나 1의 경우가 합리적이다.
따라서 output layer에는 보통 sigmoid를 사용하는 것이 나으며, 이진분류의 경우 output layer가 아닌, 상위 layer에도 sigmoid를 쓸 수도 있다.
여기서 중요한 관찰은, layer마다 activation function을 다르게 선택할 수 있다는 점이다.
하지만, tanh나 sigmoid는 z가 매우 크거나 매우 작으면 gradient가 0에 가까워서 학습속도가 느려진다는 단점이 있다.
가장 인기있는 activation으로 ReLU는 f(z) = max(0,z)로 정의되는 함수이다.
z가 음수이면 gradient는 0이고 양수이면 1이다.
z = 0에서는 수학적으로 gradient가 정의되지 않지만, 컴퓨터 구현에서는 보통 gradient를 매우 작은값으로 정의한다.
어떤 activation을 써야할지 모른다면, 다른 activation에 비해 좋은 선택이 될 수 있다.
왜냐하면 z가 양수에서 gradient가 1이어서 학습속도가 빠르다.
한가지 단점은 z가 음수일때, gradient가 0이 된다는 점인데, z가 음수일때, 약간의 기울기를 가지는 Leaky ReLU를 선택할 수 있다.
f(z) = max(az,z), 여기서 a = 0.01같이 작은 값으로 선택할 수 있고, 학습변수로 사용할수도 있다.
ReLU보다 잘 작동하지만, ReLU보다 많이 쓰지는 않는다..
neural network 구축에는 이렇게 다양한 선택을 할 수 있는데, 무엇이 정답일지는 알수 없다.