기본 콘텐츠로 건너뛰기

SW) 머신러닝과 딥러닝 특론 4주차 (오경선교수님) - 인공신경망 실습

 작년 1학기에는 파이썬과 인공지능 알고리즘을 개론 수준으로 배웠는데

참 어려웠지만 너무 재미있었다.

파이썬은 항상 배우고 싶었는데 독학은 또 안하게 되었다.

역시 대학원에서 2번의 시험을 치니 아주 열심히 공부하게 되었다.

 물론 학기말에 교육력제고와 더불어 하면서 정말 머리카락이 빠지는 

일도 겪었지만 겨울 방학부터 다시 잔디처럼 머리카락이 나더니 회복했다.ㅎㅎㅎ

 요즘 나름 다른 사람들의 코드를 보고 이해할 수 있게 되어 좀 뭔가

전혀 다른 세상을 볼 수 있게 된 것 같다.

하여간 교재는 Do it 파이썬인가 하는 책이었는데 딱 필요한 내용만 있어서

나중에 누가 파이선 공부한다하믄 저 책을 추천해야 겠다.

 파이썬 말고도 김재현 교수님 강의를 들으면서 뉴런을 따라한 신경망의

시그모이드 함수가 역치라는 개념을 담고 있는 것이 너무 신기하다고

펭귄과 집에 오면서 감탄했던 기억이 난다.

 이번 학기에는 3과목을 듣는데 역시 따라가는게 증말 버겁지만

정말 흥미롭다. 학기 초라 강의들이 다 밀리기까지 해서 꽤 아쉽다..

뭐 몰아서 들으면 되겠지!

[강의메모와 내 생각]

------1. 인공신경망과 단층신경망 실습------------------

1) 인공신경망 실습  

정형 데이터 : 머신러닝

비정형 데이터 : 머신러닝의 수학적 모델 중 하나의 딥러닝

인공신경망 : 인간이 인식하는 방식 즉 인간의 뇌구조를 본딴

기계학습 알고리즘

여러개의 입력 -> 계산 -> 출력 없거나 조절 그것이 또 다른 뉴런으로!


하나의 사물을 인식할 때 여러가지 관점, 채널에서 입력을 받아

거기서 특징을 뽑아내고

이것으로 특징이 매치되나로 판단!


2) 활성함수 중에

   O/X 면 시그모이드

   카테고리 면 softmax라는데 (softmax 함수 찾아봐야지.)

3) 유명한 데이터 셋

   붓꽃, 보스턴 집값 : 머신러닝

   mnist : 딥러닝


4)  데이터 전처리는 학습보다 더 어려울 수 있다.

 그래서 텐서플로우에서 제공해주는 이미 있는 데이터 셋을 쓰는 경우가 대부분이다.

(내 생각 : 학교에서 가르칠 때는 더하겠네. 

             머신러닝은 정형데이터니까 좀 가능하지 않을까 하는 생각이 듦)

    데이터셋을 20 : 80으로 트레이닝용 검증용으로 나눠 놓는 것이 나옴

    (겨울 방학에 Do it 딥러닝으로 나름 미리 공부해봤었는데 어려워서 나중에는

     내가 헛짓을 했구나 햇는데 거기서 들은 내용들이 마구 나와서 뿌듯하다...ㅎㅎㅎ)

ex) [이 앞에 데이터를 20:80으로 나누는 과정 뒤에]

    케라스의 Dense 클래스를 사용해서 밀집층을 만드는 과정 중

     필요한 매개 변수는 뉴런의 개수, 뉴런의 출력에 적용할 함수,

     입력의 크기

     dense=keras.layers.Dense(10,activation='softmax',input_shape1=(784,))

    - 패션아이템을 10개로 분류하기 위해 10으로 설정

    - 10개의 뉴런에서 출력되는 값을 확률로 바꾸기 위해

      softmax함수를 사용한다.

      (만약, 2개의 클래스를 분류하는 이진 분류라면 시그모이드 함수를

      사용한다.)

     - 10개의 뉴런이 각각 몇 개의 입력을 받는지 튜플로 지정한다.

       이 있고 이 밀집층 만들기까지 

       하면 모델 구조를 만든 것]

     model=keras.Sequential(dense)

     - Sequential 클래스의 객체를 만들 때 앞에서 만든 밀집층의 객체

       dense를 전달한다. 신경망 모델이 model 객체가 만들어진다!!!!

      [이제 학습 바로 직전 손실함수 설정하기]

      이제 손실함수와 타킷값을 이용할 때가 됨

     compile()이라는 메서드에서 loss부분을 통해 손실함수, 측정지표를

     지정할 수 있다고 함.

     model.compile(loss='sparse_categorical_crossentropy',metrics='accuracy')

     크로스엔트로피라는 애가 손실함수 이다.

     정수로 된 타킷값을 사용해서 손실을 계산 한다는데 어떤 함수인지

     아직 잘 모르겠다.

     metrics='accuracy' 이거는 에포크마다 정확도 지표를 출력하려고

     두는 설정값 이라구 한다.

    (에포크 = 학습의 횟수)

      [이제 모델 훈련 시기키]

     model.fit(train_scaled,train_target,epochs=5)

     Fit으로 모델을 훈련하고 반복할 에포크 횟수를 5로 설정한 상태임.

    (유튜브 영상에서는 엄청 숫자가 컸던 것으로 기억하는데

     다른 거였나보다.

      그리고  같은 데이터여도 몇 바퀴 더돌리면 더 정확해지기도 했던 기억이 난다.)

     [모델 평가하기]

     model.evaluate(val_scaled, val_target)

     아까 20프로 덜어냈던 것을 쓰는 것임.

    - 검증세트의 점수는 훈련세트 점수보다 조금 낮은 것이 일반적이라고 함.


 keras.datasets.fashion_mnist.load_data()를 활용한 인공신경망 실습

실습한 코드

https://colab.research.google.com/drive/1ColiohPLZYRDDM66oSgo8bSL9c94yVu6?usp=sharing


----------------------2. 다층 퍼셉트론----------------------


1) 단층과의 차이점 및 활성화함수 이야기

   - 은닉층의 활성함수가 시그모이드일지 소프트맥스일지는

     비교적 자유로운 편

  - 다층도 출력층 만큼은 이진분류면 시그모이드

    카테고리라면 소프트맥스인 점은 같음


2) 앞부분 같고 케라스의 dense 클래스를 만들 때 두 개다.

    시그모이드 활성화 함수를 사용한 은닉층 dense1과

    소프트맥스를 사용한 출력층 dense2

dense1=keras.Dense(100,activation='sigmoid',input_shape=(784,))

dense2=keras.Dense(10,activation='softmax')


은닉층 dense1dms 100개의 뉴런을 가지고 있고 즉 출력도 100개만 해줌

입력 크기는 784개이고 활성화함수를 써서 0~1값으로 바꿔주는 것임

다음 dense2에 입력할 것이라서

dense2는 카데고리용이라서 소프트맥스를 썼고

입력값 100개를 특별히 안써줘도 된다고 한다는데 사실 이해는 안갔지만

그냥 그런가보다!


3) dense1, dense2 객체를 sequential 클래스에 추가하여 심층 신경망을 만들 때

model=keras.Sequential([dense1,dense2])

시퀀셜클래스 객체를 만들 때 여러개의 층을 추가하려면

인수를 리스트로 만들어서 전달해야 한다.

리스트는 가장 처음 등장하는 은닉층에서 마지막 출력층의 순서로 나열한다.


--------------------- 3. 그 외 ---------------------

5) 교수님이 줌에서 추천해주셨다는 내용

   학기 초 일을 우선으로 하니 사실 수업이 다 밀려서

   실시간 질문 시간에 참여를 2주째 못 참여하고 있다.

   이번 주에 몰아듣고 담주라도 참여해야지.

   하여간 알려주신 것이 심심이 라는 챗봇인데

   이루다보다 먼저 나온 것이었다.


- 이루다보다 먼저 나왔다는 심심이가 큰 논란없이 

   잘 있는 비결이 궁금해서 찾아보고 있다.

- 말을 걸려면 말풍선?이 있어야 한다는 것과 

  나쁜 말을 아예 훈련시키는 코너를 통해 아예 나쁜 말을 

  열심히 분류지어 학습하여 

  필요할 때는 그 기능을 제외할 수 있도록 하는 것이 

  비결일까 생각이 들었다.

- 관련 기사 찾아본 것 

http://blog.simsimi.com/2017/04/simsimi-terms-and-conditions.html?m=0

https://www.google.co.kr/amp/s/m.etnews.com/amp/20210114000172

--------------------------------------------------------------------------------------

합성곱 신경망.

1. https://cs.stanford.edu/people/karpathy/deepimagesent/generationdemo/

sns에 올린 글, 그림으로 학습한 인공지능.

문장을 인공지능이 붙이는 거라고 함.

2. 화풍 

https://deepdreamgenerator.com/#gallery

3. 합성곱 신경망 원리가 완전 작년 1학기에는 파이썬과 인공지능 알고리즘을 개론 수준으로 배웠는데


참 어려웠지만 너무 재미있었다.


파이썬은 항상 배우고 싶었는데 독학은 또 안하게 되었다.


역시 대학원에서 2번의 시험을 치니 아주 열심히 공부하게 되었다.


물론 학기말에 교육력제고와 더불어 하면서 정말 머리카락이 빠지는


일도 겪었지만 겨울 방학부터 다시 잔디처럼 머리카락이 나더니 회복했다.ㅎㅎㅎ


요즘 나름 다른 사람들의 코드를 보고 이해할 수 있게 되어 좀 뭔가


전혀 다른 세상을 볼 수 있게 된 것 같다.


하여간 교재는 Do it 파이썬인가 하는 책이었는데 딱 필요한 내용만 있어서


나중에 누가 파이선 공부한다하믄 저 책을 추천해야 겠다.


파이썬 말고도 김재현 교수님 강의를 들으면서 뉴런을 따라한 신경망의


시그모이드 함수가 역치라는 개념을 담고 있는 것이 너무 신기하다고


펭귄과 집에 오면서 감탄했던 기억이 난다.


이번 학기에는 3과목을 듣는데 역시 따라가는게 증말 버겁지만


정말 흥미롭다. 학기 초라 강의들이 다 밀리기까지 해서 꽤 아쉽다..


뭐 몰아서 들으면 되겠지!


[강의메모와 내 생각]


------1. 인공신경망과 단층신경망 실습------------------


1) 인공신경망 실습


정형 데이터 : 머신러닝


비정형 데이터 : 머신러닝의 수학적 모델 중 하나의 딥러닝


인공신경망 : 인간이 인식하는 방식 즉 인간의 뇌구조를 본딴


기계학습 알고리즘


여러개의 입력 -> 계산 -> 출력 없거나 조절 그것이 또 다른 뉴런으로!




하나의 사물을 인식할 때 여러가지 관점, 채널에서 입력을 받아


거기서 특징을 뽑아내고


이것으로 특징이 매치되나로 판단!




2) 활성함수 중에


O/X 면 시그모이드


카테고리 면 softmax라는데 (softmax 함수 찾아봐야지.)


3) 유명한 데이터 셋


붓꽃, 보스턴 집값 : 머신러닝


mnist : 딥러닝




4) 데이터 전처리는 학습보다 더 어려울 수 있다.


그래서 텐서플로우에서 제공해주는 이미 있는 데이터 셋을 쓰는 경우가 대부분이다.


(내 생각 : 학교에서 가르칠 때는 더하겠네.


머신러닝은 정형데이터니까 좀 가능하지 않을까 하는 생각이 듦)


데이터셋을 20 : 80으로 트레이닝용 검증용으로 나눠 놓는 것이 나옴


(겨울 방학에 Do it 딥러닝으로 나름 미리 공부해봤었는데 어려워서 나중에는


내가 헛짓을 했구나 햇는데 거기서 들은 내용들이 마구 나와서 뿌듯하다...ㅎㅎㅎ)


ex) [이 앞에 데이터를 20:80으로 나누는 과정 뒤에]


케라스의 Dense 클래스를 사용해서 밀집층을 만드는 과정 중


필요한 매개 변수는 뉴런의 개수, 뉴런의 출력에 적용할 함수,


입력의 크기


dense=keras.layers.Dense(10,activation='softmax',input_shape1=(784,))


- 패션아이템을 10개로 분류하기 위해 10으로 설정


- 10개의 뉴런에서 출력되는 값을 확률로 바꾸기 위해


softmax함수를 사용한다.


(만약, 2개의 클래스를 분류하는 이진 분류라면 시그모이드 함수를


사용한다.)


- 10개의 뉴런이 각각 몇 개의 입력을 받는지 튜플로 지정한다.


이 있고 이 밀집층 만들기까지


하면 모델 구조를 만든 것]


model=keras.Sequential(dense)


- Sequential 클래스의 객체를 만들 때 앞에서 만든 밀집층의 객체


dense를 전달한다. 신경망 모델이 model 객체가 만들어진다!!!!


[이제 학습 바로 직전 손실함수 설정하기]


이제 손실함수와 타킷값을 이용할 때가 됨


compile()이라는 메서드에서 loss부분을 통해 손실함수, 측정지표를


지정할 수 있다고 함.


model.compile(loss='sparse_categorical_crossentropy',metrics='accuracy')


크로스엔트로피라는 애가 손실함수 이다.


정수로 된 타킷값을 사용해서 손실을 계산 한다는데 어떤 함수인지


아직 잘 모르겠다.


metrics='accuracy' 이거는 에포크마다 정확도 지표를 출력하려고


두는 설정값 이라구 한다.


(에포크 = 학습의 횟수)


[이제 모델 훈련 시기키]


model.fit(train_scaled,train_target,epochs=5)


Fit으로 모델을 훈련하고 반복할 에포크 횟수를 5로 설정한 상태임.


(유튜브 영상에서는 엄청 숫자가 컸던 것으로 기억하는데


다른 거였나보다.


그리고 같은 데이터여도 몇 바퀴 더돌리면 더 정확해지기도 했던 기억이 난다.)


[모델 평가하기]


model.evaluate(val_scaled, val_target)


아까 20프로 덜어냈던 것을 쓰는 것임.


- 검증세트의 점수는 훈련세트 점수보다 조금 낮은 것이 일반적이라고 함.




keras.datasets.fashion_mnist.load_data()를 활용한 인공신경망 실습


실습한 코드


https://colab.research.google.com/drive/1ColiohPLZYRDDM66oSgo8bSL9c94yVu6?usp=sharing




----------------------2. 다층 퍼셉트론----------------------




1) 단층과의 차이점 및 활성화함수 이야기


- 은닉층의 활성함수가 시그모이드일지 소프트맥스일지는


비교적 자유로운 편


- 다층도 출력층 만큼은 이진분류면 시그모이드


카테고리라면 소프트맥스인 점은 같음




2) 앞부분 같고 케라스의 dense 클래스를 만들 때 두 개다.


시그모이드 활성화 함수를 사용한 은닉층 dense1과


소프트맥스를 사용한 출력층 dense2


dense1=keras.Dense(100,activation='sigmoid',input_shape=(784,))


dense2=keras.Dense(10,activation='softmax')




은닉층 dense1dms 100개의 뉴런을 가지고 있고 즉 출력도 100개만 해줌


입력 크기는 784개이고 활성화함수를 써서 0~1값으로 바꿔주는 것임


다음 dense2에 입력할 것이라서


dense2는 카데고리용이라서 소프트맥스를 썼고


입력값 100개를 특별히 안써줘도 된다고 한다는데 사실 이해는 안갔지만


그냥 그런가보다!




3) dense1, dense2 객체를 sequential 클래스에 추가하여 심층 신경망을 만들 때


model=keras.Sequential([dense1,dense2])


시퀀셜클래스 객체를 만들 때 여러개의 층을 추가하려면


인수를 리스트로 만들어서 전달해야 한다.


리스트는 가장 처음 등장하는 은닉층에서 마지막 출력층의 순서로 나열한다.




--------------------- 3. 그 외 ---------------------


5) 교수님이 줌에서 추천해주셨다는 내용


학기 초 일을 우선으로 하니 사실 수업이 다 밀려서


실시간 질문 시간에 참여를 2주째 못 참여하고 있다.


이번 주에 몰아듣고 담주라도 참여해야지.


하여간 알려주신 것이 심심이 라는 챗봇인데


이루다보다 먼저 나온 것이었다.




- 이루다보다 먼저 나왔다는 심심이가 큰 논란없이


잘 있는 비결이 궁금해서 찾아보고 있다.


- 말을 걸려면 말풍선?이 있어야 한다는 것과


나쁜 말을 아예 훈련시키는 코너를 통해 아예 나쁜 말을


열심히 분류지어 학습하여


필요할 때는 그 기능을 제외할 수 있도록 하는 것이


비결일까 생각이 들었다.


- 관련 기사 찾아본 것


http://blog.simsimi.com/2017/04/simsimi-terms-and-conditions.html?m=0


https://www.google.co.kr/amp/s/m.etnews.com/amp/20210114000172


--------------------------------------------------------------------------------------


합성곱 신경망.


1. https://cs.stanford.edu/people/karpathy/deepimagesent/generationdemo/


sns에 올린 글, 그림으로 학습한 인공지능.


문장을 인공지능이 붙이는 거라고 함.


2. 화풍


https://deepdreamgenerator.com/#gallery


3. 합성곱 신경망 원리가 완전 시각적인 사이트

http://www.cs.cmu.edu/~aharley/vis/conv/


4. keras.js 도 신기하다.

https://transcranial.github.io/keras-js/#/mnist-cnn


댓글

Creative Commons License