엘리스 내일 패스, 가볍게 코딩 시작
엘리스 내일패스를 통해 파이썬, SQL을 활용한 데이터 분석부터 웹개발, R 등 핫한 개발 주제들을 쉽고 편하게 수강할 수 있습니다.
kdc-elice.imweb.me
엘리스 코딩 내일패스 인공지능 과정을 수강하고 작성
인공신경망 정의
딥러닝의 기본이 되는, 중심적인 개념은 인공신경망이며, Input 과 Output 사이의 안에 있는 여러가지 방법론을 표현함
Hidden layer가 인공신경망에서 가장 중요한 부분임 영감 자체는 생물학, 뉴런을 가지고 있고, activation이 되면 이를 활성화 시킴
인공 신경망의 특징
데이터가 들어가면 데이터의 회귀분석, 분류, 유의미한 패턴이 있다면 OUTPUT를 나타낸다. 이 중간에 있는것은 Hidden layer가 몇십개 있을 수 있다. 정확한 정의를 내리기 전, 인공신경망 특징은 데이터의 특성을 Feature들에 의해서 스스로 학습하는게 인공신경망의 특징 인공신경망은 모든 학습이 가능하다.
초기 형태의 신경망인 퍼셉트론
데이터가 들어오면 w를 추가해준다면 퍼셉트론으로 넘긴다면 각각 데이터의 x1, x2, x3,로 들어오면 각각 곱하여 더해준것을 Bias를 더하여 가중치 activation foucntion인 비선형 함수를 통해서 이를 전달한다. 이것이 퍼셉트론 하나가 하는 역할이다.
활성화 함수(activation function)
activation function이 있는 이유는 다양하다. 노이즈 제거, 분류를 더 잘하는 것, weight 값을 학습하는데 가장 좋은 w값을 데이터를 통해서 배워야 하는데, 배우는 과정에 필요한 수학이 복잡하여 이를 완화시키려고 사용하기도 한다.
해당 그림은 0보다 작으면 0으로 나타내고 크면 1이라고 나타내는 계단(step) 함수이다.
퍼셉트론 작동에 대한 예시를 구현해보자
'''
1. 신호의 총합과 외출 여부를 반환하는
Perceptron 함수를 완성
Step01. Bias는 외출을 좋아하는 정도이며
-1로 설정
Step02. 입력 받은 값과 Bias 값을 이용하여 신호의
총합을 구한다.
Step03. 지시한 활성화 함수를 참고하여 외출 여부
(0 or 1)를 반환
'''
def Perceptron(x_1,x_2,w_1,w_2):
bias = -1
output = (x_1 * w_1 + x_2 * w_2 + bias)
y = 1 if output >0 else 0
return output, y
# 값을 입력받는 함수입니다.
def input_func():
# 비 오는 여부(비가 온다 : 1 / 비가 오지 않는다 : 0)
x_1 = int(input("x_1 : 비가 오는 여부(1 or 0)을 입력"))
# 여자친구가 만나자고 하는 여부(만나자고 한다 : 1 / 만나자고 하지 않는다 : 0)
x_2 = int(input("x_2 : 여친이 만나자고 하는 여부(1 or 0)을 입력"))
# 비를 좋아하는 정도의 값(비를 싫어한다 -5 ~ 5 비를 좋아한다)
w_1 = int(input("w_1 : 비를 좋아하는 정도 값(-5 ~ 5)을 입력"))
# 여자친구를 좋아하는 정도의 값(여자친구를 싫어한다 -5 ~ 5 비를 좋아한다)
w_2 = int(input("w_2 : 여친을 좋아하는 정도 값(-5 ~ 5)을 입력"))
return x_1, x_2, w_1, w_2
'''
2. 실행 버튼을 눌러 x1, x2, w1, w2 값을 다양하게
입력해보고, Perceptron함수에서 반환한 신호의 총합과
그에 따른 외출 여부를 확인
'''
def main():
x_1, x_2, w_1, w_2 = input_func()
result, go_out = Perceptron(x_1,x_2,w_1,w_2)
print("\n신호의 총합 : %d" % result)
if go_out > 0:
print("외출 여부 : %d\n ==> 외출한다!" % go_out)
else:
print("외출 여부 : %d\n ==> 외출하지 않는다!" % go_out)
if __name__ == "__main__":
main()
DIY 퍼셉트론을 만들어보자
'''
1. 가중치와 Bias 값을
임의로 설정
Step01. 0이상 1미만의 임의의 값으로 정의된
4개의 가중치 값이 들어가있는
1차원 리스트를 정의
Step02. Bias 값을 임의의 값으로 설정
'''
def main():
x = [1,2,3,4]
w = [0.3, 0.4, 0.1, 0.7]
b = 2
output, y = perceptron(w,x,b)
print('output: ', output)
print('y: ', y)
'''
2. 신호의 총합과 그에 따른 결과 0 또는 1을
반환하는 함수 perceptron을 완성
Step01. 입력 받은 값과 Bias 값을 이용하여
신호의 총합을 구한다
Step02. 신호의 총합이 0 이상이면 1을,
그렇지 않으면 0을 반환하는 활성화
함수를 작성
'''
def perceptron(w, x, b):
# output = x[0] * w[0] + x[1] * w[1] + x[2] * w[2] + x[3] * w[3] + b
output = sum([x_i * w_i for x_i, w_i in zip(x,w)]) + b
y = 1 if output >=0 else 0
return output, y
if __name__ == "__main__":
main()
'파이썬 이것저것 > 파이썬 딥러닝 관련' 카테고리의 다른 글
[Python] 딥러닝 모델의 학습 방법 (0) | 2022.07.14 |
---|---|
[Python] 딥러닝 다층 퍼셉트론 (0) | 2022.07.14 |
[Python] 딥러닝 퍼셉트론 선형분류기 (1) | 2022.07.13 |
[Python Tensorflow 프로젝트] CNN을 활용하여 마스크 구분하기 프로젝트 (0) | 2022.07.10 |
[Python] 이미지 처리 (0) | 2022.07.08 |