일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- rnn
- 데이터분석
- c언어
- 컴퓨터비전
- 자바
- 정보처리기사필기
- 자바스크립트
- 중학1-1
- CSS
- 상속
- 혼공머신
- JSP
- 정보처리기사실기
- 연습문제
- JSP/Servlet
- 디버깅
- 순환신경망
- JDBC
- 파이썬
- 오블완
- 자바 실습
- html/css
- 중학수학
- 데이터베이스
- 자바스크립트심화
- 딥러닝
- 머신러닝
- 개발일기
- 컴퓨터구조
- SQL
- Today
- Total
목록인공지능 (385)
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
이번 시간에는 하이퍼 매개변수를 다루는 것과 자연 영상 인식에 대해서 학습해보려고 한다. 3. 하이퍼 매개변수 다루기하이퍼 매개변수는 신경망의 구조 또는 학습관 관련하여 사용자가 설정해야 하는 매개변수다 프로그램 7-4는 옵티마이저에 관련된 하이퍼 매개변수늘 SGD(learning_rage=0.01)과 Adam(learnging_rate=0.001)로 다르게 설정하고 어떤 값이 더 좋은지 비교하여 Adam이 월등히 좋다는 것을 알아냈다. 이처럼 하이퍼 매개변수를 잘 설정해야 신경망이 높은 성능을 발휘한다.하이퍼 매개변수의 최적값을 찾는 일을 하이퍼 매개변수 최적화라 한다. 하이퍼 매개변수 설정 요령신경망의 하이퍼 매개변수는 생각보다 많다. Dense 클래스에는 노드 개수를 정하는 units, 활성 함..
이번 장은 실습 프로그램이 있어서 나름 괜찮은 학습이 될 것 같다. 이전 절에서 프로그램 7-1을 통해 텐서플로가 제공하는 MNIST와 CIFAR-10 데이터셋을 확인하는 프로그래밍 실습을 했다. 여기서는 앞에서 배운 다층 퍼셉트론과 깊은 다층 퍼셉트론을 텐서플로로 구현하고 성능을 측정하는 실험을 한다. 1. 필기 숫자 인식다음 프로그램은 다층 퍼셉트론으로 MNIST를 인식하는 실험이다. 1980~1990년대의 다층 퍼셉트론 시대에 주로 사용하던 SGD 옵티마이저와 현대 딥러닝이 주로 사용하는 Adam 옵티마이저의 성능을 비교하는 실험도 한다. 다층 퍼셉트론으로 필기 숫자 인식텐서플로로 신경망을 학습하고 예측하는 첫 프로그래밍이다. 다층 퍼셉트론으로 MNIST 인식하기(SGD 옵티마이저) 이 코드는..
OR 데이터셋을 분류하는 그림 7-11b와 XOR 데이터셋을 분류하는 그림 7-15b의 신경망에서는 사람이 가중치를 설정했다. 다시 말해 신경망 학습을 사람이 수행했다. 매우 작은 문제라 사람이 학습을 대행했는데, 실제 데이터셋은 복잡하여 학습 알고리즘을 사용해야 한다. 1. 발상 처음에는 가중치를 어떻게 설정해야 높은 정확률을 얻을 수 있는지에 대한 아무런 실마리가 없다. 따라서 가중치를 난수로 설정하고 출발한다. 그리고 출분히 높은 정확률을 달성하거나 더 이상 개선이 불가능하다고 여져질 때까지 정확률을 향상하는 방향으로 가중치 갱신을 반복한다. 이런 발상에 대해 형식을 갖춰 쓰면 알고리즘 7-1이 된다. 2. 스토캐시틱 경사 하강법 경사하강법 기초경사하강법은 미분값을 보고 함수가 낮아..
딥러닝 관련 이론 내용은 조금 지루하지만 그래도 공부를 이어가 보겠다. 앞 절에서 특징 벡터의 차원이 2이고 데이터셋 크기가 4인 단순한 OR 데이터셋으로 퍼셉트론의 분류 능력을 예시했는데, 퍼셉트론은 수백 차원 샘플이 수만 개인 분류 문제도 풀 수 있다고 증명도이어 있다. 그런데 퍼셉트론은 선형 분류기이기 때문에 그림 7-12a와 같이 선형 분리 가능한 데이터셋만 100% 정확률로 분류할 수 있는 결정적인 한계가 있다. 퍼셉트론은 그림 7-12b와 같은 선형 분리 불가능한 상황에서는 정확률이 낮을 수밖에 없다. 민스키와 페퍼트는 『Perceptrons』라는 저서를 통해 퍼셉트론의 한계를 체계적으로 지적했다. 그림 7-13a에 있는 XOR 문제를 제시하고 퍼셉트론은 이런 단순한 문제조차 풀지 못한다고..
어제는 밤에 늦게 취침했지만 2시 반에 일어나 평소처럼 공부를 시작해 본다. 그림 7-2의 기계학습 방법론에서 가장 성공하고 주류로 자리 잡은 모델은 신경망이다. 이 절에서는 1940년대에 태동하여 현재 딥러닝으로 발전하는 신경망 역사를 간략하게 살펴본다. 이어 최초의 성공적인 신경망 모델인 퍼셉트론을 통해 신경망에 대한 기초를 다진다. 신경망의 간략 역사1900년대 들어 인간 뇌에 대한 활발한 연구에 힘입어 뉴런의 정체가 조금씩 밝혀진다. 1946년에는 초당 3000회 가량 덧셈을 할 수 있는 세계 최초의 전자식 컴퓨터인 에니악이 탄생한다. 신경 과학자들은 컴퓨터로 인공 신경망을 구현하여 사람처럼 인식할 수 있는 기계를 만들려는 거대한 발상을 한다. 그림 7-9는 사람 뇌를 구성하는 뉴런과 퍼셉트..
이 학습이 오늘의 마지막 공부가 될 것 같다. 조금 전에 감정적으로 매우 힘들고 화가 나는 일이 있었지만 그래도 공부의 자리에 나아가기로 했다. 기계학습을 구현하려면 적절한 소프트웨어 도구가 필요하다. 파이썬은 기계학습을 지원하는 sklearn 라이브러리를 제공하는데, sklearn은 그림 7-2에 있는 비신경망 모델과 얕은 신경망까지만 지원한다. 딥러닝을 구현하는데 가장 널리 쓰이는 도구는 텐서플로와 파이토치다. 텐서플로 소개텐서플로 자체는 프로그래밍이 까다로운 단점이 있다. 이런 단점을 극복하기 위해 프랑쇼와 솔레는 텐서플로 위에서 돌아가는 케라스 라이브러리를 제작해 공개하였다. 대부분 케라스 명령어로 딥러닝을 개발하는데 둘이 한 몸이므로 보통 텐서플로 프로그래밍을 한다고 말한다. 텐서플로를 사용하..
이제 드디어 딥러닝 컴퓨터 비전 학습에 들어가 본다. 딥러닝에 대해서는 다른 여러 권의 책과 강의를 통해 어느 정도 공부했지만 아직 완전히 이해한 것이 아니니 이 공부가 많은 도움이 될 것 같다. 그리고 이 책은 다른 어떤 책 보다 깊이 있게 설명하고 있어 처음 들을 때는 어렵지만 개념을 잡는데 좋은 책이라고 생각한다. 시작하기 전에컴퓨터 비전은 꾸준히 발전을 거듭하였고 다양한 분야에서 실용적인 시스템을 만드는데 성공하였다. 6장에서는 성공적인 알고리즘을 중심으로 비전 에이전트를 직접 제작하는 값진 경험을 했다. 이런 발전에도 불구하고 여전히 해결하지 못한 어려운 문제가 아주 많다. 아래 그림은 두 가지 대표적인 문제다. 그림 7-1 a는 의미 분할 문제로 물체를 구성하는 화소를 모아 영역으로 분할하고 ..
이제 마지막 남은 두 문제를 풀어보려고 한다. 연습문제 풀기 세 번째 문제 5번프로그램 6-5에서 봉합한 영상을 보면 가장자리에 검은색 영역이 나타나는 현상을 확인할 수 있었다. 검은색 영역을 제외하고 오려내는 버튼을 추가하시오. 코드 실행해 보기 c를 눌러 캡처한 후에 파노라마 영상을 제작했는데 실패했다. 그리고 새벽에 했던 것처럼 다시 시도하기로 했다. 이번에도 재질이 극명하게 다른 류의 사진이라서 그런 것 같다. 총 4장의 영상을 캡처했다. 너무 길어서 뒷부분이 잘렸지만 파노라마 영상이 잘 출력되었다. 그리고 검은색 영역을 제거하는 버튼을 클릭했다. 검은색 영역을 제거하고 이어서 봉합을 해주었다. 근데 영상을 보니 전보다 더 거무스름해 보인다...
이어서 3번 문제부터 풀어보겠다. 연습문제 풀기 두 번째 문제 3번프로그램 6-3에 대해 다음 내용을 답하시오.(1) 이 프로그램은 버튼 → 버튼 → 버튼 순으로 클릭하면 제대로 실행된다. 하지만 버튼 → 버튼 순서로 클릭하면 오류가 발생한다. 오류 메시지를 제시하고 이유를 설명하시오.(2) 오류를 방지할 방법을 구상하고 프로그램을 개선하시오. 원래 코드 사진을 하나 저장하고 이 이미지를 불러왔다. 이제 문제를 풀어보자. (1) 버튼 → 버튼 → 버튼 순으로 클릭하면 제대로 실행되지만 버튼 → 버튼 순서로 클릭하면 오류가 발생한다. 오류 메시지를 제시하고 이유를 설명하기 정말로 파일 버튼을 누른 다음 페인트를 하지 않고 오림 버튼을 누르자 다음과 같은 오류가 발생했다...
새벽에만 컴퓨터 비전 공부를 하고 아침에는 다른 공부를 하느라 하지 못했다. 이제 오후에 3시간 정도 공부를 해볼 생각이다. 연습문제는 2시간 만에 풀어보고 나머지 한 시간은 7단원 진도를 나가봐야지. 연습문제 풀기 문제 1번프로그램 6-1은 삑 소리만 낼 수 있다. winsound 모듈이 제공하는 여러 가지 소리를 낼 수 있게 메뉴를 확장하시오.▶ 힌트 : winsound.PlaySound 함수를 이용한다. 문제 풀기winsound.PlaySound를 사용하면 더 다양한 소리를 재생할 수 있다. winsound.SND_ALIAS 옵션을 사용하여 시스템 기본 소리를 호출하거나, 파일 경로를 지정해 특정 음원을 재생할 수 있다. 아래 코드는 버튼을 추가해 다양한 소리를 재생하도록 확장한 예시이다..