728x90

딥 러닝은 사람의 뇌처럼 뉴런(Neuron)으로 구성된 인공 신경망(ANN, Artifitial Neuron Network) 모델입니다. 

뉴런은 또 다른 뉴런과 연결되어 있고, 뉴런이 계산한 결과는 다른 뉴런의 입력이 되게 됩니다. 

이러한 뉴런의 연결의 복잡성이 딥러닝의 효율을 좌우하게 됩니다. 

 

딥러닝의 기초적인 개념을 파악해보려면 다음 포스팅을 참고해주십시오.
<관련 포스팅>

* What is Deep Learning

 

선형 유닛 (Linear Unit)

신경망(Neuron Network)의 기본 구성요소가 되면 단일 뉴런을 도식화하면 다음과 같습니다. 

 

Picture.1) Linear Unit : y=wx+b

  • x : 입력된 값.
  • w : weight - 입력된 값의 가중치.연결된 다른 뉴런에서 입력값 가중치가 됨.
    선형 함수의 기울기(Slope)
  • b: bias - 바이어스는 뉴런에 도달하는 값이 b가 되도록 1을 입력. 
    선형 함수 y절편[y-intercept] 값.

Single Neuron 모델은 Linear 모델인 것입니다. 

더보기

수학 노트 : 직선의 절편(intercept)과 기울기(Slope)

 

출처 : https://blog.naver.com/by2547/222708658438

y = 2x+1 이므로  y절편은 1이고, x절편은 0.5가 된다. ( 0=2x+1  ->   x=1/2 ->   x=0.5 )

 

선형 유닛 모델 예제 (Linear Unit as a Model)

80 Cereals 이란 데이터셋을 예제로 설명합니다.

더보기

80 Cereals Dataset

Context

If you like to eat cereal, do yourself a favor and avoid this dataset at all costs. After seeing these data it will never be the same for me to eat Fruity Pebbles again.

Content

Fields in the dataset:

  • Name: Name of cereal
  • mfr: Manufacturer of cereal
    • A = American Home Food Products;
    • G = General Mills
    • K = Kelloggs
    • N = Nabisco
    • P = Post
    • Q = Quaker Oats
    • R = Ralston Purina
  • type:
    • cold
    • hot
  • calories: calories per serving
  • protein: grams of protein
  • fat: grams of fat
  • sodium: milligrams of sodium
  • fiber: grams of dietary fiber
  • carbo: grams of complex carbohydrates
  • sugars: grams of sugars
  • potass: milligrams of potassium
  • vitamins: vitamins and minerals - 0, 25, or 100, indicating the typical percentage of FDA recommended
  • shelf: display shelf (1, 2, or 3, counting from the floor)
  • weight: weight in ounces of one serving
  • cups: number of cups in one serving
  • rating: a rating of the cereals (Possibly from Consumer Reports?)

입력으로 'sugars'(1회 제공당 설탕량[g] )과 출력으로 '칼로리'(1회 제공당 칼로리)를 사용하여 모델을 훈련하면 편향(bias)이 b=90이고 가중치(weight)가 w=2.5가 됩니다. 다음과 같이 1회 제공량당 5g의 설탕이 포함된 시리얼의 칼로리 함량을 계산할 수 있습니다.

Picture.2) Computing with the linear unit.


728x90

다중 입력값 (Multiple Inputs)

80 Cereals 데이터 세트에는 'sugars'보다 더 많은 특성(features)가 있습니다. fiber나 protein 함량과 같은 것을 포함하도록 모델을 확장하려면 어떻게 해야 할까요? 생각보다 어렵지 않습니다. 추가할 특성을 뉴런의 입력으로 추가하면 됩니다. 

이 뉴런의 공식은 다음과 같이 각 입력값과 가중치를 곱해서 모두 더하면 됩니다. 

y = w0*x0 + w1*x1 + w2*x2 + b

Picture.3)&nbsp; A linear unit with three inputs.

케라스에서 선형유닛 ( Linear Units in Keras ) 

keras.Sequential 모델를 이용하여 Layer 스택으로 신경망을 생성해보겠습니다.

Picture3)과 같은 Dense layer를 생성합니다. 

다음과 같이 세개의 특성(sugars, fiber, protein) 입력받아 하나의 출력(calories)을 가진 선형 모델(linear model)을 생성합니다. 

from tensorflow import keras
from tensorflow.keras import layers

# 다음과 같은 구성의 linear unit(=Neuron)을 생성한다. 
# units=1 : 1개의 출력값 
# input_shape=[3] : 3개의 입력값
model = keras.Sequential([
    layers.Dense(units=1, input_shape=[3])
])

unit=1 은 뉴런의 출력 수를 설정하는 인자로, 예제에서는 calories라는 단일값 출력한다. 

input_shape=[3] 은 입력 값의 차원 설정하는 인자로, 예제에서는 sugars, fiber, protein 세 개의 특성을 입력한다.

 


<관련 포스팅>

[Intro to Deep Learning] Deep Neural Networks

[Intro to Deep Learning] MAE, Stochastic Gradient Descent

[Intro to Deep Learning] Underfitting and Overfitting

[Intro to Deep Learning] Dropout and Batch Normalization


https://unsplash.com/photos/n6B49lTx7NM

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
반응형