VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS17.39%
Net Worth
0.088USD
STEEM
0.000STEEM
SBD
0.169SBD
Effective Power
5.007SP
├── Own SP
0.126SP
└── Incoming DelegationsDeleg
+4.881SP
Detailed Balance
| STEEM | ||
| balance | 0.000STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 0.126SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 4.881SP | SP |
| Effective Power | 5.007SP | SP |
| Reward SP (pending) | 0.044SP | SP |
| SBD | ||
| sbd_balance | 0.000SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.169SBD | SBD |
{
"balance": "0.000 STEEM",
"savings_balance": "0.000 STEEM",
"reward_steem_balance": "0.000 STEEM",
"vesting_shares": "204.173102 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "7939.486704 VESTS",
"sbd_balance": "0.000 SBD",
"savings_sbd_balance": "0.000 SBD",
"reward_sbd_balance": "0.169 SBD",
"conversions": []
}Account Info
| name | yskoh |
| id | 845937 |
| rank | 1,404,474 |
| reputation | 1045490925 |
| created | 2018-03-13T04:30:45 |
| recovery_account | steem |
| proxy | None |
| post_count | 2 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2018-04-24T17:51:51 |
| last_root_post | 2018-04-24T17:51:51 |
| last_vote_time | 1970-01-01T00:00:00 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.000 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.000 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 204.173102 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 7939.486704 VESTS |
| reward_vesting_balance | 89.611238 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 1970-01-01T00:00:00 |
| last_account_update | 1970-01-01T00:00:00 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 1970-01-01T00:00:00 |
| savings_sbd_last_interest_payment | 1970-01-01T00:00:00 |
{
"id": 845937,
"name": "yskoh",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8JVdjwyEjAtJDTGKXBwcNUcaZZwDxmADqCzoLYXcBmRw6ks1Zv",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6ej74BAbtW3rX37zdwp99BQvWgoLm6wCjGcTU6kuwRSNEsypDd",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7DEoPdxPzVZm3N5qkft3BgCHxhEj3ujWqdq1tUxLJtm7KhmXzG",
1
]
]
},
"memo_key": "STM7MH4EBhNHHEfaA9zS5dbt4miKQm4ZfsMB1weDDYssuDGaEUvKF",
"json_metadata": "{}",
"posting_json_metadata": "",
"proxy": "",
"last_owner_update": "1970-01-01T00:00:00",
"last_account_update": "1970-01-01T00:00:00",
"created": "2018-03-13T04:30:45",
"mined": false,
"recovery_account": "steem",
"last_account_recovery": "1970-01-01T00:00:00",
"reset_account": "null",
"comment_count": 0,
"lifetime_vote_count": 0,
"post_count": 2,
"can_vote": true,
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779093117
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779093117
},
"voting_power": 0,
"balance": "0.000 STEEM",
"savings_balance": "0.000 STEEM",
"sbd_balance": "0.000 SBD",
"sbd_seconds": "0",
"sbd_seconds_last_update": "1970-01-01T00:00:00",
"sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_sbd_balance": "0.000 SBD",
"savings_sbd_seconds": "0",
"savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
"savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_withdraw_requests": 0,
"reward_sbd_balance": "0.169 SBD",
"reward_steem_balance": "0.000 STEEM",
"reward_vesting_balance": "89.611238 VESTS",
"reward_vesting_steem": "0.044 STEEM",
"vesting_shares": "204.173102 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "7939.486704 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"withdrawn": 0,
"to_withdraw": 0,
"withdraw_routes": 0,
"curation_rewards": 0,
"posting_rewards": 88,
"proxied_vsf_votes": [
0,
0,
0,
0
],
"witnesses_voted_for": 0,
"last_post": "2018-04-24T17:51:51",
"last_root_post": "2018-04-24T17:51:51",
"last_vote_time": "1970-01-01T00:00:00",
"post_bandwidth": 0,
"pending_claimed_accounts": 0,
"vesting_balance": "0.000 STEEM",
"reputation": 1045490925,
"transfer_history": [],
"market_history": [],
"post_history": [],
"vote_history": [],
"other_history": [],
"witness_votes": [],
"tags_usage": [],
"guest_bloggers": [],
"rank": 1404474
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
2026/05/18 08:31:57
2026/05/18 08:31:57
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 7939.486704 VESTS |
| Transaction Info | Block #106153343/Trx cc3594c214d9acb175f53f0a70cfad2202a16ff0 |
View Raw JSON Data
{
"block": 106153343,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "7939.486704 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2026-05-18T08:31:57",
"trx_id": "cc3594c214d9acb175f53f0a70cfad2202a16ff0",
"trx_in_block": 0,
"virtual_op": 0
}2026/05/13 13:30:21
2026/05/13 13:30:21
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 5227.276299 VESTS |
| Transaction Info | Block #106016019/Trx ebf8b90026e1a9e1ebe9a6f1af29daaeeb4fc8f7 |
View Raw JSON Data
{
"block": 106016019,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "5227.276299 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2026-05-13T13:30:21",
"trx_id": "ebf8b90026e1a9e1ebe9a6f1af29daaeeb4fc8f7",
"trx_in_block": 1,
"virtual_op": 0
}2026/04/26 07:40:27
2026/04/26 07:40:27
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 7952.002460 VESTS |
| Transaction Info | Block #105520764/Trx 1c77166dc91337a60c5b1f8d1e2530787b3172b1 |
View Raw JSON Data
{
"block": 105520764,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "7952.002460 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2026-04-26T07:40:27",
"trx_id": "1c77166dc91337a60c5b1f8d1e2530787b3172b1",
"trx_in_block": 2,
"virtual_op": 0
}2026/01/24 06:04:33
2026/01/24 06:04:33
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 5268.823118 VESTS |
| Transaction Info | Block #102878485/Trx 2d037c36cd51a10887d0a0c6a5f742654f0558b6 |
View Raw JSON Data
{
"block": 102878485,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "5268.823118 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2026-01-24T06:04:33",
"trx_id": "2d037c36cd51a10887d0a0c6a5f742654f0558b6",
"trx_in_block": 3,
"virtual_op": 0
}2024/12/18 01:13:24
2024/12/18 01:13:24
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 5433.042315 VESTS |
| Transaction Info | Block #91324679/Trx 4fcaca2b94182e4dfde80eccb86c84f63e112f9e |
View Raw JSON Data
{
"block": 91324679,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "5433.042315 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2024-12-18T01:13:24",
"trx_id": "4fcaca2b94182e4dfde80eccb86c84f63e112f9e",
"trx_in_block": 0,
"virtual_op": 0
}2023/11/14 16:52:51
2023/11/14 16:52:51
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 5602.175847 VESTS |
| Transaction Info | Block #79878783/Trx b69f1d901d1fdf657787eab67788cc1098664f6a |
View Raw JSON Data
{
"block": 79878783,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "5602.175847 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2023-11-14T16:52:51",
"trx_id": "b69f1d901d1fdf657787eab67788cc1098664f6a",
"trx_in_block": 7,
"virtual_op": 0
}2023/09/22 13:03:27
2023/09/22 13:03:27
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 8539.084633 VESTS |
| Transaction Info | Block #78366055/Trx 0d60d295a812e6e2989001d7a838369d054684b5 |
View Raw JSON Data
{
"block": 78366055,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "8539.084633 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2023-09-22T13:03:27",
"trx_id": "0d60d295a812e6e2989001d7a838369d054684b5",
"trx_in_block": 3,
"virtual_op": 0
}2022/11/03 20:10:03
2022/11/03 20:10:03
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 8761.136071 VESTS |
| Transaction Info | Block #69123372/Trx a4a6c0429445f2d3861c5de08b1144c60ce0a877 |
View Raw JSON Data
{
"block": 69123372,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "8761.136071 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2022-11-03T20:10:03",
"trx_id": "a4a6c0429445f2d3861c5de08b1144c60ce0a877",
"trx_in_block": 2,
"virtual_op": 0
}2022/01/18 01:08:42
2022/01/18 01:08:42
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 8981.243672 VESTS |
| Transaction Info | Block #60826356/Trx 77c2f1dec9539f9525f65e2d98f6735034492582 |
View Raw JSON Data
{
"block": 60826356,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "8981.243672 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2022-01-18T01:08:42",
"trx_id": "77c2f1dec9539f9525f65e2d98f6735034492582",
"trx_in_block": 29,
"virtual_op": 0
}2021/06/14 08:14:09
2021/06/14 08:14:09
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 9165.437960 VESTS |
| Transaction Info | Block #54616564/Trx a5f9ecc9f2fe223acc5ec521b86bdd76a9fca875 |
View Raw JSON Data
{
"block": 54616564,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "9165.437960 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2021-06-14T08:14:09",
"trx_id": "a5f9ecc9f2fe223acc5ec521b86bdd76a9fca875",
"trx_in_block": 1,
"virtual_op": 0
}2020/12/11 18:24:06
2020/12/11 18:24:06
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 9352.859934 VESTS |
| Transaction Info | Block #49363753/Trx 7f296068dcb374cd63fdd0e12cfcbef4f29884ba |
View Raw JSON Data
{
"block": 49363753,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "9352.859934 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-11T18:24:06",
"trx_id": "7f296068dcb374cd63fdd0e12cfcbef4f29884ba",
"trx_in_block": 2,
"virtual_op": 0
}2020/12/06 11:59:03
2020/12/06 11:59:03
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 1912.543513 VESTS |
| Transaction Info | Block #49215265/Trx cc92dfba6d4ca8d1bcd3eafa1294d4280d8617ca |
View Raw JSON Data
{
"block": 49215265,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "1912.543513 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-06T11:59:03",
"trx_id": "cc92dfba6d4ca8d1bcd3eafa1294d4280d8617ca",
"trx_in_block": 1,
"virtual_op": 0
}2020/12/05 22:01:48
2020/12/05 22:01:48
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 9359.067788 VESTS |
| Transaction Info | Block #49198834/Trx 1a264c9f1269540e638e15ccfa78785441da50eb |
View Raw JSON Data
{
"block": 49198834,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "9359.067788 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-12-05T22:01:48",
"trx_id": "1a264c9f1269540e638e15ccfa78785441da50eb",
"trx_in_block": 0,
"virtual_op": 0
}2020/11/03 06:43:03
2020/11/03 06:43:03
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 1920.017158 VESTS |
| Transaction Info | Block #48275556/Trx b16e2838677d686c7936103a36c8933186fd1e36 |
View Raw JSON Data
{
"block": 48275556,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "1920.017158 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-11-03T06:43:03",
"trx_id": "b16e2838677d686c7936103a36c8933186fd1e36",
"trx_in_block": 3,
"virtual_op": 0
}2020/05/09 13:04:12
2020/05/09 13:04:12
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 9561.873147 VESTS |
| Transaction Info | Block #43225626/Trx d6e389b3985eb04e2bf737d31f78d31037aaa9a6 |
View Raw JSON Data
{
"block": 43225626,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "9561.873147 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-05-09T13:04:12",
"trx_id": "d6e389b3985eb04e2bf737d31f78d31037aaa9a6",
"trx_in_block": 2,
"virtual_op": 0
}2020/05/08 17:46:36
2020/05/08 17:46:36
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #43203015/Trx 389d4786ac613b87713ab6029aea4574a8cda8c2 |
View Raw JSON Data
{
"block": 43203015,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "1953.311140 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2020-05-08T17:46:36",
"trx_id": "389d4786ac613b87713ab6029aea4574a8cda8c2",
"trx_in_block": 29,
"virtual_op": 0
}2020/03/13 05:19:39
2020/03/13 05:19:39
| author | steemitboard |
| body | Congratulations @yskoh! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@yskoh/birthday2.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@yskoh) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=yskoh)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemitboard/@steemitboard/downvote-challenge-add-up-to-3-funny-badges-to-your-board"><img src="https://steemitimages.com/64x128/https://steemitimages.com/0x0/"></a></td><td><a href="https://steemit.com/steemitboard/@steemitboard/downvote-challenge-add-up-to-3-funny-badges-to-your-board">Downvote challenge - Add up to 3 funny badges to your board</a></td></tr></table> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| parent author | yskoh |
| parent permlink | mit-6-s191-2 |
| permlink | steemitboard-notify-yskoh-20200313t051939000z |
| title | |
| Transaction Info | Block #41607094/Trx fa09b17a9b0afe4f9439a1ced84be01560545123 |
View Raw JSON Data
{
"block": 41607094,
"op": [
"comment",
{
"author": "steemitboard",
"body": "Congratulations @yskoh! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@yskoh/birthday2.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@yskoh) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=yskoh)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemitboard/@steemitboard/downvote-challenge-add-up-to-3-funny-badges-to-your-board\"><img src=\"https://steemitimages.com/64x128/https://steemitimages.com/0x0/\"></a></td><td><a href=\"https://steemit.com/steemitboard/@steemitboard/downvote-challenge-add-up-to-3-funny-badges-to-your-board\">Downvote challenge - Add up to 3 funny badges to your board</a></td></tr></table>\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
"parent_author": "yskoh",
"parent_permlink": "mit-6-s191-2",
"permlink": "steemitboard-notify-yskoh-20200313t051939000z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2020-03-13T05:19:39",
"trx_id": "fa09b17a9b0afe4f9439a1ced84be01560545123",
"trx_in_block": 10,
"virtual_op": 0
}2019/07/13 06:45:24
2019/07/13 06:45:24
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 9734.609073 VESTS |
| Transaction Info | Block #34619180/Trx e847fa92705a34b779d220672aa8936080de99b2 |
View Raw JSON Data
{
"block": 34619180,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "9734.609073 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2019-07-13T06:45:24",
"trx_id": "e847fa92705a34b779d220672aa8936080de99b2",
"trx_in_block": 24,
"virtual_op": 0
}2019/03/13 15:22:36
2019/03/13 15:22:36
| author | steemitboard |
| body | Congratulations @yskoh! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@yskoh/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@yskoh) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=yskoh)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmYGN7R653u4hDFyq1hM7iuhr2bdAP1v2ApACDNtecJAZ5/image.png"></a></td><td><a href="https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter">Are you a DrugWars early adopter? Benvenuto in famiglia!</a></td></tr></table> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| parent author | yskoh |
| parent permlink | mit-6-s191-2 |
| permlink | steemitboard-notify-yskoh-20190313t152236000z |
| title | |
| Transaction Info | Block #31120674/Trx 2706d26dd9d37bc80487b9fbad08393f67a64470 |
View Raw JSON Data
{
"block": 31120674,
"op": [
"comment",
{
"author": "steemitboard",
"body": "Congratulations @yskoh! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@yskoh/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@yskoh) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=yskoh)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter\"><img src=\"https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmYGN7R653u4hDFyq1hM7iuhr2bdAP1v2ApACDNtecJAZ5/image.png\"></a></td><td><a href=\"https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter\">Are you a DrugWars early adopter? Benvenuto in famiglia!</a></td></tr></table>\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
"parent_author": "yskoh",
"parent_permlink": "mit-6-s191-2",
"permlink": "steemitboard-notify-yskoh-20190313t152236000z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-03-13T15:22:36",
"trx_id": "2706d26dd9d37bc80487b9fbad08393f67a64470",
"trx_in_block": 4,
"virtual_op": 0
}2018/07/24 18:49:27
2018/07/24 18:49:27
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 9933.401125 VESTS |
| Transaction Info | Block #24463820/Trx 19a635e976631531921a29898d2c8993b1d2da87 |
View Raw JSON Data
{
"block": 24463820,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "9933.401125 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2018-07-24T18:49:27",
"trx_id": "19a635e976631531921a29898d2c8993b1d2da87",
"trx_in_block": 39,
"virtual_op": 0
}2018/07/18 10:05:06
2018/07/18 10:05:06
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 30218.761689 VESTS |
| Transaction Info | Block #24280656/Trx a6f05e6925007941ebada32a266600e56fe40e3f |
View Raw JSON Data
{
"block": 24280656,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "30218.761689 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2018-07-18T10:05:06",
"trx_id": "a6f05e6925007941ebada32a266600e56fe40e3f",
"trx_in_block": 7,
"virtual_op": 0
}sunshine-mlupvoted (100.00%) @yskoh / mit-6-s191-22018/07/10 01:53:33
sunshine-mlupvoted (100.00%) @yskoh / mit-6-s191-2
2018/07/10 01:53:33
| author | yskoh |
| permlink | mit-6-s191-2 |
| voter | sunshine-ml |
| weight | 10000 (100.00%) |
| Transaction Info | Block #24040546/Trx ddcc51362ce22712aad30874d83cd18138d2df66 |
View Raw JSON Data
{
"block": 24040546,
"op": [
"vote",
{
"author": "yskoh",
"permlink": "mit-6-s191-2",
"voter": "sunshine-ml",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-07-10T01:53:33",
"trx_id": "ddcc51362ce22712aad30874d83cd18138d2df66",
"trx_in_block": 21,
"virtual_op": 0
}yskohreceived 0.142 SBD, 0.044 SP author reward for @yskoh / mit-6-s191-22018/05/01 17:51:51
yskohreceived 0.142 SBD, 0.044 SP author reward for @yskoh / mit-6-s191-2
2018/05/01 17:51:51
| author | yskoh |
| permlink | mit-6-s191-2 |
| sbd payout | 0.142 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 71.275715 VESTS |
| Transaction Info | Block #22055023/Virtual Operation #18 |
View Raw JSON Data
{
"block": 22055023,
"op": [
"author_reward",
{
"author": "yskoh",
"permlink": "mit-6-s191-2",
"sbd_payout": "0.142 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "71.275715 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2018-05-01T17:51:51",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": 18
}hr1upvoted (0.02%) @yskoh / mit-6-s191-22018/04/24 18:21:42
hr1upvoted (0.02%) @yskoh / mit-6-s191-2
2018/04/24 18:21:42
| author | yskoh |
| permlink | mit-6-s191-2 |
| voter | hr1 |
| weight | 2 (0.02%) |
| Transaction Info | Block #21854131/Trx f59d1dd918be4acb14e83887ebc583dba3978459 |
View Raw JSON Data
{
"block": 21854131,
"op": [
"vote",
{
"author": "yskoh",
"permlink": "mit-6-s191-2",
"voter": "hr1",
"weight": 2
}
],
"op_in_trx": 0,
"timestamp": "2018-04-24T18:21:42",
"trx_id": "f59d1dd918be4acb14e83887ebc583dba3978459",
"trx_in_block": 14,
"virtual_op": 0
}followbackbotreplied to @yskoh / followbackbot-re-yskohmit-6-s191-22018/04/24 18:02:27
followbackbotreplied to @yskoh / followbackbot-re-yskohmit-6-s191-2
2018/04/24 18:02:27
| author | followbackbot |
| body | **Hey @yskoh, want free resteems? All ya gotta do is follow me...** |
| json metadata | |
| parent author | yskoh |
| parent permlink | mit-6-s191-2 |
| permlink | followbackbot-re-yskohmit-6-s191-2 |
| title | |
| Transaction Info | Block #21853748/Trx f1e800128a23fbd7a79e27159d06f932f4d09aca |
View Raw JSON Data
{
"block": 21853748,
"op": [
"comment",
{
"author": "followbackbot",
"body": "**Hey @yskoh, want free resteems? All ya gotta do is follow me...**",
"json_metadata": "",
"parent_author": "yskoh",
"parent_permlink": "mit-6-s191-2",
"permlink": "followbackbot-re-yskohmit-6-s191-2",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2018-04-24T18:02:27",
"trx_id": "f1e800128a23fbd7a79e27159d06f932f4d09aca",
"trx_in_block": 67,
"virtual_op": 0
}followbackbotupvoted (1.00%) @yskoh / mit-6-s191-22018/04/24 18:02:27
followbackbotupvoted (1.00%) @yskoh / mit-6-s191-2
2018/04/24 18:02:27
| author | yskoh |
| permlink | mit-6-s191-2 |
| voter | followbackbot |
| weight | 100 (1.00%) |
| Transaction Info | Block #21853748/Trx 44802446b603b77d9240dd1fadbfe7f5c994dfe6 |
View Raw JSON Data
{
"block": 21853748,
"op": [
"vote",
{
"author": "yskoh",
"permlink": "mit-6-s191-2",
"voter": "followbackbot",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2018-04-24T18:02:27",
"trx_id": "44802446b603b77d9240dd1fadbfe7f5c994dfe6",
"trx_in_block": 23,
"virtual_op": 0
}ax3upvoted (1.00%) @yskoh / mit-6-s191-22018/04/24 17:52:03
ax3upvoted (1.00%) @yskoh / mit-6-s191-2
2018/04/24 17:52:03
| author | yskoh |
| permlink | mit-6-s191-2 |
| voter | ax3 |
| weight | 100 (1.00%) |
| Transaction Info | Block #21853541/Trx 9941cd8d0f7f09a5f37dc14e4f0ebbcb02d3d9e0 |
View Raw JSON Data
{
"block": 21853541,
"op": [
"vote",
{
"author": "yskoh",
"permlink": "mit-6-s191-2",
"voter": "ax3",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2018-04-24T17:52:03",
"trx_id": "9941cd8d0f7f09a5f37dc14e4f0ebbcb02d3d9e0",
"trx_in_block": 24,
"virtual_op": 0
}yskohpublished a new post: mit-6-s191-22018/04/24 17:51:51
yskohpublished a new post: mit-6-s191-2
2018/04/24 17:51:51
| author | yskoh |
| body | <html> <p> <del>[저 세상 정리]는 내 맘대로 이해한 강의 내용을 내 맘대로 정리하는 post이므로 매우 부정확할 수 있음</del><br> </p> <p><br></p> <p> MIT 6.S191 Introduction to Deep Learning #2</p> <p><br></p> <p>두 번째 강의 내용은 sequential data를 처리하는데 적합한 network를 소개한다. 우선 sequential data의 특징을 알아보자. Sequential data는 example 하나당 data의 수가 다양하고 각 data는 서로 복잡하게 연관되어 있다. 우리가 쓰는 문장이나 음성의 wave form이 sequential data에 속한다. </p> <p><br></p> <p>그렇다면 sequence modeling은 어떻게 할까. 예시를 통해 sequence modeling이 얼마나 까다로운지 알아보자.</p> <p>"This morning I took the dog for a walk."</p> <p>이런 문장이 있는데 여기서 "This morning I took the dog for a" 까지만 주어지고 그 후에 올 단어("walk")를 예측하려면 어떡해야 할까. 이전 시간에 배웠던 NN을 생각해보면 network의 input size는 고정되어 있어야 한다. 즉 modeling을 할때 fixed length로 지정해줘야 한다. 하지만 위의 문장은 예시일 뿐이고 input으로 들어올 문장의 길이는 다양하기 때문에 이런 variable length input을 fixed length vector로 변환하는 것이 필요하다.</p> <p>하나의 방법은 fixed window를 사용하는 것이다. 예를 들면 위의 예시 문장에서 "for a" (크기 2의 window)만 보고 "walk"를 예측하는 것이다.</p> <p><center> https://steemitimages.com/DQmenDnEQshV9C5J8af9KktsjbUZq2Rwb2TNLSfeYT3m95Z/01.PNG</center></p> <p>이런 방법을 사용하면 어떤 단어든 fixed length vector로 나타낼 수 있기 때문에 feed-forward network에 사용할 수 있다. 하지만 문제점이 있다. 다음 문장을 보자.</p> <p>"In France, I had a great time and I learnt some of the ______ language."</p> <p>빈칸에 들어갈 단어를 추론하기 위해서는 문장 맨 앞에서 정보를 얻어야한다. 하지만 fixed window를 사용한다면.. 한계점이 분명히 보인다. Fixed window를 사용하면 fixed length vector를 만들 수는 있지만 위의 예시처럼 오래 전(?)의 정보는 사용할 수 없게 된다. 이런 문제를 problem of long-term dependency라고 한다. </p> <p>자, 그럼 다시, fixed length vector는 필요한데... fixed window는 별로다, sequence의 모든 정보를 활용하고 싶다! 그럼 fixed window 말고 그냥 sequence 전체를 써보자! 근데 어떻게?</p> <p><center> https://steemitimages.com/DQmYQhGRb9RYfo2LVgUoYdcjtsmY6bUfk1ZxUXmey9F3qmr/02.PNG </center></p> <p>방법은 간단하다. "Bag of Words"라는 방법인데, 각 단어들이 그 문장 안에 얼마나 있는지 카운팅하는 것이다. 위의 벡터를 보면 각 slot은 단어를 의미하고 slot 내의 숫자는 그 단어의 출현 빈도를 나타낸다. 이 방법을 사용하면 단어 수에 상관없이, 즉 문장의 길이에 상관 없이 fixed length vector를 만들 수 있고 문장 전체를 활용할 수 있다. 하지만..bag of words는 sequence의 순서를 반영할 수 없다. 이는 sequential data를 다루는데 큰 문제로 작용할 수 있다.</p> <p>"The food was good, not bad at all." vs "The food was bad, not good at all."</p> <p>위 두 문장을 보면 완전 정 반대의 뜻이다. 근데 문장을 구성하는 단어의 종류와 그 수가 똑같기 때문에 완전히 동일한 bag of word를 갖는다. </p> <p>자, 다시.....sequence의 순서도 놓치고 싶지 않고 sequence를 통으로 이용하고 싶기 때문에 fixed window도 싫다.</p> <p>그럼 좀 절충안으로 좀 큰 window를 사용하는건..? a really big fixed window!!</p> <p><center> https://steemitimages.com/DQmYSE8tM8tsGC5i7W3uGSbkaGPUZKzppiwQpVkJx5HKB6E/03.PNG </center></p> <p>위 예시에서 크기 7의 window를 사용했는데 문장 길이를 고려하면 big window가 맞다. 아무튼 그 어느 문장이 와도 big enough한 fixed window를 쓴다고 해보자. 그래도 문제는 생기..ㄴ.....<del>쒸익쒸익</del></p> <p><center> https://steemitimages.com/DQmXMVcTmi7bZMF2nJFqQgmPFEasSQg52Ja4SWhfL1jQrBi/04.PNG </center></p> <p>문장 구조상 this morning은 문장 앞에 올 수도 있고 문장 뒤에 올 수도 있다. 문제는 this morning이 문장 앞에 오나 뒤에 오나 의미는 같은데 network는 그걸 모른다. 왜냐...vector의 앞 부분에 연결된 뉴런(weight)와 vector 뒷 부분에 연결된 뉴런(weight)가 서로 공유되지 않기 때문이다. 무슨 말이냐면, 만약에 this morning이 주로 문장 앞에 위치하면 network 입장에서는 this morning이 뒤에 있는 문장을 본 적이 없을 것이다. 따라서 this morning이 뒤에 위치한 문장을 받았을 때 전혀 새로운 문장으로 인식할 것이다. 일반화 시켜서 표현을 해보자면, network가 어떤 sequence를 학습했는데 weight가 서로 공유되지 않으면 sequence내 data의 순서가 뒤바뀐다면 새로운 sequence로 인식할 것이다.</p> <p>위의 내용들을 정리해보면!! Sequence modeling을 위해서는<br> 1. variable-length sequence 커버 가능해야하고<br> 2. sequence 순서도 보존해야하고<br> 3. problem of long-term dependency도 해결해야하고<br> 4. sequence끼리 weight도 공유되어야함..</p> <p>그래서 해결책은!!! RNN(Recurrent Neural Networks)</p> <p> <center>https://steemitimages.com/DQmc8KNzH27EbnUk9R1kkaocfdkAeEfbTE5Nq7cU1aTRAeu/05.PNG </center></p> <p>저번 시간에 우리가 배웠던 NN은 위와 같은 구조를 갖는다. RNN도 구조는 비슷한데 핵심인 뉴런(perceptron)의 기능이 조금 다르다.</p> <p><center> https://steemitimages.com/DQmXFsH7cJYe12zDCF9hANJTWQpm3z6XJTUyQXZCJxYbStd/06.PNG</center></p> <p>위 그림은 RNN cell(뉴런)의 기능을 도식화한 것이다. Sequential data이기 때문에 time step '<em>t</em>'가 있는데, 위 그림은 초기 <em>t=0</em> 일 때를 나타낸다. 다음 그림을 이어서 보자.</p> <p><center>https://steemitimages.com/DQmSKVcnoifk632BiQLXqDtR9HtPoSTFJZ5bExSKuwwmYqs/07.PNG </center></p> <p>새로운 input으로 <em>x_1</em>이 들어오고 방금과 같은 과정을 거쳐 다음 time step으로 <em>s_2</em>를 전달한다. 눈썰미가 좋다면 눈치챘을 사실! Sequential data이기 때문에 time step이 있다고 했고, 그에 따라 모든 notation에는 time step이 sub로 표기된다. 단 <em>W</em>와 <em>U</em>만 제외하고.. <em>W</em>와 <em>U</em>는 모두 weight matrix를 뜻하는데, time notation이 없다는 것은! 모든 time step에서 동일한 <em>W</em>와 <em>U</em>를 공유한다는 뜻이다. (parameter sharing)</p> <p>주목할 점은 또 있다. 다음 time step으로 cell state(s)를 전달하는 과정을 보면 현재 time step에서 새로 들어온 input(x) 뿐만 아니라 현재 time step의 cell state도 같이 넘기는 것을 볼 수 있다. 정리해보면 미래의 cell state는 과거의 모든 정보를 담는다. (long-term dependency)<br> 이런 구조를 시간에 따라 unfolding 해보면...</p> <p><center> https://steemitimages.com/DQmV5TYCDTVyCDmEFFMfM7z6XCU2KGoqe676eYWo5ta5tLs/08.PNG</center></p> <p>문제를 해결했으니 학습을 시켜봅시다. 얘도 NN과 똑같이 backpropagation을 하는데 time이 추가되었으니 backpropagation through time, 줄여서 BPTT라 한다.</p> <p>우선 loss를 구해보자.</p> <p><center> https://steemitimages.com/DQmZgczDo6xUK1RpWDHsemxXwMp4YF4NyqoevZvm5u27TDT/09.PNG</center></p> <p>위 그림처럼 각 time step마다 loss를 구할 수 있고, 그들을 다 합친 것이 total loss이다. Gradient도 마찬가지다. 각 time step마다 gradient를 구하고 모두 합하면 total gradient가 된다. 다음 그림을 보고 chain rule을 사용하여 <em>W</em>에 대한 time step <em>t</em>에서의 gradient를 구하는 과정을 알아보자.</p> <p><center> https://steemitimages.com/DQmRmATC3cVoGNKznA8hHHE5sRQnnAA11qvMwvTRS1L7hU3/10.png</center></p> <p>끝! 인데 끝이 아니다. (!?) RNN의 chain rule은 그리 간단하지 않다...ㅜ 다음 그림..</p> <p><center> https://steemitimages.com/DQmXJAh4X3z8iAiaykQ9FQ2t5BSTAKjdJqRQmrrcLStG5XP/11.PNG </center></p> <p>끝인 줄 알았지만 안 끝난 이유는 다음과 같다. <em>s_2</em>는 <em>s_1</em>과 연관이 있고 <em>s_1</em>은 또 <em>W</em>와 연관되어 있다. 다 얽히고 설켜서 chain rule을 위와 같이 끝내면 안되고, <em>s_2</em>와 <em>W</em>의 관계를 다시 chain rule을 이용하여 풀어줘야 한다.</p> <p><center> https://steemitimages.com/DQmcrmooB4q3rZdxWzYEh9PiQ5bZjtFF7VMjNkMNp9yKwhw/12.png</center></p> <p>드뎌 완성.. 수식으로 일반화하여 표현하면</p> <p><center> https://steemitimages.com/DQmVHv5qwETdxGPxggirBoLgyVV5KGZKso8aoKZy74cfnbJ/13.PNG</center></p> <p>이렇게 loss를 구하고 gradient를 이용하여찾으면 global minimum을 training 끝이다. (이론상으로는...)</p> <p>RNN은 사용상의 문제점이 있다. 바로 vanishing gradient 문제다. 다음 그림을 보고 <em>s_n</em>을<em> s_0</em>로 편미분하는 것을 생각해보자.</p> <p><center> https://steemitimages.com/DQmaibQPGxnzqBFMsyXZqWRPXnapdY3YxHYSgzbmeroEZdz/14.PNG</center></p> <p>식을 보면 알겠지만 n이 커질수록 곱연산 또한 많아진다. 왜 이게 문제가 되냐! 저 곱연산에 사용되는 term 하나만 떼어와서 보면</p> <p><center> https://steemitimages.com/DQmXRW38eVL3Fr7CSahVfTjQizH7vXXu8zLTN8gV4iykutB/15.PNG</center></p> <p>이렇게 생겼는데, 이 수식이 어떻게 유도됐는지는 여기서 중요한 것이 아니고 왜 이 수식이 문제가 되느냐다. 보통의 <em>W</em>는 가우시안 분포로부터 추출되기 때문에 대부분 1보다 작은 값을 갖는다. 그리고 activation function인 f는 보통 tanh나 sigmoid를 사용하기 때문에 f'은 1보다 작은 값을 갖는다. </p> <p>다시, 전체 곱연산 수식을 보자. 위의 의미대로 저 식을 계산해보면 계속해서 1보다 작은 값을 곱하고 있는 것이고 그에 따라 결과값도 매우 작을 것이다.</p> <p>자 그러면! n과 0의 차이가 클수록(n이 커질수록) 에러가 강제로 작아진다. Backpropagation을 통해 에러를 교정해 나가야하는데 먼 과거일 수록 에러가 강제로 작아져서 교정할 수가 없게 되는 문제점이 있다. 상대적으로 가까운 과거의 에러가 크게 다가오는 것이다(short-term dependency). 결국 problem of long-term dependency 재발..</p> <p><br></p> <p>해결책 1. activation function 교체</p> <p><center> https://steemitimages.com/DQmVmQaiznNj4TGG7oqD3VsnznU3JyQDMkZWxTgKZyQ58fC/16.PNG</center></p> <p>ReLU 함수는 input <em>x</em>가 음수이면 0, 0 이상이면 <em>x</em>를 반환하는 함수다. 따라서 0보다 큰 범위에서 미분값은 1로 동일하기 때문에 vanishing gradient 문제를 해결할 수 있다.</p> <p><br></p> <p>해결책 2. weight matrix 초기화 방법</p> <p>가우시안 분포에서 추출하는 대신 identity matrix로 초기화하면 weight로 인해 gradient가 감소하는 문제를 해결할 수 있다.</p> <p><br></p> <p>해결책 3. 좀더 정교한 cell 사용</p> <p>이런 정교한 cell의 종류에는 여러가지가 있는데 LSTM(Long Short Term Memory)이나 GRU(Gated Recurrent Unit)가 대표적이다. 이 수업에서는 LSTM만 조금 다룬다. LSTM은 크게 3 부분으로 나뉜다.</p> <p><center> https://steemitimages.com/DQmTw7xKWWYDAiijho2j3o2SXyWGg2Vr1s5oGCZwSfSmHaG/17.PNG</center></p> <p>1. 이전 state에서 별로 관련 없는 부분을 잊어버리는 forget gate<br> 2. cell state를 선택적으로 update하는 input gate<br> 3. cell state의 certain part를 output하는 output gate</p> <p>1번을 착각하면 안되는 것이 무조건 잊어버리는 것이 아니라 그대로 유지할 수도 있다. 그리고 RNN에서는 cell state가 곧 output이었는데 LSTM은 그 둘이 구분이 된다.</p> <p>뭐 이정도로만 LSTM을 다루고 있다. 다음은 LSTM이 어떻게 사용되고 있는지 성공 사례를 보여주는 그림들로 마무리 한다.</p> <p>1. 트위터 감정 분석(classification)</p> <p><center> https://steemitimages.com/DQmYuWw8SYZf8Uw6qxgVGvSzW7kKFb4rAWqMajX2nJMXX84/18.PNG</center></p> <p><br></p> <p><center>https://steemitimages.com/DQmQcSybrLujLQozgnz2a8RUMj6L7YhzVLuij3bT37AtzcB/19.PNG</center></p> <p><br></p> <p>2. 음악 생성(generation)</p> <p><center>https://steemitimages.com/DQmeiZ28nqUyhwvFpveVftGE9XCV5R7YZMWU9rXjjC6sjGR/20.PNG</center></p> <p><br></p> <p>3. 번역(translation)</p> <p><center>https://steemitimages.com/DQmYhGwhjZ6zAFHyb2rBG4g1jKbhc1t4KQffhKyMYAVaqk1/21.PNG</center></p> <p>번역 문제는 조금 복잡하다. 보통 번역의 경우 두 가지의 RNN을 쓴다. 하나(왼쪽)은 인코더, 다른 하나는 디코더로 사용한다. 위 그림에서 인코더는 <em>s_2</em>를 디코더의 input으로 전달하고 있다. 즉 "the dog eats"라는 sequence를 하나의 vector로 인코딩(summarize)하여 디코더로 전달하는 것이다. 반대로 디코더의 입장에서는 input sequence의 정보로 받은 것이 fixed length vector <em>s_2</em>밖에 없다. 만약 sequence의 길이가 매우 길다면, 인코딩된 하나의 vector내에 sequence의 모든 정보를 제대로 담을 수 있을까? 이런 문제에 대안으로 나온 것이 'attention' 방법이다.</p> <p><center>https://steemitimages.com/DQmcAjb8rpZqLJ9qfE6rDe1nTBmgjovJpsetKChkoiWTevj/22.PNG</center></p> <p><br></p> <p><center>https://steemitimages.com/DQmSgZTxTYEmbXCxgsqqQbuk3fBoL5JZQRc2Wy5ADKm8fw7/23.PNG</center></p> <p><br></p> <p><center>https://steemitimages.com/DQmUhkZtPCCqDEzUhwxp9DMJbAvQLkyi5bVKukRZnwiXxbM/24.PNG</center></p> <p>Attention 방법은 인코더가 최종 cell state를 전달하는 것이 아니라 각각의 cell state를 weighted sum하여 디코더 각 cell에 전달한다. 이때 디코더의 time step에 따라 weighted sum되는 값이 달라진다. 예를 들면 t=0일때는 인코더의 t=0일 때 cell state의 weight를 가장 높게 줄 수있고 t=1일 때는 인코더의 t=3일 때의 ... 뭐 이런식으로..</p> <p>아무튼 RNN은 활용도가 굉장히 높은 모델이다. 그 근거는 수업 자료를 복붙하며 이번 포스트를 마무리...</p> <p>● extending our models to timeseries + waveforms</p> <p>● complex language models to generate long text or books</p> <p>● language models to generate code</p> <p>● controlling cars + robots</p> <p>● predicting stock market trends</p> <p>● summarizing books + articles</p> <p>● handwriting generation</p> <p>● multilingual translation models</p> <p>모든 이미지 자료는 MIT 6.S191 수업 자료에서 가져왔습니다. http://introtodeeplearning.com/</p> </html> |
| json metadata | {"tags":["deeplearning","machinelearning","dnn","rnn","s191"],"image":["https://steemitimages.com/DQmenDnEQshV9C5J8af9KktsjbUZq2Rwb2TNLSfeYT3m95Z/01.PNG","https://steemitimages.com/DQmYQhGRb9RYfo2LVgUoYdcjtsmY6bUfk1ZxUXmey9F3qmr/02.PNG","https://steemitimages.com/DQmYSE8tM8tsGC5i7W3uGSbkaGPUZKzppiwQpVkJx5HKB6E/03.PNG","https://steemitimages.com/DQmXMVcTmi7bZMF2nJFqQgmPFEasSQg52Ja4SWhfL1jQrBi/04.PNG","https://steemitimages.com/DQmc8KNzH27EbnUk9R1kkaocfdkAeEfbTE5Nq7cU1aTRAeu/05.PNG","https://steemitimages.com/DQmXFsH7cJYe12zDCF9hANJTWQpm3z6XJTUyQXZCJxYbStd/06.PNG","https://steemitimages.com/DQmSKVcnoifk632BiQLXqDtR9HtPoSTFJZ5bExSKuwwmYqs/07.PNG","https://steemitimages.com/DQmV5TYCDTVyCDmEFFMfM7z6XCU2KGoqe676eYWo5ta5tLs/08.PNG","https://steemitimages.com/DQmZgczDo6xUK1RpWDHsemxXwMp4YF4NyqoevZvm5u27TDT/09.PNG","https://steemitimages.com/DQmRmATC3cVoGNKznA8hHHE5sRQnnAA11qvMwvTRS1L7hU3/10.png","https://steemitimages.com/DQmXJAh4X3z8iAiaykQ9FQ2t5BSTAKjdJqRQmrrcLStG5XP/11.PNG","https://steemitimages.com/DQmcrmooB4q3rZdxWzYEh9PiQ5bZjtFF7VMjNkMNp9yKwhw/12.png","https://steemitimages.com/DQmVHv5qwETdxGPxggirBoLgyVV5KGZKso8aoKZy74cfnbJ/13.PNG","https://steemitimages.com/DQmaibQPGxnzqBFMsyXZqWRPXnapdY3YxHYSgzbmeroEZdz/14.PNG","https://steemitimages.com/DQmXRW38eVL3Fr7CSahVfTjQizH7vXXu8zLTN8gV4iykutB/15.PNG","https://steemitimages.com/DQmVmQaiznNj4TGG7oqD3VsnznU3JyQDMkZWxTgKZyQ58fC/16.PNG","https://steemitimages.com/DQmTw7xKWWYDAiijho2j3o2SXyWGg2Vr1s5oGCZwSfSmHaG/17.PNG","https://steemitimages.com/DQmYuWw8SYZf8Uw6qxgVGvSzW7kKFb4rAWqMajX2nJMXX84/18.PNG","https://steemitimages.com/DQmQcSybrLujLQozgnz2a8RUMj6L7YhzVLuij3bT37AtzcB/19.PNG","https://steemitimages.com/DQmeiZ28nqUyhwvFpveVftGE9XCV5R7YZMWU9rXjjC6sjGR/20.PNG","https://steemitimages.com/DQmYhGwhjZ6zAFHyb2rBG4g1jKbhc1t4KQffhKyMYAVaqk1/21.PNG","https://steemitimages.com/DQmcAjb8rpZqLJ9qfE6rDe1nTBmgjovJpsetKChkoiWTevj/22.PNG","https://steemitimages.com/DQmSgZTxTYEmbXCxgsqqQbuk3fBoL5JZQRc2Wy5ADKm8fw7/23.PNG","https://steemitimages.com/DQmUhkZtPCCqDEzUhwxp9DMJbAvQLkyi5bVKukRZnwiXxbM/24.PNG"],"links":["http://introtodeeplearning.com/"],"app":"steemit/0.1","format":"html"} |
| parent author | |
| parent permlink | deeplearning |
| permlink | mit-6-s191-2 |
| title | [저 세상 정리] MIT 6.S191 2강 |
| Transaction Info | Block #21853537/Trx c248402f17028c543fb425387a50e08ef61a6cdf |
View Raw JSON Data
{
"block": 21853537,
"op": [
"comment",
{
"author": "yskoh",
"body": "<html>\n<p> <del>[저 세상 정리]는 내 맘대로 이해한 강의 내용을 내 맘대로 정리하는 post이므로 매우 부정확할 수 있음</del><br>\n </p>\n<p><br></p>\n<p> MIT 6.S191 Introduction to Deep Learning #2</p>\n<p><br></p>\n<p>두 번째 강의 내용은 sequential data를 처리하는데 적합한 network를 소개한다. 우선 sequential data의 특징을 알아보자. Sequential data는 example 하나당 data의 수가 다양하고 각 data는 서로 복잡하게 연관되어 있다. 우리가 쓰는 문장이나 음성의 wave form이 sequential data에 속한다. </p>\n<p><br></p>\n<p>그렇다면 sequence modeling은 어떻게 할까. 예시를 통해 sequence modeling이 얼마나 까다로운지 알아보자.</p>\n<p>\"This morning I took the dog for a walk.\"</p>\n<p>이런 문장이 있는데 여기서 \"This morning I took the dog for a\" 까지만 주어지고 그 후에 올 단어(\"walk\")를 예측하려면 어떡해야 할까. 이전 시간에 배웠던 NN을 생각해보면 network의 input size는 고정되어 있어야 한다. 즉 modeling을 할때 fixed length로 지정해줘야 한다. 하지만 위의 문장은 예시일 뿐이고 input으로 들어올 문장의 길이는 다양하기 때문에 이런 variable length input을 fixed length vector로 변환하는 것이 필요하다.</p>\n<p>하나의 방법은 fixed window를 사용하는 것이다. 예를 들면 위의 예시 문장에서 \"for a\" (크기 2의 window)만 보고 \"walk\"를 예측하는 것이다.</p>\n<p><center>\nhttps://steemitimages.com/DQmenDnEQshV9C5J8af9KktsjbUZq2Rwb2TNLSfeYT3m95Z/01.PNG</center></p>\n<p>이런 방법을 사용하면 어떤 단어든 fixed length vector로 나타낼 수 있기 때문에 feed-forward network에 사용할 수 있다. 하지만 문제점이 있다. 다음 문장을 보자.</p>\n<p>\"In France, I had a great time and I learnt some of the ______ language.\"</p>\n<p>빈칸에 들어갈 단어를 추론하기 위해서는 문장 맨 앞에서 정보를 얻어야한다. 하지만 fixed window를 사용한다면.. 한계점이 분명히 보인다. Fixed window를 사용하면 fixed length vector를 만들 수는 있지만 위의 예시처럼 오래 전(?)의 정보는 사용할 수 없게 된다. 이런 문제를 problem of long-term dependency라고 한다. </p>\n<p>자, 그럼 다시, fixed length vector는 필요한데... fixed window는 별로다, sequence의 모든 정보를 활용하고 싶다! 그럼 fixed window 말고 그냥 sequence 전체를 써보자! 근데 어떻게?</p>\n<p><center>\nhttps://steemitimages.com/DQmYQhGRb9RYfo2LVgUoYdcjtsmY6bUfk1ZxUXmey9F3qmr/02.PNG\n</center></p>\n<p>방법은 간단하다. \"Bag of Words\"라는 방법인데, 각 단어들이 그 문장 안에 얼마나 있는지 카운팅하는 것이다. 위의 벡터를 보면 각 slot은 단어를 의미하고 slot 내의 숫자는 그 단어의 출현 빈도를 나타낸다. 이 방법을 사용하면 단어 수에 상관없이, 즉 문장의 길이에 상관 없이 fixed length vector를 만들 수 있고 문장 전체를 활용할 수 있다. 하지만..bag of words는 sequence의 순서를 반영할 수 없다. 이는 sequential data를 다루는데 큰 문제로 작용할 수 있다.</p>\n<p>\"The food was good, not bad at all.\" vs \"The food was bad, not good at all.\"</p>\n<p>위 두 문장을 보면 완전 정 반대의 뜻이다. 근데 문장을 구성하는 단어의 종류와 그 수가 똑같기 때문에 완전히 동일한 bag of word를 갖는다. </p>\n<p>자, 다시.....sequence의 순서도 놓치고 싶지 않고 sequence를 통으로 이용하고 싶기 때문에 fixed window도 싫다.</p>\n<p>그럼 좀 절충안으로 좀 큰 window를 사용하는건..? a really big fixed window!!</p>\n<p><center>\nhttps://steemitimages.com/DQmYSE8tM8tsGC5i7W3uGSbkaGPUZKzppiwQpVkJx5HKB6E/03.PNG\n</center></p>\n<p>위 예시에서 크기 7의 window를 사용했는데 문장 길이를 고려하면 big window가 맞다. 아무튼 그 어느 문장이 와도 big enough한 fixed window를 쓴다고 해보자. 그래도 문제는 생기..ㄴ.....<del>쒸익쒸익</del></p>\n<p><center>\nhttps://steemitimages.com/DQmXMVcTmi7bZMF2nJFqQgmPFEasSQg52Ja4SWhfL1jQrBi/04.PNG\n</center></p>\n<p>문장 구조상 this morning은 문장 앞에 올 수도 있고 문장 뒤에 올 수도 있다. 문제는 this morning이 문장 앞에 오나 뒤에 오나 의미는 같은데 network는 그걸 모른다. 왜냐...vector의 앞 부분에 연결된 뉴런(weight)와 vector 뒷 부분에 연결된 뉴런(weight)가 서로 공유되지 않기 때문이다. 무슨 말이냐면, 만약에 this morning이 주로 문장 앞에 위치하면 network 입장에서는 this morning이 뒤에 있는 문장을 본 적이 없을 것이다. 따라서 this morning이 뒤에 위치한 문장을 받았을 때 전혀 새로운 문장으로 인식할 것이다. 일반화 시켜서 표현을 해보자면, network가 어떤 sequence를 학습했는데 weight가 서로 공유되지 않으면 sequence내 data의 순서가 뒤바뀐다면 새로운 sequence로 인식할 것이다.</p>\n<p>위의 내용들을 정리해보면!! Sequence modeling을 위해서는<br>\n1. variable-length sequence 커버 가능해야하고<br>\n2. sequence 순서도 보존해야하고<br>\n3. problem of long-term dependency도 해결해야하고<br>\n4. sequence끼리 weight도 공유되어야함..</p>\n<p>그래서 해결책은!!! RNN(Recurrent Neural Networks)</p>\n<p>\n<center>https://steemitimages.com/DQmc8KNzH27EbnUk9R1kkaocfdkAeEfbTE5Nq7cU1aTRAeu/05.PNG\n</center></p>\n<p>저번 시간에 우리가 배웠던 NN은 위와 같은 구조를 갖는다. RNN도 구조는 비슷한데 핵심인 뉴런(perceptron)의 기능이 조금 다르다.</p>\n<p><center>\nhttps://steemitimages.com/DQmXFsH7cJYe12zDCF9hANJTWQpm3z6XJTUyQXZCJxYbStd/06.PNG</center></p>\n<p>위 그림은 RNN cell(뉴런)의 기능을 도식화한 것이다. Sequential data이기 때문에 time step '<em>t</em>'가 있는데, 위 그림은 초기 <em>t=0</em> 일 때를 나타낸다. 다음 그림을 이어서 보자.</p>\n<p><center>https://steemitimages.com/DQmSKVcnoifk632BiQLXqDtR9HtPoSTFJZ5bExSKuwwmYqs/07.PNG\n</center></p>\n<p>새로운 input으로 <em>x_1</em>이 들어오고 방금과 같은 과정을 거쳐 다음 time step으로 <em>s_2</em>를 전달한다. 눈썰미가 좋다면 눈치챘을 사실! Sequential data이기 때문에 time step이 있다고 했고, 그에 따라 모든 notation에는 time step이 sub로 표기된다. 단 <em>W</em>와 <em>U</em>만 제외하고.. <em>W</em>와 <em>U</em>는 모두 weight matrix를 뜻하는데, time notation이 없다는 것은! 모든 time step에서 동일한 <em>W</em>와 <em>U</em>를 공유한다는 뜻이다. (parameter sharing)</p>\n<p>주목할 점은 또 있다. 다음 time step으로 cell state(s)를 전달하는 과정을 보면 현재 time step에서 새로 들어온 input(x) 뿐만 아니라 현재 time step의 cell state도 같이 넘기는 것을 볼 수 있다. 정리해보면 미래의 cell state는 과거의 모든 정보를 담는다. (long-term dependency)<br>\n이런 구조를 시간에 따라 unfolding 해보면...</p>\n<p><center>\nhttps://steemitimages.com/DQmV5TYCDTVyCDmEFFMfM7z6XCU2KGoqe676eYWo5ta5tLs/08.PNG</center></p>\n<p>문제를 해결했으니 학습을 시켜봅시다. 얘도 NN과 똑같이 backpropagation을 하는데 time이 추가되었으니 backpropagation through time, 줄여서 BPTT라 한다.</p>\n<p>우선 loss를 구해보자.</p>\n<p><center>\nhttps://steemitimages.com/DQmZgczDo6xUK1RpWDHsemxXwMp4YF4NyqoevZvm5u27TDT/09.PNG</center></p>\n<p>위 그림처럼 각 time step마다 loss를 구할 수 있고, 그들을 다 합친 것이 total loss이다. Gradient도 마찬가지다. 각 time step마다 gradient를 구하고 모두 합하면 total gradient가 된다. 다음 그림을 보고 chain rule을 사용하여 <em>W</em>에 대한 time step <em>t</em>에서의 gradient를 구하는 과정을 알아보자.</p>\n<p><center>\nhttps://steemitimages.com/DQmRmATC3cVoGNKznA8hHHE5sRQnnAA11qvMwvTRS1L7hU3/10.png</center></p>\n<p>끝! 인데 끝이 아니다. (!?) RNN의 chain rule은 그리 간단하지 않다...ㅜ 다음 그림..</p>\n<p><center>\nhttps://steemitimages.com/DQmXJAh4X3z8iAiaykQ9FQ2t5BSTAKjdJqRQmrrcLStG5XP/11.PNG\n</center></p>\n<p>끝인 줄 알았지만 안 끝난 이유는 다음과 같다. <em>s_2</em>는 <em>s_1</em>과 연관이 있고 <em>s_1</em>은 또 <em>W</em>와 연관되어 있다. 다 얽히고 설켜서 chain rule을 위와 같이 끝내면 안되고, <em>s_2</em>와 <em>W</em>의 관계를 다시 chain rule을 이용하여 풀어줘야 한다.</p>\n<p><center>\nhttps://steemitimages.com/DQmcrmooB4q3rZdxWzYEh9PiQ5bZjtFF7VMjNkMNp9yKwhw/12.png</center></p>\n<p>드뎌 완성.. 수식으로 일반화하여 표현하면</p>\n<p><center>\nhttps://steemitimages.com/DQmVHv5qwETdxGPxggirBoLgyVV5KGZKso8aoKZy74cfnbJ/13.PNG</center></p>\n<p>이렇게 loss를 구하고 gradient를 이용하여찾으면 global minimum을 training 끝이다. (이론상으로는...)</p>\n<p>RNN은 사용상의 문제점이 있다. 바로 vanishing gradient 문제다. 다음 그림을 보고 <em>s_n</em>을<em> s_0</em>로 편미분하는 것을 생각해보자.</p>\n<p><center>\nhttps://steemitimages.com/DQmaibQPGxnzqBFMsyXZqWRPXnapdY3YxHYSgzbmeroEZdz/14.PNG</center></p>\n<p>식을 보면 알겠지만 n이 커질수록 곱연산 또한 많아진다. 왜 이게 문제가 되냐! 저 곱연산에 사용되는 term 하나만 떼어와서 보면</p>\n<p><center>\nhttps://steemitimages.com/DQmXRW38eVL3Fr7CSahVfTjQizH7vXXu8zLTN8gV4iykutB/15.PNG</center></p>\n<p>이렇게 생겼는데, 이 수식이 어떻게 유도됐는지는 여기서 중요한 것이 아니고 왜 이 수식이 문제가 되느냐다. 보통의 <em>W</em>는 가우시안 분포로부터 추출되기 때문에 대부분 1보다 작은 값을 갖는다. 그리고 activation function인 f는 보통 tanh나 sigmoid를 사용하기 때문에 f'은 1보다 작은 값을 갖는다. </p>\n<p>다시, 전체 곱연산 수식을 보자. 위의 의미대로 저 식을 계산해보면 계속해서 1보다 작은 값을 곱하고 있는 것이고 그에 따라 결과값도 매우 작을 것이다.</p>\n<p>자 그러면! n과 0의 차이가 클수록(n이 커질수록) 에러가 강제로 작아진다. Backpropagation을 통해 에러를 교정해 나가야하는데 먼 과거일 수록 에러가 강제로 작아져서 교정할 수가 없게 되는 문제점이 있다. 상대적으로 가까운 과거의 에러가 크게 다가오는 것이다(short-term dependency). 결국 problem of long-term dependency 재발..</p>\n<p><br></p>\n<p>해결책 1. activation function 교체</p>\n<p><center>\nhttps://steemitimages.com/DQmVmQaiznNj4TGG7oqD3VsnznU3JyQDMkZWxTgKZyQ58fC/16.PNG</center></p>\n<p>ReLU 함수는 input <em>x</em>가 음수이면 0, 0 이상이면 <em>x</em>를 반환하는 함수다. 따라서 0보다 큰 범위에서 미분값은 1로 동일하기 때문에 vanishing gradient 문제를 해결할 수 있다.</p>\n<p><br></p>\n<p>해결책 2. weight matrix 초기화 방법</p>\n<p>가우시안 분포에서 추출하는 대신 identity matrix로 초기화하면 weight로 인해 gradient가 감소하는 문제를 해결할 수 있다.</p>\n<p><br></p>\n<p>해결책 3. 좀더 정교한 cell 사용</p>\n<p>이런 정교한 cell의 종류에는 여러가지가 있는데 LSTM(Long Short Term Memory)이나 GRU(Gated Recurrent Unit)가 대표적이다. 이 수업에서는 LSTM만 조금 다룬다. LSTM은 크게 3 부분으로 나뉜다.</p>\n<p><center>\nhttps://steemitimages.com/DQmTw7xKWWYDAiijho2j3o2SXyWGg2Vr1s5oGCZwSfSmHaG/17.PNG</center></p>\n<p>1. 이전 state에서 별로 관련 없는 부분을 잊어버리는 forget gate<br>\n2. cell state를 선택적으로 update하는 input gate<br>\n3. cell state의 certain part를 output하는 output gate</p>\n<p>1번을 착각하면 안되는 것이 무조건 잊어버리는 것이 아니라 그대로 유지할 수도 있다. 그리고 RNN에서는 cell state가 곧 output이었는데 LSTM은 그 둘이 구분이 된다.</p>\n<p>뭐 이정도로만 LSTM을 다루고 있다. 다음은 LSTM이 어떻게 사용되고 있는지 성공 사례를 보여주는 그림들로 마무리 한다.</p>\n<p>1. 트위터 감정 분석(classification)</p>\n<p><center>\nhttps://steemitimages.com/DQmYuWw8SYZf8Uw6qxgVGvSzW7kKFb4rAWqMajX2nJMXX84/18.PNG</center></p>\n<p><br></p>\n<p><center>https://steemitimages.com/DQmQcSybrLujLQozgnz2a8RUMj6L7YhzVLuij3bT37AtzcB/19.PNG</center></p>\n<p><br></p>\n<p>2. 음악 생성(generation)</p>\n<p><center>https://steemitimages.com/DQmeiZ28nqUyhwvFpveVftGE9XCV5R7YZMWU9rXjjC6sjGR/20.PNG</center></p>\n<p><br></p>\n<p>3. 번역(translation)</p>\n<p><center>https://steemitimages.com/DQmYhGwhjZ6zAFHyb2rBG4g1jKbhc1t4KQffhKyMYAVaqk1/21.PNG</center></p>\n<p>번역 문제는 조금 복잡하다. 보통 번역의 경우 두 가지의 RNN을 쓴다. 하나(왼쪽)은 인코더, 다른 하나는 디코더로 사용한다. 위 그림에서 인코더는 <em>s_2</em>를 디코더의 input으로 전달하고 있다. 즉 \"the dog eats\"라는 sequence를 하나의 vector로 인코딩(summarize)하여 디코더로 전달하는 것이다. 반대로 디코더의 입장에서는 input sequence의 정보로 받은 것이 fixed length vector <em>s_2</em>밖에 없다. 만약 sequence의 길이가 매우 길다면, 인코딩된 하나의 vector내에 sequence의 모든 정보를 제대로 담을 수 있을까? 이런 문제에 대안으로 나온 것이 'attention' 방법이다.</p>\n<p><center>https://steemitimages.com/DQmcAjb8rpZqLJ9qfE6rDe1nTBmgjovJpsetKChkoiWTevj/22.PNG</center></p>\n<p><br></p>\n<p><center>https://steemitimages.com/DQmSgZTxTYEmbXCxgsqqQbuk3fBoL5JZQRc2Wy5ADKm8fw7/23.PNG</center></p>\n<p><br></p>\n<p><center>https://steemitimages.com/DQmUhkZtPCCqDEzUhwxp9DMJbAvQLkyi5bVKukRZnwiXxbM/24.PNG</center></p>\n<p>Attention 방법은 인코더가 최종 cell state를 전달하는 것이 아니라 각각의 cell state를 weighted sum하여 디코더 각 cell에 전달한다. 이때 디코더의 time step에 따라 weighted sum되는 값이 달라진다. 예를 들면 t=0일때는 인코더의 t=0일 때 cell state의 weight를 가장 높게 줄 수있고 t=1일 때는 인코더의 t=3일 때의 ... 뭐 이런식으로..</p>\n<p>아무튼 RNN은 활용도가 굉장히 높은 모델이다. 그 근거는 수업 자료를 복붙하며 이번 포스트를 마무리...</p>\n<p>● extending our models to timeseries + waveforms</p>\n<p>● complex language models to generate long text or books</p>\n<p>● language models to generate code</p>\n<p>● controlling cars + robots</p>\n<p>● predicting stock market trends</p>\n<p>● summarizing books + articles</p>\n<p>● handwriting generation</p>\n<p>● multilingual translation models</p>\n<p>모든 이미지 자료는 MIT 6.S191 수업 자료에서 가져왔습니다. http://introtodeeplearning.com/</p>\n</html>",
"json_metadata": "{\"tags\":[\"deeplearning\",\"machinelearning\",\"dnn\",\"rnn\",\"s191\"],\"image\":[\"https://steemitimages.com/DQmenDnEQshV9C5J8af9KktsjbUZq2Rwb2TNLSfeYT3m95Z/01.PNG\",\"https://steemitimages.com/DQmYQhGRb9RYfo2LVgUoYdcjtsmY6bUfk1ZxUXmey9F3qmr/02.PNG\",\"https://steemitimages.com/DQmYSE8tM8tsGC5i7W3uGSbkaGPUZKzppiwQpVkJx5HKB6E/03.PNG\",\"https://steemitimages.com/DQmXMVcTmi7bZMF2nJFqQgmPFEasSQg52Ja4SWhfL1jQrBi/04.PNG\",\"https://steemitimages.com/DQmc8KNzH27EbnUk9R1kkaocfdkAeEfbTE5Nq7cU1aTRAeu/05.PNG\",\"https://steemitimages.com/DQmXFsH7cJYe12zDCF9hANJTWQpm3z6XJTUyQXZCJxYbStd/06.PNG\",\"https://steemitimages.com/DQmSKVcnoifk632BiQLXqDtR9HtPoSTFJZ5bExSKuwwmYqs/07.PNG\",\"https://steemitimages.com/DQmV5TYCDTVyCDmEFFMfM7z6XCU2KGoqe676eYWo5ta5tLs/08.PNG\",\"https://steemitimages.com/DQmZgczDo6xUK1RpWDHsemxXwMp4YF4NyqoevZvm5u27TDT/09.PNG\",\"https://steemitimages.com/DQmRmATC3cVoGNKznA8hHHE5sRQnnAA11qvMwvTRS1L7hU3/10.png\",\"https://steemitimages.com/DQmXJAh4X3z8iAiaykQ9FQ2t5BSTAKjdJqRQmrrcLStG5XP/11.PNG\",\"https://steemitimages.com/DQmcrmooB4q3rZdxWzYEh9PiQ5bZjtFF7VMjNkMNp9yKwhw/12.png\",\"https://steemitimages.com/DQmVHv5qwETdxGPxggirBoLgyVV5KGZKso8aoKZy74cfnbJ/13.PNG\",\"https://steemitimages.com/DQmaibQPGxnzqBFMsyXZqWRPXnapdY3YxHYSgzbmeroEZdz/14.PNG\",\"https://steemitimages.com/DQmXRW38eVL3Fr7CSahVfTjQizH7vXXu8zLTN8gV4iykutB/15.PNG\",\"https://steemitimages.com/DQmVmQaiznNj4TGG7oqD3VsnznU3JyQDMkZWxTgKZyQ58fC/16.PNG\",\"https://steemitimages.com/DQmTw7xKWWYDAiijho2j3o2SXyWGg2Vr1s5oGCZwSfSmHaG/17.PNG\",\"https://steemitimages.com/DQmYuWw8SYZf8Uw6qxgVGvSzW7kKFb4rAWqMajX2nJMXX84/18.PNG\",\"https://steemitimages.com/DQmQcSybrLujLQozgnz2a8RUMj6L7YhzVLuij3bT37AtzcB/19.PNG\",\"https://steemitimages.com/DQmeiZ28nqUyhwvFpveVftGE9XCV5R7YZMWU9rXjjC6sjGR/20.PNG\",\"https://steemitimages.com/DQmYhGwhjZ6zAFHyb2rBG4g1jKbhc1t4KQffhKyMYAVaqk1/21.PNG\",\"https://steemitimages.com/DQmcAjb8rpZqLJ9qfE6rDe1nTBmgjovJpsetKChkoiWTevj/22.PNG\",\"https://steemitimages.com/DQmSgZTxTYEmbXCxgsqqQbuk3fBoL5JZQRc2Wy5ADKm8fw7/23.PNG\",\"https://steemitimages.com/DQmUhkZtPCCqDEzUhwxp9DMJbAvQLkyi5bVKukRZnwiXxbM/24.PNG\"],\"links\":[\"http://introtodeeplearning.com/\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}",
"parent_author": "",
"parent_permlink": "deeplearning",
"permlink": "mit-6-s191-2",
"title": "[저 세상 정리] MIT 6.S191 2강"
}
],
"op_in_trx": 0,
"timestamp": "2018-04-24T17:51:51",
"trx_id": "c248402f17028c543fb425387a50e08ef61a6cdf",
"trx_in_block": 34,
"virtual_op": 0
}yskohreceived 0.027 SBD, 0.011 SP author reward for @yskoh / mit-6-s191-12018/04/23 20:46:27
yskohreceived 0.027 SBD, 0.011 SP author reward for @yskoh / mit-6-s191-1
2018/04/23 20:46:27
| author | yskoh |
| permlink | mit-6-s191-1 |
| sbd payout | 0.027 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 18.335523 VESTS |
| Transaction Info | Block #21828546/Virtual Operation #8 |
View Raw JSON Data
{
"block": 21828546,
"op": [
"author_reward",
{
"author": "yskoh",
"permlink": "mit-6-s191-1",
"sbd_payout": "0.027 SBD",
"steem_payout": "0.000 STEEM",
"vesting_payout": "18.335523 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2018-04-23T20:46:27",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": 8
}romagribysupvoted (100.00%) @yskoh / mit-6-s191-12018/04/17 05:10:51
romagribysupvoted (100.00%) @yskoh / mit-6-s191-1
2018/04/17 05:10:51
| author | yskoh |
| permlink | mit-6-s191-1 |
| voter | romagribys |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21637325/Trx 7f8bb9ee4375724c3fcb02e1ec765ee083f9a678 |
View Raw JSON Data
{
"block": 21637325,
"op": [
"vote",
{
"author": "yskoh",
"permlink": "mit-6-s191-1",
"voter": "romagribys",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-04-17T05:10:51",
"trx_id": "7f8bb9ee4375724c3fcb02e1ec765ee083f9a678",
"trx_in_block": 7,
"virtual_op": 0
}2018/04/17 00:09:06
2018/04/17 00:09:06
| author | steemitboard |
| body | Congratulations @yskoh! You have completed some achievement on Steemit and have been rewarded with new badge(s) : [](http://steemitboard.com/@yskoh) You published your First Post [](http://steemitboard.com/@yskoh) You got a First Vote Click on any badge to view your own Board of Honor on SteemitBoard. For more information about SteemitBoard, click [here](https://steemit.com/@steemitboard) If you no longer want to receive notifications, reply to this comment with the word `STOP` > Upvote this notification to help all Steemit users. Learn why [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)! |
| json metadata | {"image":["https://steemitboard.com/img/notifications.png"]} |
| parent author | yskoh |
| parent permlink | mit-6-s191-1 |
| permlink | steemitboard-notify-yskoh-20180417t000908000z |
| title | |
| Transaction Info | Block #21631298/Trx cc90b397f18aadca841e584340500f7508e800fe |
View Raw JSON Data
{
"block": 21631298,
"op": [
"comment",
{
"author": "steemitboard",
"body": "Congratulations @yskoh! You have completed some achievement on Steemit and have been rewarded with new badge(s) :\n\n[](http://steemitboard.com/@yskoh) You published your First Post\n[](http://steemitboard.com/@yskoh) You got a First Vote\n\nClick on any badge to view your own Board of Honor on SteemitBoard.\nFor more information about SteemitBoard, click [here](https://steemit.com/@steemitboard)\n\nIf you no longer want to receive notifications, reply to this comment with the word `STOP`\n\n> Upvote this notification to help all Steemit users. Learn why [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notifications.png\"]}",
"parent_author": "yskoh",
"parent_permlink": "mit-6-s191-1",
"permlink": "steemitboard-notify-yskoh-20180417t000908000z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2018-04-17T00:09:06",
"trx_id": "cc90b397f18aadca841e584340500f7508e800fe",
"trx_in_block": 42,
"virtual_op": 0
}introduce.botreplied to @yskoh / introduce-bot-re-yskohmit-6-s191-12018/04/16 21:12:42
introduce.botreplied to @yskoh / introduce-bot-re-yskohmit-6-s191-1
2018/04/16 21:12:42
| author | introduce.bot |
| body | @yskoh, welcome and congratulations on making your first post! **I gave you a $.05 vote!** If you would be so kind to give me a follow in return, that would be most kind of you!! |
| json metadata | |
| parent author | yskoh |
| parent permlink | mit-6-s191-1 |
| permlink | introduce-bot-re-yskohmit-6-s191-1 |
| title | |
| Transaction Info | Block #21627771/Trx 2df16bce17147df5ee39928670d535b4625c446b |
View Raw JSON Data
{
"block": 21627771,
"op": [
"comment",
{
"author": "introduce.bot",
"body": "@yskoh, welcome and congratulations on making your first post! **I gave you a $.05 vote!** If you would be so kind to give me a follow in return, that would be most kind of you!!",
"json_metadata": "",
"parent_author": "yskoh",
"parent_permlink": "mit-6-s191-1",
"permlink": "introduce-bot-re-yskohmit-6-s191-1",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2018-04-16T21:12:42",
"trx_id": "2df16bce17147df5ee39928670d535b4625c446b",
"trx_in_block": 4,
"virtual_op": 0
}introduce.botupvoted (2.78%) @yskoh / mit-6-s191-12018/04/16 21:12:39
introduce.botupvoted (2.78%) @yskoh / mit-6-s191-1
2018/04/16 21:12:39
| author | yskoh |
| permlink | mit-6-s191-1 |
| voter | introduce.bot |
| weight | 278 (2.78%) |
| Transaction Info | Block #21627770/Trx 9643a3e473bcbd67677cfb2cdb94701c226183d0 |
View Raw JSON Data
{
"block": 21627770,
"op": [
"vote",
{
"author": "yskoh",
"permlink": "mit-6-s191-1",
"voter": "introduce.bot",
"weight": 278
}
],
"op_in_trx": 0,
"timestamp": "2018-04-16T21:12:39",
"trx_id": "9643a3e473bcbd67677cfb2cdb94701c226183d0",
"trx_in_block": 47,
"virtual_op": 0
}ubgupvoted (1.00%) @yskoh / mit-6-s191-12018/04/16 21:11:36
ubgupvoted (1.00%) @yskoh / mit-6-s191-1
2018/04/16 21:11:36
| author | yskoh |
| permlink | mit-6-s191-1 |
| voter | ubg |
| weight | 100 (1.00%) |
| Transaction Info | Block #21627749/Trx 265c65d9e92866ec6ddd6ffd5e7442f4a6b7c3cb |
View Raw JSON Data
{
"block": 21627749,
"op": [
"vote",
{
"author": "yskoh",
"permlink": "mit-6-s191-1",
"voter": "ubg",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2018-04-16T21:11:36",
"trx_id": "265c65d9e92866ec6ddd6ffd5e7442f4a6b7c3cb",
"trx_in_block": 5,
"virtual_op": 0
}gamanreplied to @yskoh / mit-6-s191-1-gaman-041620182018/04/16 20:57:39
gamanreplied to @yskoh / mit-6-s191-1-gaman-04162018
2018/04/16 20:57:39
| author | gaman |
| body | Resteemed your article. This article was resteemed because you are part of the New Steemians project. You can learn more about it here: https://steemit.com/introduceyourself/@gaman/new-steemians-project-launch |
| json metadata | {"app": "pysteem/0.5.4"} |
| parent author | yskoh |
| parent permlink | mit-6-s191-1 |
| permlink | mit-6-s191-1-gaman-04162018 |
| title | |
| Transaction Info | Block #21627470/Trx ceef5bc424c9af221adcd4b5dafb15ba1860e8fd |
View Raw JSON Data
{
"block": 21627470,
"op": [
"comment",
{
"author": "gaman",
"body": "Resteemed your article. This article was resteemed because you are part of the New Steemians project. You can learn more about it here: https://steemit.com/introduceyourself/@gaman/new-steemians-project-launch",
"json_metadata": "{\"app\": \"pysteem/0.5.4\"}",
"parent_author": "yskoh",
"parent_permlink": "mit-6-s191-1",
"permlink": "mit-6-s191-1-gaman-04162018",
"title": " "
}
],
"op_in_trx": 0,
"timestamp": "2018-04-16T20:57:39",
"trx_id": "ceef5bc424c9af221adcd4b5dafb15ba1860e8fd",
"trx_in_block": 37,
"virtual_op": 0
}yskohpublished a new post: mit-6-s191-12018/04/16 20:46:27
yskohpublished a new post: mit-6-s191-1
2018/04/16 20:46:27
| author | yskoh |
| body | <html> <p><del>[저 세상 정리]는 내 맘대로 이해한 강의 내용을 내 맘대로 정리하는 post이므로 매우 부정확할 수 있음</del></p> <p><br></p> <p>MIT 6.S191 Introduction to Deep Learning #1</p> <p>S191 수업은 딥러닝의 다양한 알고리즘을 소개하고 그 알고리즘들이 어떻게 작동하는지, 그리고 왜 작동하는지에 대해 다룰 것이다.</p> <p>첫 수업에서는 다음과 같은 주제를 다룬다.</p> <p>1. What is Deep Learning?</p> <p>2. Why Deep Learning and Why Now?</p> <p>3. The Perceptron</p> <p>4. Building Neural Networks with Perceptrons</p> <p>5. Applying Neural Networks</p> <p>6. Training Neural Networks</p> <p>7. Neural Networks in Practice: Optimization</p> <p>8. Neural Networks in Practice: Mini-batches</p> <p>9. Neural Networks in Practice: Overfitting</p> <p><br></p> <p>이제 하나 하나 살펴 보도록...<del>(귀찮..)</del></p> <p>수업 자체가 딥러닝 입문에 관한 수업이니 만큼 우선 딥러닝이 무엇인지 부터 설명한다. 딥러닝이란, NN(Neural Networks)을 이용하여 데이터의 내재된 특징(underlying features)을 '다이렉트로' 학습하는 기법이다. 그렇다면 왜 데이터의 특징을 다이렉트로 배우는 것이 좋은가, 혹은 필요한가? 딥러닝 이전에는 인간이 데이터를 가공하여 feature를 만들었는데, 이러한 방식의 단점은 실제로 사용하기에 시간이 많이 걸리고(time consuming) 안정적이지 않으며(brittle) 확장성이 떨어진다(not scalable). 결론은 딥러닝..</p> <p><br></p> <p>딥러닝의 개념을 말로는 대충 알겠으니 딥러닝 모델이 실제로 어떻게 생겨먹었는지 보도록 하자. 위에서 딥러닝의 개념을 설명할 때 NN을 이용한다고 했다. 이 NN의 가장 기본이 되는 유닛이 perceptron이라는 놈인데, 인간 신경세포(neuron)의 기계 버전이라고 생각하면 된다. 뉴런은 어떤 자극 혹은 정보(input)를 받으면 일련의 과정을 거쳐 화학 물질(output)을 분비해 다음 뉴런으로 정보를 전달한다. Perceptron도 똑같다. 정보(input)가 들어오면 일련의 과정을 거쳐 결과물(output)을 생성한다. 다음 그림을 한번 보자.</p> <p><center> https://steemitimages.com/DQmcJ3WtFjG58ZkKws9DEfBjepTT9LmZPC1gMRh1rxVBAPS/perceptron.PNG </center></p> <p>퍼셉트론의 작동 방식은 간단하다. input data <em>x_1, ... , x_m</em>에 해당 가중치(theta)를 곱하여 더하고(weighted sum), 이 결과물에 비선형성(non-linearity)을 주기 위해 activation function을 적용한 것이 최종 output이다. 여기서 bias의 역할은 input data로 모두 0이 들어와도(=input data가 없어도) activation function의 input으로는 0이 아닌 수가 전달되도록 한다. Activation function의 input으로서 0의 의미란..? 결론부터 말하면 임계치다. Activation function의 input이 양수(음수)이면 다음 perceptron에 더 강한(약한) 자극을 주기 위해, 즉 더(덜) activate하기 위해 큰(작은) 값을 전달한다.</p> <p><center> https://steemitimages.com/DQmVzaX3gcNQesiZLXGUt5YcogwGXM3AvzYZUb6eHSSS9vK/activation%20function.PNG </center></p> <p>Simoid는 많이 쓰이는 activation function 중 하나이다. Sigmoid는 input 값을 0~1 사이의 값으로 mapping한다. 이는 확률로도 해석할 수 있으며 input 값 0을 중심으로 0.5 이상 혹은 이하의 값(확률)을 반환한다. Sigmoid와 마찬가지로 다른 activation function도 0을 임계치로 갖는다. </p> <p>다음은 activation function의 비선형성에 대해 얘기하려 한다. Activation function의 진짜 존재 이유는 network에 비선형성을 주기 위함이다. Network에 비선형성을 뭐라고..? 직관적으로 와닿지 않기 때문에 그림을 통해 설명한다.</p> <p><center> https://steemitimages.com/DQmRj4kDHavQNxkDsbNb3rASoywTFicXMgEmzzm3kegXJmr/non-linearity.PNG </center></p> <p>위의 초록점과 빨간점을 구분하는 NN을 설계하려고 하는데... 하나의 직선으로 나눌 수 있을까? 대답은 ㄴㄴ.... </p> <p><center> https://steemitimages.com/DQmf3H9ysKsjobHJvgTe9s5Y3ANQ1ngppe98E32XDfz9beR/non-linearity2.PNG </center></p> <p>만약 activation function이 선형이라면, NN의 결과는 왼쪽 그림과 같을 것이다. Activation function의 비선형은 NN이 오른쪽 그림 처럼 구분하도록 할 수 있다. 즉 비선형은 network가 복잡한 함수에 근사할 수 있도록 한다!</p> <p><br></p> <p>Perceptron도 대충 알았으니 NN을 만들어보자!</p> <p><center> https://steemitimages.com/DQmUeVwb7npmaKCvUYknMs6UuQvXzfxH7JrnqbSGQG4tV8g/simplified%20perceptron.PNG </center></p> <p>Peceptron은 위와 같이 간소화하여 표현될 수 있다. 이를 응용하여 두 개의 output을 내는 구조를 만들어 보면?</p> <p><center> https://steemitimages.com/DQmfYHVMZk6ANnwnArPSdSf8Y3nm2szM4HBU3nfVD2qJrVY/multi%20output%20perceptron.PNG </center></p> <p>더 이어 붙여보도록 하자.</p> <p><center> https://steemitimages.com/DQmW4tfCsEpoRmRMFVuw41cyfaT1rvDqB1fmPdEGHDKvUoi/single%20layer%20nn.PNG </center></p> <p>복잡해 보이지만 전혀 그렇지 않다. 단지 perceptron의 연장선일 뿐이다. 다음 그림을 보면 이해가 쉬울 것이다.</p> <p><center> https://steemitimages.com/DQmaapBV6xuZdSbvb68ygJpyfADvJHampLGpGLXm1idYph4/single%20layer%20nn2.PNG </center></p> <p>y로 향하는 화살표 또한 동일하다.<del>(참 쉽죠?)</del> 만약 layer를 더 쌓는다면?</p> <p><center> https://steemitimages.com/DQmdnHXaBXesE2RrQL6cHguFL2QHZBsVcuiyAgVSPkSrxZr/dnn.PNG </center></p> <p>DNN(Deep Neural Network)가 완성되었다. 구조가 복잡해져도 기본 구조는 하나의 perceptron이라는 것을 잊지 말자. dot product와 non-linearity의 연속..</p> <p><br></p> <p>NN을 만들어봤으니 어떻게 사용하는지 알아보자. 다음 문제에 NN을 적용할 것이다.</p> <p><center> https://steemitimages.com/DQmbee6GXw4dgpyfdY1FUHNMSDBwhRiAFxE5HSFQ4qmSkte/pass%20class.PNG </center></p> <p><em>x_1</em>축은 수강중인 수업의 수,<em> x_2</em>축은 final project에 쏟은 시간, 초록점은 수업 pass, 빨간점은 fail.. 그럼 새로운 데이터 보라점은 pass일까 fail일까? 우리의 NN에게 판단을 맡겨본다.</p> <p><center> https://steemitimages.com/DQmexYirk6b99CNsEWc9szoVyjpPWiSRNf4MaBSaDvTa8dN/pass%20class2.PNG </center></p> <p>결과는 0.1을 예측했고 실제 값인 1과는 거리가 있어 보인다. 이렇게 예측 값과 실제 값의 차이를 loss라고 하는데, loss의 정량화(quantifying) 표현은 다음과 같다.</p> <p><center> https://steemitimages.com/DQmSViomQLjiBWFSw6bZBFNR6gCZzKdSvef4jHn3VcbYG8R/quantifying%20loss.PNG </center></p> <p>이는 하나의 데이터에 대한 loss를 나타낸 것인데 전체 데이터에 대한 loss 또한 단순 합이나 평균을 통해 다음과 같이 구할 수 있고 empirical loss라 한다. 같이 쓰이는 말로는 objective function이나 cost function 등이 있다.</p> <p><center> https://steemitimages.com/DQmWrdx6GS7hPFU11jD867Me8X793cobmhUm6f9RrRHApDY/empirical%20loss.PNG </center></p> <p>많이 쓰이는 cost function 2개를 소개한다.</p> <p><center> https://steemitimages.com/DQmPwWm4qpFk7wZ4PTLqKZvtsWB8P3w2CWHGpgPPCL7tPHe/cross.PNG </center></p> <p>Cross entropy loss는 확률 값을 output으로 내는 모델에서 사용할 수 있다. </p> <p><center> https://steemitimages.com/DQmP1GaUaXHwoqosfupntnSKN6fZwerQoW9Hqt6jZNEYb7i/mse.PNG </center></p> <p>Mean squared error loss는 regression 모델에서 사용할 수 있다.</p> <p><br></p> <p>이러한 loss 계산은 NN을 학습시키는데 필수적이다. Loss를 최소화 시켜야만 옳은 output을 기대할 수 있기 때문이다. 그렇다면 loss는 어떻게 최소화될 수 있는가. 위에서 예측 값과 실제 값의 차이를 loss라 했다. 실제 값은 달라지지 않으므로 loss를 줄이려면 실제 값에 가깝게 예측 값을 계산해야 한다. 다시, 예측 값은 어떻게 계산되는가. 어렵다면 perceptron으로 가정하고 생각하면 쉽다. input의 weighted sum, 그리고 activation function. 여기서 가변적인 것은 weight뿐이므로 실제 값과 가깝게 예측 값을 만드는 weight를 찾아야 한다. 설명은 길었지만 다음 식으로 간단히 할 수 있다.(위의 loss 식들이 모두 network weights의 식인 이유는 이때문이다.)</p> <p><center> https://steemitimages.com/DQme8WMLMZPUkVxP5Syi8St9ayRbjWAQfhgNVbxeCVMRfMC/loss%20optimization.PNG </center></p> <p>Loss를 최소화하는 weight를 찾는 방법, 즉 loss optimization에 대해 알아본다. 다음 그림은 cost function을 간략히 2개의 weight로 이루어진 함수라 가정하고 시각화하여 optimize하는 과정을 나타낸 것이다.</p> <p><center> https://steemitimages.com/DQmegqsme8zC9S6CiCstxzPiHz93hpSJBQcV2LZNMzTMkx7/loss%20optimization1.PNG </center></p> <p>세로축이 cost function의 값이므로 가장 낮은 지점을 찾아가는 과정이다. 이를 알고리즘으로 표현하면 다음과 같다.</p> <p><center> https://steemitimages.com/DQmYuctcJbq83Zt9oGWb1yX7MNBBwYwQtoFy4drLThXpr5p/grad%20descent.PNG </center></p> <p>이러한 방법을 gradient descent algorithm이라 한다. 여기서 4번을 자세히 보자. 구해진 gradient에 η(에타)를 곱하여 사용하는데 η의 값에 따라 weight가 크게 혹은 적게 바뀔 수 있다. 이러한 의미로 η를 learning rate라 한다. 이η을 '적당한' 값으로 설정해 주는 것이 굉장히 중요하다. 너무 작은 값으로 설정하면 천천히 어떤 값으로 수렴(converge)해가는데 그 값이 우리가 찾아야하는 global minima가 아니고 local minima일 수도...(함정카드). 반대로 너무 큰 값으로 설정하면 weight가 크게크게 바뀌어서(unstable) 발산(diverge)하는 문제를 갖는다. 그럼 도대체 어떻게 그 '적당한' 값을 찾을 수 있을까..</p> <p>Idea 1. 노가다... 되는대로 다 실험해보고 '적당한' 값 결정</p> <p>Idea 2. 상황에 따라 변하는 adaptive learning rate를 설계할 수는 없나? 해보자!</p> <p>똑똑하신 분들이 이미 다 만들어 놓았다. Learning rate는 더이상 고정된 수가 아니라 gradient, 학습 속도, 특정 weights에 크기 등에 따라 변할 수 있다. 이런 adaptive learning rate algorithm의 종류에는 Momentum, Adagrad, Adadelta, Adam, RMSProp 등이 있다.</p> <p><br></p> <p>하지만 gradient descent algorithm에 치명적인 단점이 있다. 바로 gradient를 계산하는 비용이 너무 크다는 것이다. 왜? 애초에 cost function이 모든 데이터에 대한 loss를 뜻하기 때문에 데이터가 많다면 한 iteration에 대한 비용이 클 수 밖에 없다. 이에 대한 대안으로 SGD(Stochastic Gradient Descent algorithm)이 있다. 다음 그림을 보자.</p> <p><center> https://steemitimages.com/DQmPnw4E13pP6zBmkWqBCmLEJj5ttGxDHhjDhZd9ZoWJVmZ/sgd.PNG </center></p> <p>전체 데이터 중 B개의 데이터를 대상으로 gradient를 계산하여 비용을 줄이는 알고리즘이다. SGD의 loop 한 번이 GD의 loop 한 번과 같은데, GD에서 계산된 gradient와 SGD에서 계산된 gradient는 당연히 차이를 보일 수 밖에 없지만 SGD의 gradient를 GD의 추정치로 사용하는데에는 문제가 없다. </p> <p><br></p> <p>이렇게 NN의 학습이 완료되었다(?). 이제 학습 완료된 모델의 generalization problem에 대해 알아본다.</p> <p>우선 overfitting problem</p> <p><center> https://steemitimages.com/DQmdofojFu3D53X8kU5n65bC17ykFtmr9dv6irK3jLfEpHg/overfitting.PNG </center></p> <p>머신러닝 혹은 딥러닝에서 모델을 학습하는 궁극적인 이유는 test data를 우리의 의도대로 잘 표현하기 위함이다. 다르게 말하면 우리가 만든 모델이 training data로부터 패턴을 학습하고 모델에 아직 보여지지 않은 test data에 대해서도 일반화가 잘 되길 원한다. 위의 그림에서 ideal fit의 상태처럼 선을 그어 점들을 나누고 싶은데 underfitting의 경우 모델의 complexity가 충분히 높지 않을 때 발생할 수 있고 overfitting의 경우 complexity가 너무 높아 training data를 기억할 때 발생한다. 두 경우 모두 test data에 대해 제대로 generalized 되지 않는다.</p> <p>이러한 문제를 해결하기 위해 regularization 방법을 많이들 사용한다. 이 방법을 사용하면 모델이 너무 complex해지는 것을 방지할 수 있다. Regularization의 방법 중 하나로 dropout이 있다. 다음 그림을 보자.</p> <p><center> https://steemitimages.com/DQmcAdwuZHDtEo8bgc2tGTN3CDTBXF1hQKFAuMMjG67YpMD/dropout.PNG </center></p> <p>Training 과정 동안 임의로 몇 개 뉴런의 activation을 0으로 만드는 방법이다. 다시 말하면, 몇 개의 뉴런을 '사용 중지' 상태로 만드는 것이다. 이 방법을 쓰면 network가 하나의 뉴런에 크게 의존하지 문제를 방지한다. 일반적인 usage는 한 layer에서 50%의 뉴런만 유지되며 매 iteration마다 유지되는 뉴런은 바뀐다.</p> <p>두 번째 방법으로는 early stopping이 있다. 이 방법은 overfitting이 발생하기 전에 training을 강제로 마치는 방법이다.</p> <p><center> https://steemitimages.com/DQmW5FtvrTHLkbaiP3kMFzszKYoEhBg75zpQsw4qYVKzWK7/early%20stopping.PNG </center></p> <p><br></p> <p><br></p> <p>1강에 대한 정리는 여기까지...</p> <p>2강 듣는대로 정리한드아..</p> </html> |
| json metadata | {"tags":["ml","dl","nn","s191"],"image":["https://steemitimages.com/DQmcJ3WtFjG58ZkKws9DEfBjepTT9LmZPC1gMRh1rxVBAPS/perceptron.PNG","https://steemitimages.com/DQmVzaX3gcNQesiZLXGUt5YcogwGXM3AvzYZUb6eHSSS9vK/activation%20function.PNG","https://steemitimages.com/DQmRj4kDHavQNxkDsbNb3rASoywTFicXMgEmzzm3kegXJmr/non-linearity.PNG","https://steemitimages.com/DQmf3H9ysKsjobHJvgTe9s5Y3ANQ1ngppe98E32XDfz9beR/non-linearity2.PNG","https://steemitimages.com/DQmUeVwb7npmaKCvUYknMs6UuQvXzfxH7JrnqbSGQG4tV8g/simplified%20perceptron.PNG","https://steemitimages.com/DQmfYHVMZk6ANnwnArPSdSf8Y3nm2szM4HBU3nfVD2qJrVY/multi%20output%20perceptron.PNG","https://steemitimages.com/DQmW4tfCsEpoRmRMFVuw41cyfaT1rvDqB1fmPdEGHDKvUoi/single%20layer%20nn.PNG","https://steemitimages.com/DQmaapBV6xuZdSbvb68ygJpyfADvJHampLGpGLXm1idYph4/single%20layer%20nn2.PNG","https://steemitimages.com/DQmdnHXaBXesE2RrQL6cHguFL2QHZBsVcuiyAgVSPkSrxZr/dnn.PNG","https://steemitimages.com/DQmbee6GXw4dgpyfdY1FUHNMSDBwhRiAFxE5HSFQ4qmSkte/pass%20class.PNG","https://steemitimages.com/DQmexYirk6b99CNsEWc9szoVyjpPWiSRNf4MaBSaDvTa8dN/pass%20class2.PNG","https://steemitimages.com/DQmSViomQLjiBWFSw6bZBFNR6gCZzKdSvef4jHn3VcbYG8R/quantifying%20loss.PNG","https://steemitimages.com/DQmWrdx6GS7hPFU11jD867Me8X793cobmhUm6f9RrRHApDY/empirical%20loss.PNG","https://steemitimages.com/DQmPwWm4qpFk7wZ4PTLqKZvtsWB8P3w2CWHGpgPPCL7tPHe/cross.PNG","https://steemitimages.com/DQmP1GaUaXHwoqosfupntnSKN6fZwerQoW9Hqt6jZNEYb7i/mse.PNG","https://steemitimages.com/DQme8WMLMZPUkVxP5Syi8St9ayRbjWAQfhgNVbxeCVMRfMC/loss%20optimization.PNG","https://steemitimages.com/DQmegqsme8zC9S6CiCstxzPiHz93hpSJBQcV2LZNMzTMkx7/loss%20optimization1.PNG","https://steemitimages.com/DQmYuctcJbq83Zt9oGWb1yX7MNBBwYwQtoFy4drLThXpr5p/grad%20descent.PNG","https://steemitimages.com/DQmPnw4E13pP6zBmkWqBCmLEJj5ttGxDHhjDhZd9ZoWJVmZ/sgd.PNG","https://steemitimages.com/DQmdofojFu3D53X8kU5n65bC17ykFtmr9dv6irK3jLfEpHg/overfitting.PNG","https://steemitimages.com/DQmcAdwuZHDtEo8bgc2tGTN3CDTBXF1hQKFAuMMjG67YpMD/dropout.PNG","https://steemitimages.com/DQmW5FtvrTHLkbaiP3kMFzszKYoEhBg75zpQsw4qYVKzWK7/early%20stopping.PNG"],"app":"steemit/0.1","format":"html"} |
| parent author | |
| parent permlink | ml |
| permlink | mit-6-s191-1 |
| title | [저 세상 정리] MIT 6.S191 1강 |
| Transaction Info | Block #21627246/Trx bd0a1f65a169066d3663e1a57c1a35daf6a72dca |
View Raw JSON Data
{
"block": 21627246,
"op": [
"comment",
{
"author": "yskoh",
"body": "<html>\n<p><del>[저 세상 정리]는 내 맘대로 이해한 강의 내용을 내 맘대로 정리하는 post이므로 매우 부정확할 수 있음</del></p>\n<p><br></p>\n<p>MIT 6.S191 Introduction to Deep Learning #1</p>\n<p>S191 수업은 딥러닝의 다양한 알고리즘을 소개하고 그 알고리즘들이 어떻게 작동하는지, 그리고 왜 작동하는지에 대해 다룰 것이다.</p>\n<p>첫 수업에서는 다음과 같은 주제를 다룬다.</p>\n<p>1. What is Deep Learning?</p>\n<p>2. Why Deep Learning and Why Now?</p>\n<p>3. The Perceptron</p>\n<p>4. Building Neural Networks with Perceptrons</p>\n<p>5. Applying Neural Networks</p>\n<p>6. Training Neural Networks</p>\n<p>7. Neural Networks in Practice: Optimization</p>\n<p>8. Neural Networks in Practice: Mini-batches</p>\n<p>9. Neural Networks in Practice: Overfitting</p>\n<p><br></p>\n<p>이제 하나 하나 살펴 보도록...<del>(귀찮..)</del></p>\n<p>수업 자체가 딥러닝 입문에 관한 수업이니 만큼 우선 딥러닝이 무엇인지 부터 설명한다. 딥러닝이란, NN(Neural Networks)을 이용하여 데이터의 내재된 특징(underlying features)을 '다이렉트로' 학습하는 기법이다. 그렇다면 왜 데이터의 특징을 다이렉트로 배우는 것이 좋은가, 혹은 필요한가? 딥러닝 이전에는 인간이 데이터를 가공하여 feature를 만들었는데, 이러한 방식의 단점은 실제로 사용하기에 시간이 많이 걸리고(time consuming) 안정적이지 않으며(brittle) 확장성이 떨어진다(not scalable). 결론은 딥러닝..</p>\n<p><br></p>\n<p>딥러닝의 개념을 말로는 대충 알겠으니 딥러닝 모델이 실제로 어떻게 생겨먹었는지 보도록 하자. 위에서 딥러닝의 개념을 설명할 때 NN을 이용한다고 했다. 이 NN의 가장 기본이 되는 유닛이 perceptron이라는 놈인데, 인간 신경세포(neuron)의 기계 버전이라고 생각하면 된다. 뉴런은 어떤 자극 혹은 정보(input)를 받으면 일련의 과정을 거쳐 화학 물질(output)을 분비해 다음 뉴런으로 정보를 전달한다. Perceptron도 똑같다. 정보(input)가 들어오면 일련의 과정을 거쳐 결과물(output)을 생성한다. 다음 그림을 한번 보자.</p>\n<p><center>\nhttps://steemitimages.com/DQmcJ3WtFjG58ZkKws9DEfBjepTT9LmZPC1gMRh1rxVBAPS/perceptron.PNG\n</center></p>\n<p>퍼셉트론의 작동 방식은 간단하다. input data <em>x_1, ... , x_m</em>에 해당 가중치(theta)를 곱하여 더하고(weighted sum), 이 결과물에 비선형성(non-linearity)을 주기 위해 activation function을 적용한 것이 최종 output이다. 여기서 bias의 역할은 input data로 모두 0이 들어와도(=input data가 없어도) activation function의 input으로는 0이 아닌 수가 전달되도록 한다. Activation function의 input으로서 0의 의미란..? 결론부터 말하면 임계치다. Activation function의 input이 양수(음수)이면 다음 perceptron에 더 강한(약한) 자극을 주기 위해, 즉 더(덜) activate하기 위해 큰(작은) 값을 전달한다.</p>\n<p><center>\nhttps://steemitimages.com/DQmVzaX3gcNQesiZLXGUt5YcogwGXM3AvzYZUb6eHSSS9vK/activation%20function.PNG\n</center></p>\n<p>Simoid는 많이 쓰이는 activation function 중 하나이다. Sigmoid는 input 값을 0~1 사이의 값으로 mapping한다. 이는 확률로도 해석할 수 있으며 input 값 0을 중심으로 0.5 이상 혹은 이하의 값(확률)을 반환한다. Sigmoid와 마찬가지로 다른 activation function도 0을 임계치로 갖는다. </p>\n<p>다음은 activation function의 비선형성에 대해 얘기하려 한다. Activation function의 진짜 존재 이유는 network에 비선형성을 주기 위함이다. Network에 비선형성을 뭐라고..? 직관적으로 와닿지 않기 때문에 그림을 통해 설명한다.</p>\n<p><center>\nhttps://steemitimages.com/DQmRj4kDHavQNxkDsbNb3rASoywTFicXMgEmzzm3kegXJmr/non-linearity.PNG\n</center></p>\n<p>위의 초록점과 빨간점을 구분하는 NN을 설계하려고 하는데... 하나의 직선으로 나눌 수 있을까? 대답은 ㄴㄴ.... </p>\n<p><center>\nhttps://steemitimages.com/DQmf3H9ysKsjobHJvgTe9s5Y3ANQ1ngppe98E32XDfz9beR/non-linearity2.PNG\n</center></p>\n<p>만약 activation function이 선형이라면, NN의 결과는 왼쪽 그림과 같을 것이다. Activation function의 비선형은 NN이 오른쪽 그림 처럼 구분하도록 할 수 있다. 즉 비선형은 network가 복잡한 함수에 근사할 수 있도록 한다!</p>\n<p><br></p>\n<p>Perceptron도 대충 알았으니 NN을 만들어보자!</p>\n<p><center>\nhttps://steemitimages.com/DQmUeVwb7npmaKCvUYknMs6UuQvXzfxH7JrnqbSGQG4tV8g/simplified%20perceptron.PNG\n</center></p>\n<p>Peceptron은 위와 같이 간소화하여 표현될 수 있다. 이를 응용하여 두 개의 output을 내는 구조를 만들어 보면?</p>\n<p><center>\nhttps://steemitimages.com/DQmfYHVMZk6ANnwnArPSdSf8Y3nm2szM4HBU3nfVD2qJrVY/multi%20output%20perceptron.PNG\n</center></p>\n<p>더 이어 붙여보도록 하자.</p>\n<p><center>\nhttps://steemitimages.com/DQmW4tfCsEpoRmRMFVuw41cyfaT1rvDqB1fmPdEGHDKvUoi/single%20layer%20nn.PNG\n</center></p>\n<p>복잡해 보이지만 전혀 그렇지 않다. 단지 perceptron의 연장선일 뿐이다. 다음 그림을 보면 이해가 쉬울 것이다.</p>\n<p><center>\nhttps://steemitimages.com/DQmaapBV6xuZdSbvb68ygJpyfADvJHampLGpGLXm1idYph4/single%20layer%20nn2.PNG\n</center></p>\n<p>y로 향하는 화살표 또한 동일하다.<del>(참 쉽죠?)</del> 만약 layer를 더 쌓는다면?</p>\n<p><center>\nhttps://steemitimages.com/DQmdnHXaBXesE2RrQL6cHguFL2QHZBsVcuiyAgVSPkSrxZr/dnn.PNG\n</center></p>\n<p>DNN(Deep Neural Network)가 완성되었다. 구조가 복잡해져도 기본 구조는 하나의 perceptron이라는 것을 잊지 말자. dot product와 non-linearity의 연속..</p>\n<p><br></p>\n<p>NN을 만들어봤으니 어떻게 사용하는지 알아보자. 다음 문제에 NN을 적용할 것이다.</p>\n<p><center>\nhttps://steemitimages.com/DQmbee6GXw4dgpyfdY1FUHNMSDBwhRiAFxE5HSFQ4qmSkte/pass%20class.PNG\n</center></p>\n<p><em>x_1</em>축은 수강중인 수업의 수,<em> x_2</em>축은 final project에 쏟은 시간, 초록점은 수업 pass, 빨간점은 fail.. 그럼 새로운 데이터 보라점은 pass일까 fail일까? 우리의 NN에게 판단을 맡겨본다.</p>\n<p><center>\nhttps://steemitimages.com/DQmexYirk6b99CNsEWc9szoVyjpPWiSRNf4MaBSaDvTa8dN/pass%20class2.PNG\n</center></p>\n<p>결과는 0.1을 예측했고 실제 값인 1과는 거리가 있어 보인다. 이렇게 예측 값과 실제 값의 차이를 loss라고 하는데, loss의 정량화(quantifying) 표현은 다음과 같다.</p>\n<p><center>\nhttps://steemitimages.com/DQmSViomQLjiBWFSw6bZBFNR6gCZzKdSvef4jHn3VcbYG8R/quantifying%20loss.PNG\n</center></p>\n<p>이는 하나의 데이터에 대한 loss를 나타낸 것인데 전체 데이터에 대한 loss 또한 단순 합이나 평균을 통해 다음과 같이 구할 수 있고 empirical loss라 한다. 같이 쓰이는 말로는 objective function이나 cost function 등이 있다.</p>\n<p><center>\nhttps://steemitimages.com/DQmWrdx6GS7hPFU11jD867Me8X793cobmhUm6f9RrRHApDY/empirical%20loss.PNG\n</center></p>\n<p>많이 쓰이는 cost function 2개를 소개한다.</p>\n<p><center>\nhttps://steemitimages.com/DQmPwWm4qpFk7wZ4PTLqKZvtsWB8P3w2CWHGpgPPCL7tPHe/cross.PNG\n</center></p>\n<p>Cross entropy loss는 확률 값을 output으로 내는 모델에서 사용할 수 있다. </p>\n<p><center>\nhttps://steemitimages.com/DQmP1GaUaXHwoqosfupntnSKN6fZwerQoW9Hqt6jZNEYb7i/mse.PNG\n</center></p>\n<p>Mean squared error loss는 regression 모델에서 사용할 수 있다.</p>\n<p><br></p>\n<p>이러한 loss 계산은 NN을 학습시키는데 필수적이다. Loss를 최소화 시켜야만 옳은 output을 기대할 수 있기 때문이다. 그렇다면 loss는 어떻게 최소화될 수 있는가. 위에서 예측 값과 실제 값의 차이를 loss라 했다. 실제 값은 달라지지 않으므로 loss를 줄이려면 실제 값에 가깝게 예측 값을 계산해야 한다. 다시, 예측 값은 어떻게 계산되는가. 어렵다면 perceptron으로 가정하고 생각하면 쉽다. input의 weighted sum, 그리고 activation function. 여기서 가변적인 것은 weight뿐이므로 실제 값과 가깝게 예측 값을 만드는 weight를 찾아야 한다. 설명은 길었지만 다음 식으로 간단히 할 수 있다.(위의 loss 식들이 모두 network weights의 식인 이유는 이때문이다.)</p>\n<p><center>\nhttps://steemitimages.com/DQme8WMLMZPUkVxP5Syi8St9ayRbjWAQfhgNVbxeCVMRfMC/loss%20optimization.PNG\n</center></p>\n<p>Loss를 최소화하는 weight를 찾는 방법, 즉 loss optimization에 대해 알아본다. 다음 그림은 cost function을 간략히 2개의 weight로 이루어진 함수라 가정하고 시각화하여 optimize하는 과정을 나타낸 것이다.</p>\n<p><center>\nhttps://steemitimages.com/DQmegqsme8zC9S6CiCstxzPiHz93hpSJBQcV2LZNMzTMkx7/loss%20optimization1.PNG\n</center></p>\n<p>세로축이 cost function의 값이므로 가장 낮은 지점을 찾아가는 과정이다. 이를 알고리즘으로 표현하면 다음과 같다.</p>\n<p><center>\nhttps://steemitimages.com/DQmYuctcJbq83Zt9oGWb1yX7MNBBwYwQtoFy4drLThXpr5p/grad%20descent.PNG\n</center></p>\n<p>이러한 방법을 gradient descent algorithm이라 한다. 여기서 4번을 자세히 보자. 구해진 gradient에 η(에타)를 곱하여 사용하는데 η의 값에 따라 weight가 크게 혹은 적게 바뀔 수 있다. 이러한 의미로 η를 learning rate라 한다. 이η을 '적당한' 값으로 설정해 주는 것이 굉장히 중요하다. 너무 작은 값으로 설정하면 천천히 어떤 값으로 수렴(converge)해가는데 그 값이 우리가 찾아야하는 global minima가 아니고 local minima일 수도...(함정카드). 반대로 너무 큰 값으로 설정하면 weight가 크게크게 바뀌어서(unstable) 발산(diverge)하는 문제를 갖는다. 그럼 도대체 어떻게 그 '적당한' 값을 찾을 수 있을까..</p>\n<p>Idea 1. 노가다... 되는대로 다 실험해보고 '적당한' 값 결정</p>\n<p>Idea 2. 상황에 따라 변하는 adaptive learning rate를 설계할 수는 없나? 해보자!</p>\n<p>똑똑하신 분들이 이미 다 만들어 놓았다. Learning rate는 더이상 고정된 수가 아니라 gradient, 학습 속도, 특정 weights에 크기 등에 따라 변할 수 있다. 이런 adaptive learning rate algorithm의 종류에는 Momentum, Adagrad, Adadelta, Adam, RMSProp 등이 있다.</p>\n<p><br></p>\n<p>하지만 gradient descent algorithm에 치명적인 단점이 있다. 바로 gradient를 계산하는 비용이 너무 크다는 것이다. 왜? 애초에 cost function이 모든 데이터에 대한 loss를 뜻하기 때문에 데이터가 많다면 한 iteration에 대한 비용이 클 수 밖에 없다. 이에 대한 대안으로 SGD(Stochastic Gradient Descent algorithm)이 있다. 다음 그림을 보자.</p>\n<p><center>\nhttps://steemitimages.com/DQmPnw4E13pP6zBmkWqBCmLEJj5ttGxDHhjDhZd9ZoWJVmZ/sgd.PNG\n</center></p>\n<p>전체 데이터 중 B개의 데이터를 대상으로 gradient를 계산하여 비용을 줄이는 알고리즘이다. SGD의 loop 한 번이 GD의 loop 한 번과 같은데, GD에서 계산된 gradient와 SGD에서 계산된 gradient는 당연히 차이를 보일 수 밖에 없지만 SGD의 gradient를 GD의 추정치로 사용하는데에는 문제가 없다. </p>\n<p><br></p>\n<p>이렇게 NN의 학습이 완료되었다(?). 이제 학습 완료된 모델의 generalization problem에 대해 알아본다.</p>\n<p>우선 overfitting problem</p>\n<p><center>\nhttps://steemitimages.com/DQmdofojFu3D53X8kU5n65bC17ykFtmr9dv6irK3jLfEpHg/overfitting.PNG\n</center></p>\n<p>머신러닝 혹은 딥러닝에서 모델을 학습하는 궁극적인 이유는 test data를 우리의 의도대로 잘 표현하기 위함이다. 다르게 말하면 우리가 만든 모델이 training data로부터 패턴을 학습하고 모델에 아직 보여지지 않은 test data에 대해서도 일반화가 잘 되길 원한다. 위의 그림에서 ideal fit의 상태처럼 선을 그어 점들을 나누고 싶은데 underfitting의 경우 모델의 complexity가 충분히 높지 않을 때 발생할 수 있고 overfitting의 경우 complexity가 너무 높아 training data를 기억할 때 발생한다. 두 경우 모두 test data에 대해 제대로 generalized 되지 않는다.</p>\n<p>이러한 문제를 해결하기 위해 regularization 방법을 많이들 사용한다. 이 방법을 사용하면 모델이 너무 complex해지는 것을 방지할 수 있다. Regularization의 방법 중 하나로 dropout이 있다. 다음 그림을 보자.</p>\n<p><center>\nhttps://steemitimages.com/DQmcAdwuZHDtEo8bgc2tGTN3CDTBXF1hQKFAuMMjG67YpMD/dropout.PNG\n</center></p>\n<p>Training 과정 동안 임의로 몇 개 뉴런의 activation을 0으로 만드는 방법이다. 다시 말하면, 몇 개의 뉴런을 '사용 중지' 상태로 만드는 것이다. 이 방법을 쓰면 network가 하나의 뉴런에 크게 의존하지 문제를 방지한다. 일반적인 usage는 한 layer에서 50%의 뉴런만 유지되며 매 iteration마다 유지되는 뉴런은 바뀐다.</p>\n<p>두 번째 방법으로는 early stopping이 있다. 이 방법은 overfitting이 발생하기 전에 training을 강제로 마치는 방법이다.</p>\n<p><center>\nhttps://steemitimages.com/DQmW5FtvrTHLkbaiP3kMFzszKYoEhBg75zpQsw4qYVKzWK7/early%20stopping.PNG\n</center></p>\n<p><br></p>\n<p><br></p>\n<p>1강에 대한 정리는 여기까지...</p>\n<p>2강 듣는대로 정리한드아..</p>\n</html>",
"json_metadata": "{\"tags\":[\"ml\",\"dl\",\"nn\",\"s191\"],\"image\":[\"https://steemitimages.com/DQmcJ3WtFjG58ZkKws9DEfBjepTT9LmZPC1gMRh1rxVBAPS/perceptron.PNG\",\"https://steemitimages.com/DQmVzaX3gcNQesiZLXGUt5YcogwGXM3AvzYZUb6eHSSS9vK/activation%20function.PNG\",\"https://steemitimages.com/DQmRj4kDHavQNxkDsbNb3rASoywTFicXMgEmzzm3kegXJmr/non-linearity.PNG\",\"https://steemitimages.com/DQmf3H9ysKsjobHJvgTe9s5Y3ANQ1ngppe98E32XDfz9beR/non-linearity2.PNG\",\"https://steemitimages.com/DQmUeVwb7npmaKCvUYknMs6UuQvXzfxH7JrnqbSGQG4tV8g/simplified%20perceptron.PNG\",\"https://steemitimages.com/DQmfYHVMZk6ANnwnArPSdSf8Y3nm2szM4HBU3nfVD2qJrVY/multi%20output%20perceptron.PNG\",\"https://steemitimages.com/DQmW4tfCsEpoRmRMFVuw41cyfaT1rvDqB1fmPdEGHDKvUoi/single%20layer%20nn.PNG\",\"https://steemitimages.com/DQmaapBV6xuZdSbvb68ygJpyfADvJHampLGpGLXm1idYph4/single%20layer%20nn2.PNG\",\"https://steemitimages.com/DQmdnHXaBXesE2RrQL6cHguFL2QHZBsVcuiyAgVSPkSrxZr/dnn.PNG\",\"https://steemitimages.com/DQmbee6GXw4dgpyfdY1FUHNMSDBwhRiAFxE5HSFQ4qmSkte/pass%20class.PNG\",\"https://steemitimages.com/DQmexYirk6b99CNsEWc9szoVyjpPWiSRNf4MaBSaDvTa8dN/pass%20class2.PNG\",\"https://steemitimages.com/DQmSViomQLjiBWFSw6bZBFNR6gCZzKdSvef4jHn3VcbYG8R/quantifying%20loss.PNG\",\"https://steemitimages.com/DQmWrdx6GS7hPFU11jD867Me8X793cobmhUm6f9RrRHApDY/empirical%20loss.PNG\",\"https://steemitimages.com/DQmPwWm4qpFk7wZ4PTLqKZvtsWB8P3w2CWHGpgPPCL7tPHe/cross.PNG\",\"https://steemitimages.com/DQmP1GaUaXHwoqosfupntnSKN6fZwerQoW9Hqt6jZNEYb7i/mse.PNG\",\"https://steemitimages.com/DQme8WMLMZPUkVxP5Syi8St9ayRbjWAQfhgNVbxeCVMRfMC/loss%20optimization.PNG\",\"https://steemitimages.com/DQmegqsme8zC9S6CiCstxzPiHz93hpSJBQcV2LZNMzTMkx7/loss%20optimization1.PNG\",\"https://steemitimages.com/DQmYuctcJbq83Zt9oGWb1yX7MNBBwYwQtoFy4drLThXpr5p/grad%20descent.PNG\",\"https://steemitimages.com/DQmPnw4E13pP6zBmkWqBCmLEJj5ttGxDHhjDhZd9ZoWJVmZ/sgd.PNG\",\"https://steemitimages.com/DQmdofojFu3D53X8kU5n65bC17ykFtmr9dv6irK3jLfEpHg/overfitting.PNG\",\"https://steemitimages.com/DQmcAdwuZHDtEo8bgc2tGTN3CDTBXF1hQKFAuMMjG67YpMD/dropout.PNG\",\"https://steemitimages.com/DQmW5FtvrTHLkbaiP3kMFzszKYoEhBg75zpQsw4qYVKzWK7/early%20stopping.PNG\"],\"app\":\"steemit/0.1\",\"format\":\"html\"}",
"parent_author": "",
"parent_permlink": "ml",
"permlink": "mit-6-s191-1",
"title": "[저 세상 정리] MIT 6.S191 1강"
}
],
"op_in_trx": 0,
"timestamp": "2018-04-16T20:46:27",
"trx_id": "bd0a1f65a169066d3663e1a57c1a35daf6a72dca",
"trx_in_block": 41,
"virtual_op": 0
}yskohremoved vote from (0.00%) @jonas.inuk / re-steemgirl-did-you-notice-20180324t180505584z2018/04/16 14:14:36
yskohremoved vote from (0.00%) @jonas.inuk / re-steemgirl-did-you-notice-20180324t180505584z
2018/04/16 14:14:36
| author | jonas.inuk |
| permlink | re-steemgirl-did-you-notice-20180324t180505584z |
| voter | yskoh |
| weight | 0 (0.00%) |
| Transaction Info | Block #21619409/Trx 469f65304064ebc947f22f3e8c54a17d9d81d539 |
View Raw JSON Data
{
"block": 21619409,
"op": [
"vote",
{
"author": "jonas.inuk",
"permlink": "re-steemgirl-did-you-notice-20180324t180505584z",
"voter": "yskoh",
"weight": 0
}
],
"op_in_trx": 0,
"timestamp": "2018-04-16T14:14:36",
"trx_id": "469f65304064ebc947f22f3e8c54a17d9d81d539",
"trx_in_block": 49,
"virtual_op": 0
}yskohupvoted (100.00%) @jonas.inuk / re-steemgirl-did-you-notice-20180324t180505584z2018/04/16 14:14:24
yskohupvoted (100.00%) @jonas.inuk / re-steemgirl-did-you-notice-20180324t180505584z
2018/04/16 14:14:24
| author | jonas.inuk |
| permlink | re-steemgirl-did-you-notice-20180324t180505584z |
| voter | yskoh |
| weight | 10000 (100.00%) |
| Transaction Info | Block #21619405/Trx 386e16acd5d6b4defeaaa81b4e4d94ccfd317809 |
View Raw JSON Data
{
"block": 21619405,
"op": [
"vote",
{
"author": "jonas.inuk",
"permlink": "re-steemgirl-did-you-notice-20180324t180505584z",
"voter": "yskoh",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2018-04-16T14:14:24",
"trx_id": "386e16acd5d6b4defeaaa81b4e4d94ccfd317809",
"trx_in_block": 3,
"virtual_op": 0
}yskohfollowed @steem.girl2018/04/16 14:13:03
yskohfollowed @steem.girl
2018/04/16 14:13:03
| id | follow |
| json | ["follow",{"follower":"yskoh","following":"steem.girl","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["yskoh"] |
| Transaction Info | Block #21619378/Trx 122f39bad32ad1d4f55abdec11a7d0b8d3952b34 |
View Raw JSON Data
{
"block": 21619378,
"op": [
"custom_json",
{
"id": "follow",
"json": "[\"follow\",{\"follower\":\"yskoh\",\"following\":\"steem.girl\",\"what\":[\"blog\"]}]",
"required_auths": [],
"required_posting_auths": [
"yskoh"
]
}
],
"op_in_trx": 0,
"timestamp": "2018-04-16T14:13:03",
"trx_id": "122f39bad32ad1d4f55abdec11a7d0b8d3952b34",
"trx_in_block": 27,
"virtual_op": 0
}yskohfollowed @sogosonnet2018/03/14 15:24:42
yskohfollowed @sogosonnet
2018/03/14 15:24:42
| id | follow |
| json | ["follow",{"follower":"yskoh","following":"sogosonnet","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["yskoh"] |
| Transaction Info | Block #20671508/Trx 0976c2edb6cdcef4f3dbea0a6806211b02e94545 |
View Raw JSON Data
{
"block": 20671508,
"op": [
"custom_json",
{
"id": "follow",
"json": "[\"follow\",{\"follower\":\"yskoh\",\"following\":\"sogosonnet\",\"what\":[\"blog\"]}]",
"required_auths": [],
"required_posting_auths": [
"yskoh"
]
}
],
"op_in_trx": 0,
"timestamp": "2018-03-14T15:24:42",
"trx_id": "0976c2edb6cdcef4f3dbea0a6806211b02e94545",
"trx_in_block": 4,
"virtual_op": 0
}2018/03/13 05:44:27
2018/03/13 05:44:27
| delegatee | yskoh |
| delegator | steem |
| vesting shares | 30421.732688 VESTS |
| Transaction Info | Block #20631122/Trx f4bc2c212c698486d2a2973fde87ea42a3419102 |
View Raw JSON Data
{
"block": 20631122,
"op": [
"delegate_vesting_shares",
{
"delegatee": "yskoh",
"delegator": "steem",
"vesting_shares": "30421.732688 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2018-03-13T05:44:27",
"trx_id": "f4bc2c212c698486d2a2973fde87ea42a3419102",
"trx_in_block": 32,
"virtual_op": 0
}2018/03/13 04:30:45
2018/03/13 04:30:45
| active | {"account_auths":[],"key_auths":[["STM6ej74BAbtW3rX37zdwp99BQvWgoLm6wCjGcTU6kuwRSNEsypDd",1]],"weight_threshold":1} |
| creator | steem |
| delegation | 30690.000000 VESTS |
| extensions | [] |
| fee | 0.100 STEEM |
| json metadata | {} |
| memo key | STM7MH4EBhNHHEfaA9zS5dbt4miKQm4ZfsMB1weDDYssuDGaEUvKF |
| new account name | yskoh |
| owner | {"account_auths":[],"key_auths":[["STM8JVdjwyEjAtJDTGKXBwcNUcaZZwDxmADqCzoLYXcBmRw6ks1Zv",1]],"weight_threshold":1} |
| posting | {"account_auths":[],"key_auths":[["STM7DEoPdxPzVZm3N5qkft3BgCHxhEj3ujWqdq1tUxLJtm7KhmXzG",1]],"weight_threshold":1} |
| Transaction Info | Block #20629648/Trx f1180a5970f950d63677d21131fc3191fbb2dba2 |
View Raw JSON Data
{
"block": 20629648,
"op": [
"account_create_with_delegation",
{
"active": {
"account_auths": [],
"key_auths": [
[
"STM6ej74BAbtW3rX37zdwp99BQvWgoLm6wCjGcTU6kuwRSNEsypDd",
1
]
],
"weight_threshold": 1
},
"creator": "steem",
"delegation": "30690.000000 VESTS",
"extensions": [],
"fee": "0.100 STEEM",
"json_metadata": "{}",
"memo_key": "STM7MH4EBhNHHEfaA9zS5dbt4miKQm4ZfsMB1weDDYssuDGaEUvKF",
"new_account_name": "yskoh",
"owner": {
"account_auths": [],
"key_auths": [
[
"STM8JVdjwyEjAtJDTGKXBwcNUcaZZwDxmADqCzoLYXcBmRw6ks1Zv",
1
]
],
"weight_threshold": 1
},
"posting": {
"account_auths": [],
"key_auths": [
[
"STM7DEoPdxPzVZm3N5qkft3BgCHxhEj3ujWqdq1tUxLJtm7KhmXzG",
1
]
],
"weight_threshold": 1
}
}
],
"op_in_trx": 0,
"timestamp": "2018-03-13T04:30:45",
"trx_id": "f1180a5970f950d63677d21131fc3191fbb2dba2",
"trx_in_block": 29,
"virtual_op": 0
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress17.39%
{
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779093117
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779093117
},
"rc_account": {
"account": "yskoh",
"rc_manabar": {
"current_mana": "10164408779",
"last_update_time": 1779093117
},
"max_rc_creation_adjustment": {
"amount": "2020748973",
"precision": 6,
"nai": "@@000000037"
},
"max_rc": "10164408779"
}
}Account Metadata
| POSTING JSON METADATA | |
| None | |
| JSON METADATA | |
| None |
{
"posting_json_metadata": {},
"json_metadata": {}
}Auth Keys
Owner
Single Signature
Public Keys
STM8JVdjwyEjAtJDTGKXBwcNUcaZZwDxmADqCzoLYXcBmRw6ks1Zv1/1
Active
Single Signature
Public Keys
STM6ej74BAbtW3rX37zdwp99BQvWgoLm6wCjGcTU6kuwRSNEsypDd1/1
Posting
Single Signature
Public Keys
STM7DEoPdxPzVZm3N5qkft3BgCHxhEj3ujWqdq1tUxLJtm7KhmXzG1/1
Memo
STM7MH4EBhNHHEfaA9zS5dbt4miKQm4ZfsMB1weDDYssuDGaEUvKF
{
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM8JVdjwyEjAtJDTGKXBwcNUcaZZwDxmADqCzoLYXcBmRw6ks1Zv",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM6ej74BAbtW3rX37zdwp99BQvWgoLm6wCjGcTU6kuwRSNEsypDd",
1
]
]
},
"posting": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [
[
"STM7DEoPdxPzVZm3N5qkft3BgCHxhEj3ujWqdq1tUxLJtm7KhmXzG",
1
]
]
},
"memo": "STM7MH4EBhNHHEfaA9zS5dbt4miKQm4ZfsMB1weDDYssuDGaEUvKF"
}Witness Votes
0 / 30
No active witness votes.
[]