Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Translate assignment1 to assignment1-kore + trans.md #20

Merged
merged 6 commits into from
Apr 10, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 42 additions & 51 deletions assignments2016/assignment1.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,88 +3,79 @@ layout: page
mathjax: true
permalink: /assignments2016/assignment1/
---
이번 숙제에서 여러분은 간단한 이미지 분류 파이프라인을 k-Nearest neighbor 또는 SVM/Softmax 분류기에 기반하여 넣는 방법을 연습할 수 있습니다. 이번 숙제의 목표는 다음과 같습니다.

In this assignment you will practice putting together a simple image classification pipeline, based on the k-Nearest Neighbor or the SVM/Softmax classifier. The goals of this assignment are as follows:
- **이미지 분류 파이프라인**의 기초와 데이터기반 접근법에 대해 이해합니다.
- 학습/확인/테스트의 분할과 **초모수 튜닝**를 위해 검증 데이터를 사용하는 것에 관해 이해합니다.
- 효율적으로 작성된 **벡터화**된 numpy 코드로 proficiency을 나타나게 합니다.
- k-Nearest Neighbor (**kNN**) 분류기를 구현하고 적용해봅니다.
- Multiclass Support Vector Machine (**SVM**) 분류기를 구현하고 적용해봅니다.
- **Softmax** 분류기를 구현하고 적용해봅니다.
- **Two layer neural network** 분류기를 구현하고 적용해봅니다.
- 위 분류기들의 장단점과 차이에 대해 이해합니다.
- 성능향상을 위해 단순히 이미지 픽셀(화소)보다 더 고차원의 표현(**higher-level representations**)을 사용하는 이유에 관하여 이해합니다. (색상 히스토그램, 그라데이션의 히스토그램(HOG) 특징)

- understand the basic **Image Classification pipeline** and the data-driven approach (train/predict stages)
- understand the train/val/test **splits** and the use of validation data for **hyperparameter tuning**.
- develop proficiency in writing efficient **vectorized** code with numpy
- implement and apply a k-Nearest Neighbor (**kNN**) classifier
- implement and apply a Multiclass Support Vector Machine (**SVM**) classifier
- implement and apply a **Softmax** classifier
- implement and apply a **Two layer neural network** classifier
- understand the differences and tradeoffs between these classifiers
- get a basic understanding of performance improvements from using **higher-level representations** than raw pixels (e.g. color histograms, Histogram of Gradient (HOG) features)
## 설치
여러분은 다음 두가지 방법으로 숙제를 시작할 수 있습니다: Terminal.com을 이용한 가상 환경 또는 로컬 환경.

## Setup
You can work on the assignment in one of two ways: locally on your own machine, or on a virtual machine through Terminal.com.
### Termianl에서의 가상 환경.
Terminal에는 우리의 수업을 위한 서브도메인이 만들어져 있습니다. [www.stanfordterminalcloud.com](https://www.stanfordterminalcloud.com) 계정을 등록하세요. 이번 숙제에 대한 스냅샷은 [여기](https://www.stanfordterminalcloud.com/snapshot/49f5a1ea15dc424aec19155b3398784d57c55045435315ce4f8b96b62819ef65)에서 찾아볼 수 있습니다. 만약 수업에 등록되었다면, TA(see Piazza for more information)에게 이 수업을 위한 Terminal 예산을 요구할 수 있습니다. 처음 스냅샷을 실행시키면, 수업을 위한 모든 것이 설치되어 있어서 바로 숙제를 시작할 수 있습니다. [여기](/terminal-tutorial)에 Terminal을 위한 간단한 튜토리얼을 작성해 뒀습니다.

### Working in the cloud on Terminal
### 로컬 환경
[여기](http://vision.stanford.edu/teaching/cs231n/winter1516_assignment1.zip)에서 압축파일을 다운받고 다음을 따르세요.

Terminal has created a separate subdomain to serve our class, [www.stanfordterminalcloud.com](https://www.stanfordterminalcloud.com). Register your account there. The Assignment 1 snapshot can then be found [here](https://www.stanfordterminalcloud.com/snapshot/49f5a1ea15dc424aec19155b3398784d57c55045435315ce4f8b96b62819ef65). If you're registered in the class you can contact the TA (see Piazza for more information) to request Terminal credits for use on the assignment. Once you boot up the snapshot everything will be installed for you, and you'll be ready to start on your assignment right away. We've written a small tutorial on Terminal [here](/terminal-tutorial).
**[선택 1] Use Anaconda:**
과학, 수학, 공학, 데이터 분석을 위한 다양하고 유명한 패키지들을 담고있는 [Anaconda](https://www.continuum.io/downloads)를 사용하여 설치하는 것이 즐겨 쓰이는 방법입니다. 설치가 다 되면 모든 요구사항을 넘기고 바로 숙제를 시작해도 좋습니다.

### Working locally
Get the code as a zip file [here](http://vision.stanford.edu/teaching/cs231n/winter1516_assignment1.zip). As for the dependencies:

**[Option 1] Use Anaconda:**
The preferred approach for installing all the assignment dependencies is to use [Anaconda](https://www.continuum.io/downloads), which is a Python distribution that includes many of the most popular Python packages for science, math, engineering and data analysis. Once you install it you can skip all mentions of requirements and you're ready to go directly to working on the assignment.

**[Option 2] Manual install, virtual environment:**
If you'd like to (instead of Anaconda) go with a more manual and risky installation route you will likely want to create a [virtual environment](http://docs.python-guide.org/en/latest/dev/virtualenvs/) for the project. If you choose not to use a virtual environment, it is up to you to make sure that all dependencies for the code are installed globally on your machine. To set up a virtual environment, run the following:
**[선택 2] Manual install, virtual environment:**
만약 Anaconda 대신 좀 더 일반적이고 위험한 방법을 택하고 싶다면 프로젝트를 위한 [virtual environment](http://docs.python-guide.org/en/latest/dev/virtualenvs/)를 만들 수 있습니다. 만약 virtual environment를 사용하지 않는다면 모든 코드가 컴퓨터에 전역적으로 종속되게 설치됩니다. virtual environment의 설정은 아래를 참조하세요.

~~~bash
cd assignment1
sudo pip install virtualenv # This may already be installed
virtualenv .env # Create a virtual environment
source .env/bin/activate # Activate the virtual environment
pip install -r requirements.txt # Install dependencies
sudo pip install virtualenv # 아마 먼저 설치되어 있을 겁니다.
virtualenv .env # virtual environment를 만듭니다.
source .env/bin/activate # virtual environment를 활성화 합니다.
pip install -r requirements.txt # dependencies 설치합니다.
# Work on the assignment for a while ...
deactivate # Exit the virtual environment
deactivate # virtual environment를 종료합니다.
~~~

**Download data:**
Once you have the starter code, you will need to download the CIFAR-10 dataset.
Run the following from the `assignment1` directory:
먼저 숙제를 시작하기전에 CIFAR-10 dataset를 다운로드해야 합니다. 아래를 `assignment1` 폴더에서 실행하세요:

~~~bash
cd cs231n/datasets
./get_datasets.sh
~~~

**Start IPython:**
After you have the CIFAR-10 data, you should start the IPython notebook server from the
`assignment1` directory. If you are unfamiliar with IPython, you should read our
[IPython tutorial](/ipython-tutorial).
CIFAR-10 data를 받았다면, `assignment1` 폴더의 IPython notebook server를 시작할 수 있습니다. IPython에 친숙하지 않다면 작성해둔 [IPython tutorial](/ipython-tutorial)를 읽어보는 것을 권장합니다.

**NOTE:** OSX에서 virtual environment를 실행하면, matplotlib 에러가 날 수 있습니다([이 문제에 관한 이슈](http://matplotlib.org/faq/virtualenv_faq.html)). IPython server를 `assignment1`폴더의 `start_ipython_osx.sh`라고 실행하면 이 문제를 피해갈 수 있습니다; 이 스크립트는 virtual environment가 `.env`라고 되어있다고 가정하고 작성되었습니다.

**NOTE:** If you are working in a virtual environment on OSX, you may encounter
errors with matplotlib due to the [issues described here](http://matplotlib.org/faq/virtualenv_faq.html). You can work around this issue by starting the IPython server using the `start_ipython_osx.sh` script from the `assignment1` directory; the script assumes that your virtual environment is named `.env`.
### 과제 제출:
로컬 환경이나 Terminal에서 숙제를 마쳤다면 `collectSubmission.sh`스크립트를 실행합니다; 이 스크립트는 `assignment1.zip`파일을 만듭니다. 이 파일을 [the coursework](https://coursework.stanford.edu/portal/site/W16-CS-231N-01/)에 업로드하세요.

### Submitting your work:
Whether you work on the assignment locally or using Terminal, once you are done
working run the `collectSubmission.sh` script; this will produce a file called
`assignment1.zip`. Upload this file to your dropbox on
[the coursework](https://coursework.stanford.edu/portal/site/W16-CS-231N-01/)
page for the course.

### Q1: k-Nearest Neighbor classifier (20 points)
### Q1: k-Nearest Neighbor 분류기 (20 points)

The IPython Notebook **knn.ipynb** will walk you through implementing the kNN classifier.
IPython Notebook **knn.ipynb**이 kNN 분류기를 구현하는 것을 안내합니다.

### Q2: Training a Support Vector Machine (25 points)
### Q2: Support Vector Machine 훈련 (25 points)

The IPython Notebook **svm.ipynb** will walk you through implementing the SVM classifier.
IPython Notebook **svm.ipynb**이 SVM 분류기를 구현하는 것을 안내합니다.

### Q3: Implement a Softmax classifier (20 points)
### Q3: Softmax 분류기 실행하기 (20 points)

The IPython Notebook **softmax.ipynb** will walk you through implementing the Softmax classifier.
IPython Notebook **softmax.ipynb**이 Softmax 분류기를 구현하는 것을 안내합니다.

### Q4: Two-Layer Neural Network (25 points)
The IPython Notebook **two_layer_net.ipynb** will walk you through the implementation of a two-layer neural network classifier.

### Q5: Higher Level Representations: Image Features (10 points)
IPython Notebook **two_layer_net.ipynb**이 two-layer neural network 분류기를 구현하는 것을 안내합니다.

The IPython Notebook **features.ipynb** will walk you through this exercise, in which you will examine the improvements gained by using higher-level representations as opposed to using raw pixel values.
### Q5: 이미지 특징을 고차원으로 표현하기 (10 points)

### Q6: Cool Bonus: Do something extra! (+10 points)
IPython Notebook **features.ipynb**을 사용하여 단순한 이미지 픽셀(화소)보다 고차원의 표현이 효과적인지 검사합니다.

Implement, investigate or analyze something extra surrounding the topics in this assignment, and using the code you developed. For example, is there some other interesting question we could have asked? Is there any insightful visualization you can plot? Or anything fun to look at? Or maybe you can experiment with a spin on the loss function? If you try out something cool we'll give you up to 10 extra points and may feature your results in the lecture.
### Q6: 추가 과제: 뭔가 더 해보세요! (+10 points)
이번 과제와 관련된 다른 것들을 작성한 코드로 분석하고 연구해보세요. 예를 들어, 질문하고 싶은 흥미로운 질문이 있나요? 통찰력 있는 시각화를 작성할 수 있나요? 아니면 다른 재미있는 살펴볼 거리가 있나요? 또는 손실 함수(loss function)을 조금씩 변형해가며 실험해볼 수도 있을 것입니다. 만약 다른 멋있는 것을 시도해본다면 추가로 10 points를 얻을 수 있고 강의에 수행한 결과가 실릴 수 있습니다.